summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/lib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/lib')
-rw-r--r--contrib/perl5/lib/AnyDBM_File.pm6
-rw-r--r--contrib/perl5/lib/AutoLoader.pm68
-rw-r--r--contrib/perl5/lib/AutoSplit.pm41
-rw-r--r--contrib/perl5/lib/Benchmark.pm422
-rw-r--r--contrib/perl5/lib/CGI.pm592
-rw-r--r--contrib/perl5/lib/CGI/Apache.pm92
-rw-r--r--contrib/perl5/lib/CGI/Carp.pm30
-rw-r--r--contrib/perl5/lib/CGI/Cookie.pm31
-rw-r--r--contrib/perl5/lib/CGI/Fast.pm4
-rw-r--r--contrib/perl5/lib/CGI/Pretty.pm236
-rw-r--r--contrib/perl5/lib/CGI/Push.pm2
-rw-r--r--contrib/perl5/lib/CGI/Switch.pm61
-rw-r--r--contrib/perl5/lib/CPAN.pm727
-rw-r--r--contrib/perl5/lib/CPAN/FirstTime.pm29
-rw-r--r--contrib/perl5/lib/CPAN/Nox.pm9
-rw-r--r--contrib/perl5/lib/Carp.pm168
-rw-r--r--contrib/perl5/lib/Carp/Heavy.pm253
-rw-r--r--contrib/perl5/lib/Class/Struct.pm138
-rw-r--r--contrib/perl5/lib/Cwd.pm39
-rw-r--r--contrib/perl5/lib/DB.pm802
-rw-r--r--contrib/perl5/lib/Dumpvalue.pm66
-rw-r--r--contrib/perl5/lib/English.pm23
-rw-r--r--contrib/perl5/lib/Env.pm180
-rw-r--r--contrib/perl5/lib/Exporter.pm270
-rw-r--r--contrib/perl5/lib/Exporter/Heavy.pm225
-rw-r--r--contrib/perl5/lib/ExtUtils/Command.pm4
-rw-r--r--contrib/perl5/lib/ExtUtils/Embed.pm15
-rw-r--r--contrib/perl5/lib/ExtUtils/Install.pm22
-rw-r--r--contrib/perl5/lib/ExtUtils/Installed.pm11
-rw-r--r--contrib/perl5/lib/ExtUtils/Liblist.pm52
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Cygwin.pm121
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_OS2.pm10
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Unix.pm486
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_VMS.pm287
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Win32.pm149
-rw-r--r--contrib/perl5/lib/ExtUtils/MakeMaker.pm249
-rw-r--r--contrib/perl5/lib/ExtUtils/Manifest.pm38
-rw-r--r--contrib/perl5/lib/ExtUtils/Mkbootstrap.pm4
-rw-r--r--contrib/perl5/lib/ExtUtils/Mksymlists.pm17
-rw-r--r--contrib/perl5/lib/ExtUtils/Packlist.pm5
-rw-r--r--contrib/perl5/lib/ExtUtils/typemap15
-rwxr-xr-xcontrib/perl5/lib/ExtUtils/xsubpp376
-rw-r--r--contrib/perl5/lib/Fatal.pm59
-rw-r--r--contrib/perl5/lib/File/Basename.pm58
-rw-r--r--contrib/perl5/lib/File/CheckTree.pm2
-rw-r--r--contrib/perl5/lib/File/Compare.pm95
-rw-r--r--contrib/perl5/lib/File/Copy.pm43
-rw-r--r--contrib/perl5/lib/File/DosGlob.pm23
-rw-r--r--contrib/perl5/lib/File/Find.pm767
-rw-r--r--contrib/perl5/lib/File/Path.pm67
-rw-r--r--contrib/perl5/lib/File/Spec.pm86
-rw-r--r--contrib/perl5/lib/File/Spec/Functions.pm95
-rw-r--r--contrib/perl5/lib/File/Spec/Mac.pm285
-rw-r--r--contrib/perl5/lib/File/Spec/OS2.pm50
-rw-r--r--contrib/perl5/lib/File/Spec/Unix.pm363
-rw-r--r--contrib/perl5/lib/File/Spec/VMS.pm450
-rw-r--r--contrib/perl5/lib/File/Spec/Win32.pm385
-rw-r--r--contrib/perl5/lib/File/stat.pm6
-rw-r--r--contrib/perl5/lib/FileHandle.pm4
-rw-r--r--contrib/perl5/lib/FindBin.pm4
-rw-r--r--contrib/perl5/lib/Getopt/Long.pm1025
-rw-r--r--contrib/perl5/lib/Getopt/Std.pm89
-rw-r--r--contrib/perl5/lib/I18N/Collate.pm5
-rw-r--r--contrib/perl5/lib/IPC/Open2.pm75
-rw-r--r--contrib/perl5/lib/IPC/Open3.pm83
-rw-r--r--contrib/perl5/lib/Math/BigFloat.pm57
-rw-r--r--contrib/perl5/lib/Math/BigInt.pm89
-rw-r--r--contrib/perl5/lib/Math/Complex.pm188
-rw-r--r--contrib/perl5/lib/Math/Trig.pm32
-rw-r--r--contrib/perl5/lib/Net/Ping.pm11
-rw-r--r--contrib/perl5/lib/Net/hostent.pm3
-rw-r--r--contrib/perl5/lib/Net/netent.pm19
-rw-r--r--contrib/perl5/lib/Net/protoent.pm3
-rw-r--r--contrib/perl5/lib/Net/servent.pm3
-rw-r--r--contrib/perl5/lib/Pod/Checker.pm1195
-rw-r--r--contrib/perl5/lib/Pod/Find.pm278
-rw-r--r--contrib/perl5/lib/Pod/Functions.pm20
-rw-r--r--contrib/perl5/lib/Pod/Html.pm1654
-rw-r--r--contrib/perl5/lib/Pod/InputObjects.pm933
-rw-r--r--contrib/perl5/lib/Pod/Man.pm1217
-rw-r--r--contrib/perl5/lib/Pod/ParseUtils.pm837
-rw-r--r--contrib/perl5/lib/Pod/Parser.pm1771
-rw-r--r--contrib/perl5/lib/Pod/Plainer.pm69
-rw-r--r--contrib/perl5/lib/Pod/Select.pm745
-rw-r--r--contrib/perl5/lib/Pod/Text.pm1154
-rw-r--r--contrib/perl5/lib/Pod/Text/Color.pm125
-rw-r--r--contrib/perl5/lib/Pod/Text/Termcap.pm142
-rw-r--r--contrib/perl5/lib/Pod/Usage.pm544
-rw-r--r--contrib/perl5/lib/SelfLoader.pm21
-rw-r--r--contrib/perl5/lib/Shell.pm60
-rw-r--r--contrib/perl5/lib/Term/ANSIColor.pm307
-rw-r--r--contrib/perl5/lib/Term/Cap.pm6
-rw-r--r--contrib/perl5/lib/Term/ReadLine.pm2
-rw-r--r--contrib/perl5/lib/Test.pm20
-rw-r--r--contrib/perl5/lib/Test/Harness.pm123
-rw-r--r--contrib/perl5/lib/Text/Abbrev.pm68
-rw-r--r--contrib/perl5/lib/Text/ParseWords.pm4
-rw-r--r--contrib/perl5/lib/Text/Soundex.pm2
-rw-r--r--contrib/perl5/lib/Text/Tabs.pm14
-rw-r--r--contrib/perl5/lib/Tie/Array.pm48
-rw-r--r--contrib/perl5/lib/Tie/Handle.pm89
-rw-r--r--contrib/perl5/lib/Tie/Hash.pm7
-rw-r--r--contrib/perl5/lib/Tie/RefHash.pm7
-rw-r--r--contrib/perl5/lib/Tie/Scalar.pm23
-rw-r--r--contrib/perl5/lib/Time/Local.pm232
-rw-r--r--contrib/perl5/lib/Time/gmtime.pm3
-rw-r--r--contrib/perl5/lib/Time/localtime.pm5
-rw-r--r--contrib/perl5/lib/UNIVERSAL.pm18
-rw-r--r--contrib/perl5/lib/User/grent.pm3
-rw-r--r--contrib/perl5/lib/User/pwent.pm286
-rw-r--r--contrib/perl5/lib/abbrev.pl10
-rw-r--r--contrib/perl5/lib/attributes.pm399
-rw-r--r--contrib/perl5/lib/autouse.pm4
-rw-r--r--contrib/perl5/lib/base.pm25
-rw-r--r--contrib/perl5/lib/bigfloat.pl27
-rw-r--r--contrib/perl5/lib/bigint.pl10
-rw-r--r--contrib/perl5/lib/bigrat.pl8
-rw-r--r--contrib/perl5/lib/blib.pm6
-rw-r--r--contrib/perl5/lib/bytes.pm52
-rw-r--r--contrib/perl5/lib/bytes_heavy.pl8
-rw-r--r--contrib/perl5/lib/cacheout.pl9
-rw-r--r--contrib/perl5/lib/charnames.pm135
-rw-r--r--contrib/perl5/lib/chat2.pl9
-rw-r--r--contrib/perl5/lib/complete.pl9
-rw-r--r--contrib/perl5/lib/constant.pm196
-rw-r--r--contrib/perl5/lib/ctime.pl8
-rwxr-xr-xcontrib/perl5/lib/diagnostics.pm44
-rw-r--r--contrib/perl5/lib/dotsh.pl13
-rw-r--r--contrib/perl5/lib/dumpvar.pl56
-rw-r--r--contrib/perl5/lib/exceptions.pl7
-rw-r--r--contrib/perl5/lib/fastcwd.pl8
-rw-r--r--contrib/perl5/lib/fields.pm294
-rw-r--r--contrib/perl5/lib/filetest.pm68
-rw-r--r--contrib/perl5/lib/flush.pl9
-rw-r--r--contrib/perl5/lib/ftp.pl9
-rw-r--r--contrib/perl5/lib/getcwd.pl9
-rw-r--r--contrib/perl5/lib/getopt.pl10
-rw-r--r--contrib/perl5/lib/getopts.pl10
-rw-r--r--contrib/perl5/lib/hostname.pl10
-rw-r--r--contrib/perl5/lib/integer.pm17
-rw-r--r--contrib/perl5/lib/lib.pm68
-rw-r--r--contrib/perl5/lib/locale.pm9
-rw-r--r--contrib/perl5/lib/look.pl8
-rw-r--r--contrib/perl5/lib/open.pm76
-rw-r--r--contrib/perl5/lib/overload.pm177
-rw-r--r--contrib/perl5/lib/perl5db.pl934
-rw-r--r--contrib/perl5/lib/pwd.pl13
-rw-r--r--contrib/perl5/lib/strict.pm11
-rw-r--r--contrib/perl5/lib/syslog.pl6
-rw-r--r--contrib/perl5/lib/termcap.pl9
-rw-r--r--contrib/perl5/lib/unicode/ArabLink.pl46
-rw-r--r--contrib/perl5/lib/unicode/ArabLnkGrp.pl94
-rw-r--r--contrib/perl5/lib/unicode/ArabShap.txt170
-rw-r--r--contrib/perl5/lib/unicode/Bidirectional.pl638
-rw-r--r--contrib/perl5/lib/unicode/Block.pl93
-rw-r--r--contrib/perl5/lib/unicode/Blocks.txt90
-rw-r--r--contrib/perl5/lib/unicode/Category.pl1506
-rw-r--r--contrib/perl5/lib/unicode/CombiningClass.pl152
-rw-r--r--contrib/perl5/lib/unicode/CompExcl.txt143
-rw-r--r--contrib/perl5/lib/unicode/Decomposition.pl3470
-rw-r--r--contrib/perl5/lib/unicode/EAWidth.txt10636
-rw-r--r--contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Arabic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Armenian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Arrows.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BasicLatin.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Bengali.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BlockElements.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Bopomofo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BopomofoExtended.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BoxDrawing.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BraillePatterns.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibility.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Cherokee.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ControlPictures.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CurrencySymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Cyrillic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Devanagari.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Dingbats.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Ethiopic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GeneralPunctuation.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GeometricShapes.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Georgian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Greek.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GreekExtended.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Gujarati.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Gurmukhi.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulJamo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulSyllables.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Hebrew.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HighSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Hiragana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/IPAExtensions.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Kanbun.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/KangxiRadicals.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Kannada.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Katakana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Khmer.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Lao.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Latin-1Supplement.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtended-A.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtended-B.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LowSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Malayalam.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MathematicalOperators.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Mongolian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Myanmar.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/NumberForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Ogham.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Oriya.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/PrivateUse.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Runic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Sinhala.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SmallFormVariants.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Specials.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Syriac.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Tamil.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Telugu.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Thaana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Thai.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Tibetan.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/YiRadicals.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/YiSyllables.pl6
-rw-r--r--contrib/perl5/lib/unicode/Index.txt3055
-rw-r--r--contrib/perl5/lib/unicode/Is/ASCII.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Alnum.pl276
-rw-r--r--contrib/perl5/lib/unicode/Is/Alpha.pl258
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiAN.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiB.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiCS.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiEN.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiES.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiET.pl29
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiL.pl323
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiON.pl115
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiR.pl19
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiS.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiWS.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/C.pl18
-rw-r--r--contrib/perl5/lib/unicode/Is/Cc.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/Cn.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/Cntrl.pl18
-rw-r--r--contrib/perl5/lib/unicode/Is/Co.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/DCcircle.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/DCcompat.pl69
-rw-r--r--contrib/perl5/lib/unicode/Is/DCfinal.pl118
-rw-r--r--contrib/perl5/lib/unicode/Is/DCfont.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/DCinital.pl59
-rw-r--r--contrib/perl5/lib/unicode/Is/DCinitial.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/DCisolated.pl103
-rw-r--r--contrib/perl5/lib/unicode/Is/DCnarrow.pl11
-rw-r--r--contrib/perl5/lib/unicode/Is/DCnoBreak.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsmall.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsquare.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsub.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsuper.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/DCvertical.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/DCwide.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DecoCanon.pl212
-rw-r--r--contrib/perl5/lib/unicode/Is/DecoCompat.pl107
-rw-r--r--contrib/perl5/lib/unicode/Is/Digit.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/Graph.pl362
-rw-r--r--contrib/perl5/lib/unicode/Is/L.pl260
-rw-r--r--contrib/perl5/lib/unicode/Is/Ll.pl379
-rw-r--r--contrib/perl5/lib/unicode/Is/Lm.pl23
-rw-r--r--contrib/perl5/lib/unicode/Is/Lo.pl191
-rw-r--r--contrib/perl5/lib/unicode/Is/Lower.pl379
-rw-r--r--contrib/perl5/lib/unicode/Is/Lt.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/Lu.pl376
-rw-r--r--contrib/perl5/lib/unicode/Is/M.pl105
-rw-r--r--contrib/perl5/lib/unicode/Is/Mc.pl56
-rw-r--r--contrib/perl5/lib/unicode/Is/Mirrored.pl48
-rw-r--r--contrib/perl5/lib/unicode/Is/Mn.pl98
-rw-r--r--contrib/perl5/lib/unicode/Is/N.pl43
-rw-r--r--contrib/perl5/lib/unicode/Is/Nd.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/No.pl23
-rw-r--r--contrib/perl5/lib/unicode/Is/P.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/Pd.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/Pe.pl41
-rw-r--r--contrib/perl5/lib/unicode/Is/Po.pl70
-rw-r--r--contrib/perl5/lib/unicode/Is/Print.pl362
-rw-r--r--contrib/perl5/lib/unicode/Is/Ps.pl43
-rw-r--r--contrib/perl5/lib/unicode/Is/Punct.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/S.pl131
-rw-r--r--contrib/perl5/lib/unicode/Is/Sc.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/Sm.pl40
-rw-r--r--contrib/perl5/lib/unicode/Is/So.pl103
-rw-r--r--contrib/perl5/lib/unicode/Is/Space.pl14
-rw-r--r--contrib/perl5/lib/unicode/Is/SylA.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylC.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylE.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylI.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylO.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylU.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylV.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWA.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWC.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWE.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWI.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWV.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/Syllable.pl4
-rw-r--r--contrib/perl5/lib/unicode/Is/Upper.pl376
-rw-r--r--contrib/perl5/lib/unicode/Is/Word.pl277
-rw-r--r--contrib/perl5/lib/unicode/Is/XDigit.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/Z.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/Zl.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Zp.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Zs.pl11
-rw-r--r--contrib/perl5/lib/unicode/Jamo.txt69
-rw-r--r--contrib/perl5/lib/unicode/JamoShort.pl72
-rw-r--r--contrib/perl5/lib/unicode/LineBrk.txt10643
-rw-r--r--contrib/perl5/lib/unicode/Makefile6
-rw-r--r--contrib/perl5/lib/unicode/Name.pl10552
-rw-r--r--contrib/perl5/lib/unicode/Names.txt17271
-rw-r--r--contrib/perl5/lib/unicode/NamesList.html226
-rw-r--r--contrib/perl5/lib/unicode/Number.pl386
-rw-r--r--contrib/perl5/lib/unicode/Props.txt3640
-rw-r--r--contrib/perl5/lib/unicode/README.Ethiopic18
-rw-r--r--contrib/perl5/lib/unicode/ReadMe.txt45
-rw-r--r--contrib/perl5/lib/unicode/SpecCase.txt219
-rw-r--r--contrib/perl5/lib/unicode/To/Digit.pl30
-rw-r--r--contrib/perl5/lib/unicode/To/Lower.pl401
-rw-r--r--contrib/perl5/lib/unicode/To/Title.pl411
-rw-r--r--contrib/perl5/lib/unicode/To/Upper.pl411
-rw-r--r--contrib/perl5/lib/unicode/UCD300.html345
-rw-r--r--contrib/perl5/lib/unicode/Unicode.30010617
-rw-r--r--contrib/perl5/lib/unicode/Unicode3.html1988
-rwxr-xr-xcontrib/perl5/lib/unicode/mktables.PL339
-rw-r--r--contrib/perl5/lib/unicode/syllables.txt1329
-rw-r--r--contrib/perl5/lib/utf8.pm77
-rw-r--r--contrib/perl5/lib/utf8_heavy.pl221
-rw-r--r--contrib/perl5/lib/vars.pm14
-rw-r--r--contrib/perl5/lib/warnings.pm318
-rw-r--r--contrib/perl5/lib/warnings/register.pm30
359 files changed, 107456 insertions, 4722 deletions
diff --git a/contrib/perl5/lib/AnyDBM_File.pm b/contrib/perl5/lib/AnyDBM_File.pm
index aff3c7c..58ffda7 100644
--- a/contrib/perl5/lib/AnyDBM_File.pm
+++ b/contrib/perl5/lib/AnyDBM_File.pm
@@ -1,7 +1,7 @@
package AnyDBM_File;
-use vars qw(@ISA);
-@ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
+use 5.005_64;
+our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
my $mod;
for $mod (@ISA) {
@@ -87,6 +87,6 @@ By default, but can be redefined.
=head1 SEE ALSO
-dbm(3), ndbm(3), DB_File(3)
+dbm(3), ndbm(3), DB_File(3), L<perldbmfilter>
=cut
diff --git a/contrib/perl5/lib/AutoLoader.pm b/contrib/perl5/lib/AutoLoader.pm
index 5b083a7..8fd7d3b 100644
--- a/contrib/perl5/lib/AutoLoader.pm
+++ b/contrib/perl5/lib/AutoLoader.pm
@@ -1,20 +1,23 @@
package AutoLoader;
-use vars qw(@EXPORT @EXPORT_OK);
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, $VERSION);
my $is_dosish;
my $is_vms;
BEGIN {
require Exporter;
- @EXPORT = ();
- @EXPORT_OK = qw(AUTOLOAD);
+ @EXPORT = @EXPORT = ();
+ @EXPORT_OK = @EXPORT_OK = qw(AUTOLOAD);
$is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32';
$is_vms = $^O eq 'VMS';
+ $VERSION = '5.57';
}
AUTOLOAD {
- my $name;
+ my $sub = $AUTOLOAD;
+ my $filename;
# Braces used to preserve $1 et al.
{
# Try to find the autoloaded file from the package-qualified
@@ -30,10 +33,10 @@ AUTOLOAD {
# In this case, we simple prepend the 'auto/' and let the
# C<require> take care of the searching for us.
- my ($pkg,$func) = $AUTOLOAD =~ /(.*)::([^:]+)$/;
+ my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/);
$pkg =~ s#::#/#g;
- if (defined($name=$INC{"$pkg.pm"})) {
- $name =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#;
+ if (defined($filename = $INC{"$pkg.pm"})) {
+ $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s;
# if the file exists, then make sure that it is a
# a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al',
@@ -41,45 +44,45 @@ AUTOLOAD {
# (and failing) to find the 'lib/auto/foo/bar.al' because it
# looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib').
- if (-r $name) {
- unless ($name =~ m|^/|) {
+ if (-r $filename) {
+ unless ($filename =~ m|^/|s) {
if ($is_dosish) {
- unless ($name =~ m{^([a-z]:)?[\\/]}i) {
- $name = "./$name";
+ unless ($filename =~ m{^([a-z]:)?[\\/]}is) {
+ $filename = "./$filename";
}
}
elsif ($is_vms) {
- # XXX todo by VMSmiths
- $name = "./$name";
+ # XXX todo by VMSmiths
+ $filename = "./$filename";
}
else {
- $name = "./$name";
+ $filename = "./$filename";
}
}
}
else {
- $name = undef;
+ $filename = undef;
}
}
- unless (defined $name) {
+ unless (defined $filename) {
# let C<require> do the searching
- $name = "auto/$AUTOLOAD.al";
- $name =~ s#::#/#g;
+ $filename = "auto/$sub.al";
+ $filename =~ s#::#/#g;
}
}
my $save = $@;
- eval { local $SIG{__DIE__}; require $name };
+ eval { local $SIG{__DIE__}; require $filename };
if ($@) {
- if (substr($AUTOLOAD,-9) eq '::DESTROY') {
- *$AUTOLOAD = sub {};
+ if (substr($sub,-9) eq '::DESTROY') {
+ *$sub = sub {};
} else {
# The load might just have failed because the filename was too
# long for some old SVR3 systems which treat long names as errors.
# If we can succesfully truncate a long name then it's worth a go.
# There is a slight risk that we could pick up the wrong file here
# but autosplit should have warned about that when splitting.
- if ($name =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){
- eval {local $SIG{__DIE__};require $name};
+ if ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){
+ eval { local $SIG{__DIE__}; require $filename };
}
if ($@){
$@ =~ s/ at .*\n//;
@@ -90,7 +93,7 @@ AUTOLOAD {
}
}
$@ = $save;
- goto &$AUTOLOAD;
+ goto &$sub;
}
sub import {
@@ -101,7 +104,10 @@ sub import {
# Export symbols, but not by accident of inheritance.
#
- Exporter::export $pkg, $callpkg, @_ if $pkg eq 'AutoLoader';
+ if ($pkg eq 'AutoLoader') {
+ local $Exporter::ExportLevel = 1;
+ Exporter::import $pkg, @_;
+ }
#
# Try to find the autosplit index file. Eg., if the call package
@@ -219,20 +225,20 @@ lines:
use Carp;
sub AUTOLOAD {
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
+ my $sub = $AUTOLOAD;
+ (my $constname = $sub) =~ s/.*:://;
my $val = constant($constname, @_ ? $_[0] : 0);
if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
+ if ($! =~ /Invalid/ || $!{EINVAL}) {
+ $AutoLoader::AUTOLOAD = $sub;
goto &AutoLoader::AUTOLOAD;
}
else {
croak "Your vendor has not defined constant $constname";
}
}
- *$AUTOLOAD = sub { $val }; # same as: eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
+ *$sub = sub { $val }; # same as: eval "sub $sub { $val }";
+ goto &$sub;
}
If any module's own AUTOLOAD subroutine has no need to fallback to the
diff --git a/contrib/perl5/lib/AutoSplit.pm b/contrib/perl5/lib/AutoSplit.pm
index f818371..0be3ae6 100644
--- a/contrib/perl5/lib/AutoSplit.pm
+++ b/contrib/perl5/lib/AutoSplit.pm
@@ -1,17 +1,16 @@
package AutoSplit;
+use 5.005_64;
use Exporter ();
use Config qw(%Config);
use Carp qw(carp);
use File::Basename ();
use File::Path qw(mkpath);
use strict;
-use vars qw(
- $VERSION @ISA @EXPORT @EXPORT_OK
- $Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime
- );
+our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Verbose, $Keep, $Maxlen,
+ $CheckForAutoloader, $CheckModTime);
-$VERSION = "1.0303";
+$VERSION = "1.0305";
@ISA = qw(Exporter);
@EXPORT = qw(&autosplit &autosplit_lib_modules);
@EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime);
@@ -147,6 +146,13 @@ if (defined (&Dos::UseLFN)) {
}
my $Is_VMS = ($^O eq 'VMS');
+# allow checking for valid ': attrlist' attachments
+my $nested;
+$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x;
+my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
+my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
+
+
sub autosplit{
my($file, $autodir, $keep, $ckal, $ckmt) = @_;
@@ -169,10 +175,10 @@ sub autosplit_lib_modules{
while(defined($_ = shift @modules)){
s#::#/#g; # incase specified as ABC::XYZ
s|\\|/|g; # bug in ksh OS/2
- s#^lib/##; # incase specified as lib/*.pm
+ s#^lib/##s; # incase specified as lib/*.pm
if ($Is_VMS && /[:>\]]/) { # may need to convert VMS-style filespecs
- my ($dir,$name) = (/(.*])(.*)/);
- $dir =~ s/.*lib[\.\]]//;
+ my ($dir,$name) = (/(.*])(.*)/s);
+ $dir =~ s/.*lib[\.\]]//s;
$dir =~ s#[\.\]]#/#g;
$_ = $dir . $name;
}
@@ -195,7 +201,7 @@ sub autosplit_file {
# where to write output files
$autodir ||= "lib/auto";
if ($Is_VMS) {
- ($autodir = VMS::Filespec::unixpath($autodir)) =~ s|/$||;
+ ($autodir = VMS::Filespec::unixpath($autodir)) =~ s|/\z||;
$filename = VMS::Filespec::unixify($filename); # may have dirs
}
unless (-d $autodir){
@@ -209,7 +215,7 @@ sub autosplit_file {
}
# allow just a package name to be used
- $filename .= ".pm" unless ($filename =~ m/\.pm$/);
+ $filename .= ".pm" unless ($filename =~ m/\.pm\z/);
open(IN, "<$filename") or die "AutoSplit: Can't open $filename: $!\n";
my($pm_mod_time) = (stat($filename))[9];
@@ -280,7 +286,7 @@ sub autosplit_file {
$last_package = '';
while (<IN>) {
$fnr++;
- $in_pod = 1 if /^=/;
+ $in_pod = 1 if /^=\w/;
$in_pod = 0 if /^=cut/;
next if ($in_pod || /^=cut/);
# the following (tempting) old coding gives big troubles if a
@@ -289,7 +295,7 @@ sub autosplit_file {
if (/^package\s+([\w:]+)\s*;/) {
$this_package = $def_package = $1;
}
- if (/^sub\s+([\w:]+)(\s*\(.*?\))?/) {
+ if (/^sub\s+([\w:]+)(\s*(?:\(.*?\))?(?:$attr_list)?)/) {
print OUT "# end of $last_package\::$subname\n1;\n"
if $last_package;
$subname = $1;
@@ -346,8 +352,10 @@ EOT
}
$last_package = $this_package if defined $this_package;
}
- print OUT @cache,"1;\n# end of $last_package\::$subname\n";
- close(OUT);
+ if ($subname) {
+ print OUT @cache,"1;\n# end of $last_package\::$subname\n";
+ close(OUT);
+ }
close(IN);
if (!$keep){ # don't keep any obsolete *.al files in the directory
@@ -370,7 +378,7 @@ EOT
for my $dir (keys %outdirs) {
opendir(OUTDIR,$dir);
foreach (sort readdir(OUTDIR)){
- next unless /\.al$/;
+ next unless /\.al\z/;
my($file) = "$dir/$_";
$file = lc $file if $Is83 or $Is_VMS;
next if $outfiles{$file};
@@ -459,3 +467,6 @@ sub test6 { return join ":", __FILE__,__LINE__; }
package Yet::Another::AutoSplit;
sub testtesttesttest4_1 ($) { "another test 4\n"; }
sub testtesttesttest4_2 ($$) { "another duplicate test 4\n"; }
+package Yet::More::Attributes;
+sub test_a1 ($) : locked :locked { 1; }
+sub test_a2 : locked { 1; }
diff --git a/contrib/perl5/lib/Benchmark.pm b/contrib/perl5/lib/Benchmark.pm
index ef12d02..3c10a5b 100644
--- a/contrib/perl5/lib/Benchmark.pm
+++ b/contrib/perl5/lib/Benchmark.pm
@@ -2,13 +2,7 @@ package Benchmark;
=head1 NAME
-Benchmark - benchmark running times of code
-
-timethis - run a chunk of code several times
-
-timethese - run several chunks of code several times
-
-timeit - run a chunk of code and see how long it goes
+Benchmark - benchmark running times of Perl code
=head1 SYNOPSIS
@@ -26,14 +20,50 @@ timeit - run a chunk of code and see how long it goes
'Name2' => sub { ...code2... },
});
+ # cmpthese can be used both ways as well
+ cmpthese($count, {
+ 'Name1' => '...code1...',
+ 'Name2' => '...code2...',
+ });
+
+ cmpthese($count, {
+ 'Name1' => sub { ...code1... },
+ 'Name2' => sub { ...code2... },
+ });
+
+ # ...or in two stages
+ $results = timethese($count,
+ {
+ 'Name1' => sub { ...code1... },
+ 'Name2' => sub { ...code2... },
+ },
+ 'none'
+ );
+ cmpthese( $results ) ;
+
$t = timeit($count, '...other code...')
print "$count loops of other code took:",timestr($t),"\n";
+ $t = countit($time, '...other code...')
+ $count = $t->iters ;
+ print "$count loops of other code took:",timestr($t),"\n";
+
=head1 DESCRIPTION
The Benchmark module encapsulates a number of routines to help you
figure out how long it takes to execute some code.
+timethis - run a chunk of code several times
+
+timethese - run several chunks of code several times
+
+cmpthese - print results of timethese as a comparison chart
+
+timeit - run a chunk of code and see how long it goes
+
+countit - see how many times a chunk of code runs in a given time
+
+
=head2 Methods
=over 10
@@ -57,6 +87,10 @@ Enables or disable debugging by setting the C<$Benchmark::Debug> flag:
$t = timeit(10, ' 5 ** $Global ');
debug Benchmark 0;
+=item iters
+
+Returns the number of iterations.
+
=back
=head2 Standard Exports
@@ -119,28 +153,26 @@ The routines are called in string comparison order of KEY.
The COUNT can be zero or negative, see timethis().
+Returns a hash of Benchmark objects, keyed by name.
+
=item timediff ( T1, T2 )
Returns the difference between two Benchmark times as a Benchmark
object suitable for passing to timestr().
-=item timesum ( T1, T2 )
-
-Returns the sum of two Benchmark times as a Benchmark object suitable
-for passing to timestr().
-
=item timestr ( TIMEDIFF, [ STYLE, [ FORMAT ] ] )
Returns a string that formats the times in the TIMEDIFF object in
the requested STYLE. TIMEDIFF is expected to be a Benchmark object
similar to that returned by timediff().
-STYLE can be any of 'all', 'noc', 'nop' or 'auto'. 'all' shows each
-of the 5 times available ('wallclock' time, user time, system time,
+STYLE can be any of 'all', 'none', 'noc', 'nop' or 'auto'. 'all' shows
+each of the 5 times available ('wallclock' time, user time, system time,
user time of children, and system time of children). 'noc' shows all
except the two children times. 'nop' shows only wallclock and the
two children times. 'auto' (the default) will act as 'all' unless
the children times are both zero, in which case it acts as 'noc'.
+'none' prevents output.
FORMAT is the L<printf(3)>-style format specifier (without the
leading '%') to use to print the times. It defaults to '5.2f'.
@@ -162,6 +194,34 @@ Clear the cached time for COUNT rounds of the null loop.
Clear all cached times.
+=item cmpthese ( COUT, CODEHASHREF, [ STYLE ] )
+
+=item cmpthese ( RESULTSHASHREF )
+
+Optionally calls timethese(), then outputs comparison chart. This
+chart is sorted from slowest to fastest, and shows the percent
+speed difference between each pair of tests. Can also be passed
+the data structure that timethese() returns:
+
+ $results = timethese( .... );
+ cmpthese( $results );
+
+Returns the data structure returned by timethese() (or passed in).
+
+=item countit(TIME, CODE)
+
+Arguments: TIME is the minimum length of time to run CODE for, and CODE is
+the code to run. CODE may be either a code reference or a string to
+be eval'd; either way it will be run in the caller's package.
+
+TIME is I<not> negative. countit() will run the loop many times to
+calculate the speed of CODE before running it for TIME. The actual
+time run for will usually be greater than TIME due to system clock
+resolution, so it's best to look at the number of iterations divided
+by the times that you are concerned with, not just the iterations.
+
+Returns: a Benchmark object.
+
=item disablecache ( )
Disable caching of timings for the null loop. This will force Benchmark
@@ -173,6 +233,11 @@ Enable caching of timings for the null loop. The time taken for COUNT
rounds of the null loop will be calculated only once for each
different COUNT used.
+=item timesum ( T1, T2 )
+
+Returns the sum of two Benchmark times as a Benchmark object suitable
+for passing to timestr().
+
=back
=head1 NOTES
@@ -180,7 +245,7 @@ different COUNT used.
The data is stored as a list of values from the time and times
functions:
- ($real, $user, $system, $children_user, $children_system)
+ ($real, $user, $system, $children_user, $children_system, $iters)
in seconds for the whole loop (not divided by the number of rounds).
@@ -192,7 +257,7 @@ The time of the null loop (a loop with the same
number of rounds but empty loop body) is subtracted
from the time of the real loop.
-The null loop times are cached, the key being the
+The null loop times can be cached, the key being the
number of rounds. The caching can be controlled using
calls like these:
@@ -202,6 +267,38 @@ calls like these:
disablecache();
enablecache();
+Caching is off by default, as it can (usually slightly) decrease
+accuracy and does not usually noticably affect runtimes.
+
+=head1 EXAMPLES
+
+For example,
+
+ use Benchmark;$x=3;cmpthese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
+
+outputs something like this:
+
+ Benchmark: running a, b, each for at least 5 CPU seconds...
+ a: 10 wallclock secs ( 5.14 usr + 0.13 sys = 5.27 CPU) @ 3835055.60/s (n=20210743)
+ b: 5 wallclock secs ( 5.41 usr + 0.00 sys = 5.41 CPU) @ 1574944.92/s (n=8520452)
+ Rate b a
+ b 1574945/s -- -59%
+ a 3835056/s 144% --
+
+while
+
+ use Benchmark;
+ $x=3;
+ $r=timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}},'none');
+ cmpthese($r);
+
+outputs something like this:
+
+ Rate b a
+ b 1559428/s -- -62%
+ a 4152037/s 166% --
+
+
=head1 INHERITANCE
Benchmark inherits from no other class, except of course
@@ -210,7 +307,7 @@ for Exporter.
=head1 CAVEATS
Comparing eval'd strings with code references will give you
-inaccurate results: a code reference will show a slower
+inaccurate results: a code reference will show a slightly slower
execution time than the equivalent eval'd string.
The real time timing is done using time(2) and
@@ -226,6 +323,10 @@ The system time of the null loop might be slightly
more than the system time of the loop with the actual
code and therefore the difference might end up being E<lt> 0.
+=head1 SEE ALSO
+
+L<Devel::DProf> - a Perl code profiler
+
=head1 AUTHORS
Jarkko Hietaniemi <F<jhi@iki.fi>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>
@@ -241,6 +342,10 @@ documentation.
April 04-07th, 1997: by Jarkko Hietaniemi, added the run-for-some-time
functionality.
+September, 1999; by Barrie Slaymaker: math fixes and accuracy and
+efficiency tweaks. Added cmpthese(). A result is now returned from
+timethese(). Exposed countit() (was runfor()).
+
=cut
# evaluate something in a clean lexical environment
@@ -254,7 +359,10 @@ use Carp;
use Exporter;
@ISA=(Exporter);
@EXPORT=qw(timeit timethis timethese timediff timestr);
-@EXPORT_OK=qw(clearcache clearallcache disablecache enablecache);
+@EXPORT_OK=qw(timesum cmpthese countit
+ clearcache clearallcache disablecache enablecache);
+
+$VERSION = 1.00;
&init;
@@ -273,7 +381,9 @@ sub init {
sub debug { $debug = ($_[1] != 0); }
-sub clearcache { delete $cache{$_[0]}; }
+# The cache needs two branches: 's' for strings and 'c' for code. The
+# emtpy loop is different in these two cases.
+sub clearcache { delete $cache{"$_[0]c"}; delete $cache{"$_[0]s"}; }
sub clearallcache { %cache = (); }
sub enablecache { $cache = 1; }
sub disablecache { $cache = 0; }
@@ -288,6 +398,7 @@ sub cpu_p { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps ; }
sub cpu_c { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $cu+$cs ; }
sub cpu_a { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps+$cu+$cs ; }
sub real { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $r ; }
+sub iters { $_[0]->[5] ; }
sub timediff {
my($a, $b) = @_;
@@ -312,19 +423,19 @@ sub timestr {
my @t = @$tr;
warn "bad time value (@t)" unless @t==6;
my($r, $pu, $ps, $cu, $cs, $n) = @t;
- my($pt, $ct, $t) = ($tr->cpu_p, $tr->cpu_c, $tr->cpu_a);
+ my($pt, $ct, $tt) = ($tr->cpu_p, $tr->cpu_c, $tr->cpu_a);
$f = $defaultfmt unless defined $f;
# format a time in the required style, other formats may be added here
$style ||= $defaultstyle;
$style = ($ct>0) ? 'all' : 'noc' if $style eq 'auto';
my $s = "@t $style"; # default for unknown style
$s=sprintf("%2d wallclock secs (%$f usr %$f sys + %$f cusr %$f csys = %$f CPU)",
- @t,$t) if $style eq 'all';
+ $r,$pu,$ps,$cu,$cs,$tt) if $style eq 'all';
$s=sprintf("%2d wallclock secs (%$f usr + %$f sys = %$f CPU)",
$r,$pu,$ps,$pt) if $style eq 'noc';
$s=sprintf("%2d wallclock secs (%$f cusr + %$f csys = %$f CPU)",
$r,$cu,$cs,$ct) if $style eq 'nop';
- $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n;
+ $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n && $pu+$ps;
$s;
}
@@ -362,11 +473,17 @@ sub runloop {
croak "runloop unable to compile '$c': $@\ncode: $subcode\n" if $@;
print STDERR "runloop $n '$subcode'\n" if $debug;
- $t0 = Benchmark->new(0);
+ # Wait for the user timer to tick. This makes the error range more like
+ # -0.01, +0. If we don't wait, then it's more like -0.01, +0.01. This
+ # may not seem important, but it significantly reduces the chances of
+ # getting a too low initial $n in the initial, 'find the minimum' loop
+ # in &countit. This, in turn, can reduce the number of calls to
+ # &runloop a lot, and thus reduce additive errors.
+ my $tbase = Benchmark->new(0)->[1];
+ while ( ( $t0 = Benchmark->new(0) )->[1] == $tbase ) {} ;
&$subref;
$t1 = Benchmark->new($n);
$td = &timediff($t1, $t0);
-
timedebug("runloop:",$td);
$td;
}
@@ -377,18 +494,20 @@ sub timeit {
my($wn, $wc, $wd);
printf STDERR "timeit $n $code\n" if $debug;
-
- if ($cache && exists $cache{$n}) {
- $wn = $cache{$n};
+ my $cache_key = $n . ( ref( $code ) ? 'c' : 's' );
+ if ($cache && exists $cache{$cache_key} ) {
+ $wn = $cache{$cache_key};
} else {
- $wn = &runloop($n, '');
- $cache{$n} = $wn;
+ $wn = &runloop($n, ref( $code ) ? sub { undef } : '' );
+ # Can't let our baseline have any iterations, or they get subtracted
+ # out of the result.
+ $wn->[5] = 0;
+ $cache{$cache_key} = $wn;
}
$wc = &runloop($n, $code);
$wd = timediff($wc, $wn);
-
timedebug("timeit: ",$wc);
timedebug(" - ",$wn);
timedebug(" = ",$wd);
@@ -400,8 +519,9 @@ sub timeit {
my $default_for = 3;
my $min_for = 0.1;
-sub runfor {
- my ($code, $tmax) = @_;
+
+sub countit {
+ my ( $tmax, $code ) = @_;
if ( not defined $tmax or $tmax == 0 ) {
$tmax = $default_for;
@@ -409,53 +529,61 @@ sub runfor {
$tmax = -$tmax;
}
- die "runfor(..., $tmax): timelimit cannot be less than $min_for.\n"
+ die "countit($tmax, ...): timelimit cannot be less than $min_for.\n"
if $tmax < $min_for;
- my ($n, $td, $tc, $ntot, $rtot, $utot, $stot, $cutot, $cstot );
-
- # First find the minimum $n that gives a non-zero timing.
-
- my $nmin;
+ my ($n, $tc);
- for ($n = 1, $tc = 0; $tc <= 0; $n *= 2 ) {
- $td = timeit($n, $code);
+ # First find the minimum $n that gives a significant timing.
+ for ($n = 1; ; $n *= 2 ) {
+ my $td = timeit($n, $code);
$tc = $td->[1] + $td->[2];
+ last if $tc > 0.1;
}
- $nmin = $n;
-
- my $ttot = 0;
- my $tpra = 0.05 * $tmax; # Target/time practice.
+ my $nmin = $n;
+
+ # Get $n high enough that we can guess the final $n with some accuracy.
+ my $tpra = 0.1 * $tmax; # Target/time practice.
+ while ( $tc < $tpra ) {
+ # The 5% fudge is to keep us from iterating again all
+ # that often (this speeds overall responsiveness when $tmax is big
+ # and we guess a little low). This does not noticably affect
+ # accuracy since we're not couting these times.
+ $n = int( $tpra * 1.05 * $n / $tc ); # Linear approximation.
+ my $td = timeit($n, $code);
+ $tc = $td->[1] + $td->[2];
+ }
- # Double $n until we have think we have practiced enough.
- for ( $n = 1; $ttot < $tpra; $n *= 2 ) {
- $td = timeit($n, $code);
- $tc = $td->cpu_p;
- $ntot += $n;
- $rtot += $td->[0];
- $utot += $td->[1];
- $stot += $td->[2];
- $ttot = $utot + $stot;
+ # Now, do the 'for real' timing(s), repeating until we exceed
+ # the max.
+ my $ntot = 0;
+ my $rtot = 0;
+ my $utot = 0.0;
+ my $stot = 0.0;
+ my $cutot = 0.0;
+ my $cstot = 0.0;
+ my $ttot = 0.0;
+
+ # The 5% fudge is because $n is often a few % low even for routines
+ # with stable times and avoiding extra timeit()s is nice for
+ # accuracy's sake.
+ $n = int( $n * ( 1.05 * $tmax / $tc ) );
+
+ while () {
+ my $td = timeit($n, $code);
+ $ntot += $n;
+ $rtot += $td->[0];
+ $utot += $td->[1];
+ $stot += $td->[2];
$cutot += $td->[3];
$cstot += $td->[4];
- }
-
- my $r;
+ $ttot = $utot + $stot;
+ last if $ttot >= $tmax;
- # Then iterate towards the $tmax.
- while ( $ttot < $tmax ) {
- $r = $tmax / $ttot - 1; # Linear approximation.
- $n = int( $r * $n );
+ my $r = $tmax / $ttot - 1; # Linear approximation.
+ $n = int( $r * $ntot );
$n = $nmin if $n < $nmin;
- $td = timeit($n, $code);
- $ntot += $n;
- $rtot += $td->[0];
- $utot += $td->[1];
- $stot += $td->[2];
- $ttot = $utot + $stot;
- $cutot += $td->[3];
- $cstot += $td->[4];
}
return bless [ $rtot, $utot, $stot, $cutot, $cstot, $ntot ];
@@ -478,14 +606,14 @@ sub timethis{
$title = "timethis $n" unless defined $title;
} else {
$fort = n_to_for( $n );
- $t = runfor($code, $fort);
+ $t = countit( $fort, $code );
$title = "timethis for $fort" unless defined $title;
$forn = $t->[-1];
}
local $| = 1;
$style = "" unless defined $style;
- printf("%10s: ", $title);
- print timestr($t, $style, $defaultfmt),"\n";
+ printf("%10s: ", $title) unless $style eq 'none';
+ print timestr($t, $style, $defaultfmt),"\n" unless $style eq 'none';
$n = $forn if defined $forn;
@@ -505,25 +633,163 @@ sub timethese{
unless ref $alt eq HASH;
my @names = sort keys %$alt;
$style = "" unless defined $style;
- print "Benchmark: ";
+ print "Benchmark: " unless $style eq 'none';
if ( $n > 0 ) {
croak "non-integer loopcount $n, stopped" if int($n)<$n;
- print "timing $n iterations of";
+ print "timing $n iterations of" unless $style eq 'none';
} else {
- print "running";
+ print "running" unless $style eq 'none';
}
- print " ", join(', ',@names);
+ print " ", join(', ',@names) unless $style eq 'none';
unless ( $n > 0 ) {
my $for = n_to_for( $n );
- print ", each for at least $for CPU seconds";
+ print ", each for at least $for CPU seconds" unless $style eq 'none';
}
- print "...\n";
+ print "...\n" unless $style eq 'none';
# we could save the results in an array and produce a summary here
# sum, min, max, avg etc etc
+ my %results;
foreach my $name (@names) {
- timethis ($n, $alt -> {$name}, $name, $style);
+ $results{$name} = timethis ($n, $alt -> {$name}, $name, $style);
+ }
+
+ return \%results;
+}
+
+sub cmpthese{
+ my $results = ref $_[0] ? $_[0] : timethese( @_ );
+
+ return $results
+ if defined $_[2] && $_[2] eq 'none';
+
+ # Flatten in to an array of arrays with the name as the first field
+ my @vals = map{ [ $_, @{$results->{$_}} ] } keys %$results;
+
+ for (@vals) {
+ # The epsilon fudge here is to prevent div by 0. Since clock
+ # resolutions are much larger, it's below the noise floor.
+ my $rate = $_->[6] / ( $_->[2] + $_->[3] + 0.000000000000001 );
+ $_->[7] = $rate;
+ }
+
+ # Sort by rate
+ @vals = sort { $a->[7] <=> $b->[7] } @vals;
+
+ # If more than half of the rates are greater than one...
+ my $display_as_rate = $vals[$#vals>>1]->[7] > 1;
+
+ my @rows;
+ my @col_widths;
+
+ my @top_row = (
+ '',
+ $display_as_rate ? 'Rate' : 's/iter',
+ map { $_->[0] } @vals
+ );
+
+ push @rows, \@top_row;
+ @col_widths = map { length( $_ ) } @top_row;
+
+ # Build the data rows
+ # We leave the last column in even though it never has any data. Perhaps
+ # it should go away. Also, perhaps a style for a single column of
+ # percentages might be nice.
+ for my $row_val ( @vals ) {
+ my @row;
+
+ # Column 0 = test name
+ push @row, $row_val->[0];
+ $col_widths[0] = length( $row_val->[0] )
+ if length( $row_val->[0] ) > $col_widths[0];
+
+ # Column 1 = performance
+ my $row_rate = $row_val->[7];
+
+ # We assume that we'll never get a 0 rate.
+ my $a = $display_as_rate ? $row_rate : 1 / $row_rate;
+
+ # Only give a few decimal places before switching to sci. notation,
+ # since the results aren't usually that accurate anyway.
+ my $format =
+ $a >= 100 ?
+ "%0.0f" :
+ $a >= 10 ?
+ "%0.1f" :
+ $a >= 1 ?
+ "%0.2f" :
+ $a >= 0.1 ?
+ "%0.3f" :
+ "%0.2e";
+
+ $format .= "/s"
+ if $display_as_rate;
+ # Using $b here due to optimizing bug in _58 through _61
+ my $b = sprintf( $format, $a );
+ push @row, $b;
+ $col_widths[1] = length( $b )
+ if length( $b ) > $col_widths[1];
+
+ # Columns 2..N = performance ratios
+ my $skip_rest = 0;
+ for ( my $col_num = 0 ; $col_num < @vals ; ++$col_num ) {
+ my $col_val = $vals[$col_num];
+ my $out;
+ if ( $skip_rest ) {
+ $out = '';
+ }
+ elsif ( $col_val->[0] eq $row_val->[0] ) {
+ $out = "--";
+ # $skip_rest = 1;
+ }
+ else {
+ my $col_rate = $col_val->[7];
+ $out = sprintf( "%.0f%%", 100*$row_rate/$col_rate - 100 );
+ }
+ push @row, $out;
+ $col_widths[$col_num+2] = length( $out )
+ if length( $out ) > $col_widths[$col_num+2];
+
+ # A little wierdness to set the first column width properly
+ $col_widths[$col_num+2] = length( $col_val->[0] )
+ if length( $col_val->[0] ) > $col_widths[$col_num+2];
+ }
+ push @rows, \@row;
}
+
+ # Equalize column widths in the chart as much as possible without
+ # exceeding 80 characters. This does not use or affect cols 0 or 1.
+ my @sorted_width_refs =
+ sort { $$a <=> $$b } map { \$_ } @col_widths[2..$#col_widths];
+ my $max_width = ${$sorted_width_refs[-1]};
+
+ my $total = @col_widths - 1 ;
+ for ( @col_widths ) { $total += $_ }
+
+ STRETCHER:
+ while ( $total < 80 ) {
+ my $min_width = ${$sorted_width_refs[0]};
+ last
+ if $min_width == $max_width;
+ for ( @sorted_width_refs ) {
+ last
+ if $$_ > $min_width;
+ ++$$_;
+ ++$total;
+ last STRETCHER
+ if $total >= 80;
+ }
+ }
+
+ # Dump the output
+ my $format = join( ' ', map { "%${_}s" } @col_widths ) . "\n";
+ substr( $format, 1, 0 ) = '-';
+ for ( @rows ) {
+ printf $format, @$_;
+ }
+
+ return $results;
}
+
1;
diff --git a/contrib/perl5/lib/CGI.pm b/contrib/perl5/lib/CGI.pm
index f5615f2..3e03257 100644
--- a/contrib/perl5/lib/CGI.pm
+++ b/contrib/perl5/lib/CGI.pm
@@ -17,8 +17,8 @@ require 5.004;
# The most recent version and complete docs are available at:
# http://stein.cshl.org/WWW/software/CGI/
-$CGI::revision = '$Id: CGI.pm,v 1.5 1998/12/06 10:19:48 lstein Exp $';
-$CGI::VERSION='2.46';
+$CGI::revision = '$Id: CGI.pm,v 1.19 1999/08/31 17:04:37 lstein Exp $';
+$CGI::VERSION='2.56';
# HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
# UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
@@ -58,6 +58,9 @@ sub initialize_globals {
# Change this to 1 to disable uploads entirely:
$DISABLE_UPLOADS = 0;
+ # Automatically determined -- don't change
+ $EBCDIC = 0;
+
# Change this to 1 to suppress redundant HTTP headers
$HEADERS_ONCE = 0;
@@ -89,9 +92,13 @@ unless ($OS) {
}
}
if ($OS=~/Win/i) {
- $OS = 'WINDOWS';
+ $OS = 'WINDOWS';
} elsif ($OS=~/vms/i) {
- $OS = 'VMS';
+ $OS = 'VMS';
+} elsif ($OS=~/bsdos/i) {
+ $OS = 'UNIX';
+} elsif ($OS=~/dos/i) {
+ $OS = 'DOS';
} elsif ($OS=~/^MacOS$/i) {
$OS = 'MACINTOSH';
} elsif ($OS=~/os2/i) {
@@ -101,7 +108,7 @@ if ($OS=~/Win/i) {
}
# Some OS logic. Binary mode enabled on DOS, NT and VMS
-$needs_binmode = $OS=~/^(WINDOWS|VMS|OS2)/;
+$needs_binmode = $OS=~/^(WINDOWS|DOS|OS2|MSWin)/;
# This is the default class for the CGI object to use when all else fails.
$DefaultClass = 'CGI' unless defined $CGI::DefaultClass;
@@ -112,7 +119,7 @@ $AutoloadClass = $DefaultClass unless defined $CGI::AutoloadClass;
# The path separator is a slash, backslash or semicolon, depending
# on the paltform.
$SL = {
- UNIX=>'/', OS2=>'\\', WINDOWS=>'\\', MACINTOSH=>':', VMS=>'/'
+ UNIX=>'/', OS2=>'\\', WINDOWS=>'\\', DOS=>'\\', MACINTOSH=>':', VMS=>'/'
}->{$OS};
# This no longer seems to be necessary
@@ -123,7 +130,7 @@ $IIS++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/;
# Turn on special checking for Doug MacEachern's modperl
if (exists $ENV{'GATEWAY_INTERFACE'}
&&
- ($MOD_PERL = $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-Perl/))
+ ($MOD_PERL = $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-Perl\//))
{
$| = 1;
require Apache;
@@ -139,11 +146,32 @@ $PERLEX++ if defined($ENV{'GATEWAY_INTERFACE'}) && $ENV{'GATEWAY_INTERFACE'} =~
# really annoying.
$EBCDIC = "\t" ne "\011";
if ($OS eq 'VMS') {
- $CRLF = "\n";
+ $CRLF = "\n";
} elsif ($EBCDIC) {
- $CRLF= "\r\n";
+ $CRLF= "\r\n";
} else {
- $CRLF = "\015\012";
+ $CRLF = "\015\012";
+}
+
+if ($EBCDIC) {
+@A2E = (
+ 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 21, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31,
+ 64, 90,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97,
+240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111,
+124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214,
+215,216,217,226,227,228,229,230,231,232,233,173,224,189, 95,109,
+121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150,
+151,152,153,162,163,164,165,166,167,168,169,192, 79,208,161, 7,
+ 32, 33, 34, 35, 36, 37, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27,
+ 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,255,
+ 65,170, 74,177,159,178,106,181,187,180,154,138,176,202,175,188,
+144,143,234,250,190,160,182,179,157,218,155,139,183,184,185,171,
+100,101, 98,102, 99,103,158,104,116,113,114,115,120,117,118,119,
+172,105,237,238,235,239,236,191,128,253,254,251,252,186,174, 89,
+ 68, 69, 66, 70, 67, 71,156, 72, 84, 81, 82, 83, 88, 85, 86, 87,
+140, 73,205,206,203,207,204,225,112,221,222,219,220,141,142,223
+ );
}
if ($needs_binmode) {
@@ -164,15 +192,16 @@ if ($needs_binmode) {
submit reset defaults radio_group popup_menu button autoEscape
scrolling_list image_button start_form end_form startform endform
start_multipart_form end_multipart_form isindex tmpFileName uploadInfo URL_ENCODED MULTIPART/],
- ':cgi'=>[qw/param path_info path_translated url self_url script_name cookie Dump
- raw_cookie request_method query_string Accept user_agent remote_host
+ ':cgi'=>[qw/param upload path_info path_translated url self_url script_name cookie Dump
+ raw_cookie request_method query_string Accept user_agent remote_host content_type
remote_addr referer server_name server_software server_port server_protocol
virtual_host remote_ident auth_type http use_named_parameters
save_parameters restore_parameters param_fetch
- remote_user user_name header redirect import_names put Delete Delete_all url_param/],
+ remote_user user_name header redirect import_names put
+ Delete Delete_all url_param cgi_error/],
':ssl' => [qw/https/],
':imagemap' => [qw/Area Map/],
- ':cgi-lib' => [qw/ReadParse PrintHeader HtmlTop HtmlBot SplitParam/],
+ ':cgi-lib' => [qw/ReadParse PrintHeader HtmlTop HtmlBot SplitParam Vars/],
':html' => [qw/:html2 :html3 :netscape/],
':standard' => [qw/:html2 :html3 :form :cgi/],
':push' => [qw/multipart_init multipart_start multipart_end/],
@@ -328,7 +357,7 @@ sub init {
# if we get called more than once, we want to initialize
# ourselves from the original query (which may be gone
# if it was read from STDIN originally.)
- if (defined(@QUERY_PARAM) && !defined($initializer)) {
+ if (@QUERY_PARAM && !defined($initializer)) {
foreach (@QUERY_PARAM) {
$self->param('-name'=>$_,'-value'=>$QUERY_PARAM{$_});
}
@@ -337,12 +366,17 @@ sub init {
$meth=$ENV{'REQUEST_METHOD'} if defined($ENV{'REQUEST_METHOD'});
$content_length = defined($ENV{'CONTENT_LENGTH'}) ? $ENV{'CONTENT_LENGTH'} : 0;
- die "Client attempted to POST $content_length bytes, but POSTs are limited to $POST_MAX"
- if ($POST_MAX > 0) && ($content_length > $POST_MAX);
+
$fh = to_filehandle($initializer) if $initializer;
METHOD: {
+ # avoid unreasonably large postings
+ if (($POST_MAX > 0) && ($content_length > $POST_MAX)) {
+ $self->cgi_error("413 Request entity too large");
+ last METHOD;
+ }
+
# Process multipart postings, but only if the initializer is
# not defined.
if ($meth eq 'POST'
@@ -394,7 +428,11 @@ sub init {
# If method is GET or HEAD, fetch the query from
# the environment.
if ($meth=~/^(GET|HEAD)$/) {
- $query_string = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'};
+ if ($MOD_PERL) {
+ $query_string = Apache->request->args;
+ } else {
+ $query_string = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'};
+ }
last METHOD;
}
@@ -417,7 +455,7 @@ sub init {
# We now have the query string in hand. We do slightly
# different things for keyword lists and parameter lists.
- if ($query_string ne '') {
+ if (defined $query_string && $query_string) {
if ($query_string =~ /=/) {
$self->parse_params($query_string);
} else {
@@ -473,23 +511,34 @@ sub print {
CORE::print(@_);
}
+# get/set last cgi_error
+sub cgi_error {
+ my ($self,$err) = self_or_default(@_);
+ $self->{'.cgi_error'} = $err if defined $err;
+ return $self->{'.cgi_error'};
+}
+
# unescape URL-encoded data
sub unescape {
- shift() if ref($_[0]);
- my $todecode = shift;
- return undef unless defined($todecode);
- $todecode =~ tr/+/ /; # pluses become spaces
- $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
- return $todecode;
+ shift() if ref($_[0]) || (defined $_[1] && $_[0] eq $DefaultClass);
+ my $todecode = shift;
+ return undef unless defined($todecode);
+ $todecode =~ tr/+/ /; # pluses become spaces
+ if ($EBCDIC) {
+ $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",$A2E[hex($1)])/ge;
+ } else {
+ $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
+ }
+ return $todecode;
}
# URL-encode data
sub escape {
- shift() if ref($_[0]) || $_[0] eq $DefaultClass;
- my $toencode = shift;
- return undef unless defined($toencode);
- $toencode=~s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
- return $toencode;
+ shift() if ref($_[0]) || (defined $_[1] && $_[0] eq $DefaultClass);
+ my $toencode = shift;
+ return undef unless defined($toencode);
+ $toencode=~s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
+ return $toencode;
}
sub save_request {
@@ -536,10 +585,10 @@ sub binmode {
sub _make_tag_func {
my ($self,$tagname) = @_;
- my $func = qq#
+ my $func = qq(
sub $tagname {
shift if \$_[0] &&
- (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) ||
+# (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) ||
(ref(\$_[0]) &&
(substr(ref(\$_[0]),0,3) eq 'CGI' ||
UNIVERSAL::isa(\$_[0],'CGI')));
@@ -549,7 +598,7 @@ sub _make_tag_func {
my(\@attr) = make_attributes( '',shift() );
\$attr = " \@attr" if \@attr;
}
- #;
+ );
if ($tagname=~/start_(\w+)/i) {
$func .= qq! return "<\U$1\E\$attr>";} !;
} elsif ($tagname=~/end_(\w+)/i) {
@@ -650,7 +699,7 @@ sub _compile {
die $@;
}
}
- delete($sub->{$func_name}); #free storage
+ CORE::delete($sub->{$func_name}); #free storage
return "$pack\:\:$func_name";
}
@@ -746,8 +795,8 @@ END_OF_FUNC
####
sub delete {
my($self,$name) = self_or_default(@_);
- delete $self->{$name};
- delete $self->{'.fieldnames'}->{$name};
+ CORE::delete $self->{$name};
+ CORE::delete $self->{'.fieldnames'}->{$name};
@{$self->{'.parameters'}}=grep($_ ne $name,$self->param());
return wantarray ? () : undef;
}
@@ -762,7 +811,7 @@ sub import_names {
my($self,$namespace,$delete) = self_or_default(@_);
$namespace = 'Q' unless defined($namespace);
die "Can't import names into \"main\"\n" if \%{"${namespace}::"} == \%::;
- if ($delete || $MOD_PERL) {
+ if ($delete || $MOD_PERL || exists $ENV{'FCGI_ROLE'}) {
# can anyone find an easier way to do this?
foreach (keys %{"${namespace}::"}) {
local *symbol = "${namespace}::${_}";
@@ -793,7 +842,7 @@ END_OF_FUNC
sub keywords {
my($self,@values) = self_or_default(@_);
# If values is provided, then we set it.
- $self->{'keywords'}=[@values] if defined(@values);
+ $self->{'keywords'}=[@values] if @values;
my(@result) = defined($self->{'keywords'}) ? @{$self->{'keywords'}} : ();
@result;
}
@@ -801,6 +850,18 @@ END_OF_FUNC
# These are some tie() interfaces for compatibility
# with Steve Brenner's cgi-lib.pl routines
+'Vars' => <<'END_OF_FUNC',
+sub Vars {
+ my $q = shift;
+ my %in;
+ tie(%in,CGI,$q);
+ return %in if wantarray;
+ return \%in;
+}
+END_OF_FUNC
+
+# These are some tie() interfaces for compatibility
+# with Steve Brenner's cgi-lib.pl routines
'ReadParse' => <<'END_OF_FUNC',
sub ReadParse {
local(*in);
@@ -858,7 +919,8 @@ END_OF_FUNC
'TIEHASH' => <<'END_OF_FUNC',
sub TIEHASH {
- return $Q || new CGI;
+ return $_[1] if defined $_[1];
+ return $Q || new shift;
}
END_OF_FUNC
@@ -1031,6 +1093,7 @@ sub dump {
push(@result,"<UL>");
foreach $value ($self->param($param)) {
$value = $self->escapeHTML($value);
+ $value =~ s/\n/<BR>\n/g;
push(@result,"<LI>$value");
}
push(@result,"</UL>");
@@ -1065,7 +1128,7 @@ sub save {
my($escaped_param) = escape($param);
my($value);
foreach $value ($self->param($param)) {
- print $filehandle "$escaped_param=",escape($value),"\n";
+ print $filehandle "$escaped_param=",escape("$value"),"\n";
}
}
print $filehandle "=\n"; # end of record
@@ -1327,7 +1390,7 @@ sub _style {
'-foo'=>'bar', # a trick to allow the '-' to be omitted
ref($style) eq 'ARRAY' ? @$style : %$style);
$type = $stype if $stype;
- push(@result,qq/<LINK REL="stylesheet" HREF="$src">/) if $src;
+ push(@result,qq/<LINK REL="stylesheet" TYPE="$type" HREF="$src">/) if $src;
push(@result,style({'type'=>$type},"<!--\n$code\n-->")) if $code;
} else {
push(@result,style({'type'=>$type},"<!--\n$style\n-->"));
@@ -1348,7 +1411,7 @@ sub _script {
($src,$code,$language) =
$self->rearrange([SRC,CODE,LANGUAGE],
'-foo'=>'bar', # a trick to allow the '-' to be omitted
- ref($style) eq 'ARRAY' ? @$script : %$script);
+ ref($script) eq 'ARRAY' ? @$script : %$script);
} else {
($src,$code,$language) = ('',$script,'JavaScript');
@@ -1360,7 +1423,7 @@ sub _script {
if $code && $language=~/javascript/i;
$code = "<!-- Hide script\n$code\n\# End script hiding -->"
if $code && $language=~/perl/i;
- push(@result,script({@satts},$code));
+ push(@result,script({@satts},$code || ''));
}
@result;
}
@@ -1460,7 +1523,8 @@ END_OF_FUNC
'endform' => <<'END_OF_FUNC',
sub endform {
my($self,@p) = self_or_default(@_);
- return ($self->get_fields,"</FORM>");
+ return wantarray ? ($self->get_fields,"</FORM>") :
+ $self->get_fields ."\n</FORM>";
}
END_OF_FUNC
@@ -1727,9 +1791,7 @@ sub checkbox {
$the_label = $self->escapeHTML($the_label);
my($other) = @other ? " @other" : '';
$self->register_parameter($name);
- return <<END;
-<INPUT TYPE="checkbox" NAME="$name" VALUE="$value"$checked$other>$the_label
-END
+ return qq{<INPUT TYPE="checkbox" NAME="$name" VALUE="$value"$checked$other>$the_label};
}
END_OF_FUNC
@@ -1800,8 +1862,7 @@ END_OF_FUNC
# Escape HTML -- used internally
'escapeHTML' => <<'END_OF_FUNC',
sub escapeHTML {
- my($self,$toencode) = @_;
- $toencode = $self unless ref($self);
+ my ($self,$toencode) = self_or_default(@_);
return undef unless defined($toencode);
return $toencode if ref($self) && $self->{'dontescape'};
@@ -1849,14 +1910,14 @@ sub _tableize {
# rearrange into a pretty table
$result = "<TABLE>";
my($row,$column);
- unshift(@$colheaders,'') if defined(@$colheaders) && defined(@$rowheaders);
- $result .= "<TR>" if defined(@{$colheaders});
+ unshift(@$colheaders,'') if @$colheaders && @$rowheaders;
+ $result .= "<TR>" if @$colheaders;
foreach (@{$colheaders}) {
$result .= "<TH>$_</TH>";
}
for ($row=0;$row<$rows;$row++) {
$result .= "<TR>";
- $result .= "<TH>$rowheaders->[$row]</TH>" if defined(@$rowheaders);
+ $result .= "<TH>$rowheaders->[$row]</TH>" if @$rowheaders;
for ($column=0;$column<$columns;$column++) {
$result .= "<TD>" . $elements[$column*$rows + $row] . "</TD>"
if defined($elements[$column*$rows + $row]);
@@ -2069,7 +2130,7 @@ sub hidden {
$name=$self->escapeHTML($name);
foreach (@value) {
- $_=$self->escapeHTML($_);
+ $_ = defined($_) ? $self->escapeHTML($_) : '';
push(@result,qq/<INPUT TYPE="hidden" NAME="$name" VALUE="$_">/);
}
return wantarray ? @result : join('',@result);
@@ -2135,6 +2196,20 @@ sub url {
my $url;
$full++ if !($relative || $absolute);
+ my $path = $self->path_info;
+ my $script_name;
+ if (exists($ENV{REQUEST_URI})) {
+ my $index;
+ $script_name = $ENV{REQUEST_URI};
+ # strip query string
+ substr($script_name,$index) = '' if ($index = index($script_name,'?')) >= 0;
+ # and path
+ substr($script_name,$index) = '' if exists($ENV{PATH_INFO})
+ and ($index = rindex($script_name,$ENV{PATH_INFO})) >= 0;
+ } else {
+ $script_name = $self->script_name;
+ }
+
if ($full) {
my $protocol = $self->protocol();
$url = "$protocol://";
@@ -2148,13 +2223,13 @@ sub url {
unless (lc($protocol) eq 'http' && $port == 80)
|| (lc($protocol) eq 'https' && $port == 443);
}
- $url .= $self->script_name;
+ $url .= $script_name;
} elsif ($relative) {
- ($url) = $self->script_name =~ m!([^/]+)$!;
+ ($url) = $script_name =~ m!([^/]+)$!;
} elsif ($absolute) {
- $url = $self->script_name;
+ $url = $script_name;
}
- $url .= $self->path_info if $path_info and $self->path_info;
+ $url .= $path if $path_info and defined $path;
$url .= "?" . $self->query_string if $query and $self->query_string;
return $url;
}
@@ -2206,7 +2281,7 @@ sub cookie {
push(@param,'-expires'=>$expires) if $expires;
push(@param,'-secure'=>$secure) if $secure;
- return new CGI::Cookie(@param);
+ return CGI::Cookie->new(@param);
}
END_OF_FUNC
@@ -2236,6 +2311,8 @@ sub expire_calc {
my($offset);
if (!$time || (lc($time) eq 'now')) {
$offset = 0;
+ } elsif ($time=~/^\d+/) {
+ return $time;
} elsif ($time=~/^([+-]?(?:\d+|\d*\.\d*))([mhdMy]?)/) {
$offset = ($mult{$2} || 1)*$1;
} else {
@@ -2247,7 +2324,7 @@ END_OF_FUNC
# This internal routine creates date strings suitable for use in
# cookies and HTTP headers. (They differ, unfortunately.)
-# Thanks to Fisher Mark for this.
+# Thanks to Mark Fisher for this.
'expires' => <<'END_OF_FUNC',
sub expires {
my($time,$format) = @_;
@@ -2330,6 +2407,15 @@ sub request_method {
}
END_OF_FUNC
+#### Method: content_type
+# Returns the content_type string
+####
+'content_type' => <<'END_OF_FUNC',
+sub content_type {
+ return $ENV{'CONTENT_TYPE'};
+}
+END_OF_FUNC
+
#### Method: path_translated
# Return the physical path information provided
# by the URL (if any)
@@ -2353,6 +2439,7 @@ sub query_string {
my($eparam) = escape($param);
foreach $value ($self->param($param)) {
$value = escape($value);
+ next unless defined $value;
push(@pairs,"$eparam=$value");
}
}
@@ -2556,6 +2643,7 @@ END_OF_FUNC
sub http {
my ($self,$parameter) = self_or_CGI(@_);
return $ENV{$parameter} if $parameter=~/^HTTP/;
+ $parameter =~ tr/-/_/;
return $ENV{"HTTP_\U$parameter\E"} if $parameter;
my(@p);
foreach (keys %ENV) {
@@ -2574,6 +2662,7 @@ sub https {
my ($self,$parameter) = self_or_CGI(@_);
return $ENV{HTTPS} unless $parameter;
return $ENV{$parameter} if $parameter=~/^HTTPS/;
+ $parameter =~ tr/-/_/;
return $ENV{"HTTPS_\U$parameter\E"} if $parameter;
my(@p);
foreach (keys %ENV) {
@@ -2754,7 +2843,11 @@ sub read_multipart {
my $filenumber = 0;
while (!$buffer->eof) {
%header = $buffer->readHeader;
- die "Malformed multipart POST\n" unless %header;
+
+ unless (%header) {
+ $self->cgi_error("400 Bad request (malformed multipart POST)");
+ return;
+ }
my($param)= $header{'Content-Disposition'}=~/ name="?([^\";]*)"?/;
@@ -2766,7 +2859,7 @@ sub read_multipart {
# If no filename specified, then just read the data and assign it
# to our parameter list.
- unless ($filename) {
+ if ( !defined($filename) || $filename eq '' ) {
my($value) = $buffer->readBody;
push(@{$self->{$param}},$value);
next;
@@ -2784,13 +2877,16 @@ sub read_multipart {
last UPLOADS;
}
- $tmpfile = new TempFile;
- $tmp = $tmpfile->as_string;
-
- $filehandle = Fh->new($filename,$tmp,$PRIVATE_TEMPFILES);
-
+ # choose a relatively unpredictable tmpfile sequence number
+ my $seqno = unpack("%16C*",join('',localtime,values %ENV));
+ for (my $cnt=10;$cnt>0;$cnt--) {
+ next unless $tmpfile = new TempFile($seqno);
+ $tmp = $tmpfile->as_string;
+ last if defined($filehandle = Fh->new($filename,$tmp,$PRIVATE_TEMPFILES));
+ $seqno += int rand(100);
+ }
+ die "CGI open of tmpfile: $!\n" unless $filehandle;
$CGI::DefaultClass->binmode($filehandle) if $CGI::needs_binmode;
- chmod 0600,$tmp; # only the owner can tamper with it
my ($data);
local($\) = '';
@@ -2804,7 +2900,7 @@ sub read_multipart {
# Save some information about the uploaded file where we can get
# at it later.
- $self->{'.tmpfiles'}->{$filename}= {
+ $self->{'.tmpfiles'}->{fileno($filehandle)}= {
name => $tmpfile,
info => {%header},
};
@@ -2814,11 +2910,21 @@ sub read_multipart {
}
END_OF_FUNC
+'upload' =><<'END_OF_FUNC',
+sub upload {
+ my($self,$param_name) = self_or_default(@_);
+ my $param = $self->param($param_name);
+ return unless $param;
+ return unless ref($param) && fileno($param);
+ return $param;
+}
+END_OF_FUNC
+
'tmpFileName' => <<'END_OF_FUNC',
sub tmpFileName {
my($self,$filename) = self_or_default(@_);
- return $self->{'.tmpfiles'}->{$filename}->{name} ?
- $self->{'.tmpfiles'}->{$filename}->{name}->as_string
+ return $self->{'.tmpfiles'}->{fileno($filename)}->{name} ?
+ $self->{'.tmpfiles'}->{fileno($filename)}->{name}->as_string
: '';
}
END_OF_FUNC
@@ -2826,7 +2932,7 @@ END_OF_FUNC
'uploadInfo' => <<'END_OF_FUNC',
sub uploadInfo {
my($self,$filename) = self_or_default(@_);
- return $self->{'.tmpfiles'}->{$filename}->{info};
+ return $self->{'.tmpfiles'}->{fileno($filename)}->{info};
}
END_OF_FUNC
@@ -2878,7 +2984,7 @@ $AUTOLOADED_ROUTINES=<<'END_OF_AUTOLOAD';
sub asString {
my $self = shift;
# get rid of package name
- (my $i = $$self) =~ s/^\*(\w+::)+//;
+ (my $i = $$self) =~ s/^\*(\w+::fh\d{5})+//;
$i =~ s/\\(.)/$1/g;
return $i;
# BEGIN DEAD CODE
@@ -2904,12 +3010,10 @@ END_OF_FUNC
sub new {
my($pack,$name,$file,$delete) = @_;
require Fcntl unless defined &Fcntl::O_RDWR;
- ++$FH;
- my $ref = \*{'Fh::' . quotemeta($name)};
- sysopen($ref,$file,Fcntl::O_RDWR()|Fcntl::O_CREAT()|Fcntl::O_EXCL())
- || die "CGI open of $file: $!\n";
+ my $ref = \*{'Fh::' . ++$FH . quotemeta($name)};
+ sysopen($ref,$file,Fcntl::O_RDWR()|Fcntl::O_CREAT()|Fcntl::O_EXCL(),0600) || return;
unlink($file) if $delete;
- delete $Fh::{$FH};
+ CORE::delete $Fh::{$FH};
return bless $ref,$pack;
}
END_OF_FUNC
@@ -2976,7 +3080,7 @@ sub new {
# BUG: IE 3.01 on the Macintosh uses just the boundary -- not
# the two extra hyphens. We do a special case here on the user-agent!!!!
- $boundary = "--$boundary" unless CGI::user_agent('MSIE 3\.0[12]; ?Mac');
+ $boundary = "--$boundary" unless CGI::user_agent('MSIE\s+3\.0[12];\s*Mac');
} else { # otherwise we find it ourselves
my($old);
@@ -3175,15 +3279,25 @@ $MAC = $CGI::OS eq 'MACINTOSH';
my ($vol) = $MAC ? MacPerl::Volumes() =~ /:(.*)/ : "";
unless ($TMPDIRECTORY) {
@TEMP=("${SL}usr${SL}tmp","${SL}var${SL}tmp",
- "C:${SL}temp","${SL}tmp","${SL}temp","${vol}${SL}Temporary Items",
+ "C:${SL}temp","${SL}tmp","${SL}temp",
+ "${vol}${SL}Temporary Items","${SL}sys\$scratch",
"${SL}WWW_ROOT");
+ unshift(@TEMP,$ENV{'TMPDIR'}) if exists $ENV{'TMPDIR'};
+
+ #
+ # unshift(@TEMP,(getpwuid($<))[7].'/tmp') if $CGI::OS eq 'UNIX';
+ # Rob: getpwuid() is unfortunately UNIX specific. On brain dead OS'es this
+ # : can generate a 'getpwuid() not implemented' exception, even though
+ # : it's never called. Found under DOS/Win with the DJGPP perl port.
+ # : Refer to getpwuid() only at run-time if we're fortunate and have UNIX.
+ unshift(@TEMP,(eval {(getpwuid($<))[7]}).'/tmp') if $CGI::OS eq 'UNIX';
+
foreach (@TEMP) {
do {$TMPDIRECTORY = $_; last} if -d $_ && -w _;
}
}
$TMPDIRECTORY = $MAC ? "" : "." unless $TMPDIRECTORY;
-$SEQUENCE=0;
$MAXTRIES = 5000;
# cute feature, but overload implementation broke it
@@ -3199,14 +3313,15 @@ $AUTOLOADED_ROUTINES=<<'END_OF_AUTOLOAD';
'new' => <<'END_OF_FUNC',
sub new {
- my($package) = @_;
- my $directory;
- my $i;
- for ($i = 0; $i < $MAXTRIES; $i++) {
- $directory = sprintf("${TMPDIRECTORY}${SL}CGItemp%d%04d",${$},++$SEQUENCE);
- last if ! -f $directory;
+ my($package,$sequence) = @_;
+ my $filename;
+ for (my $i = 0; $i < $MAXTRIES; $i++) {
+ last if ! -f ($filename = sprintf("${TMPDIRECTORY}${SL}CGItemp%d",$sequence++));
}
- return bless \$directory;
+ # untaint the darn thing
+ return unless $filename =~ m!^([a-zA-Z0-9_ '":/\\]+)$!;
+ $filename = $1;
+ return bless \$filename;
}
END_OF_FUNC
@@ -3240,7 +3355,6 @@ if ($^W) {
$MultipartBuffer::CRLF;
$MultipartBuffer::TIMEOUT;
$MultipartBuffer::INITIAL_FILLUNIT;
- $TempFile::SEQUENCE;
EOF
;
}
@@ -3322,7 +3436,7 @@ script and restore it later.
For example, using the object oriented style, here is how you create
a simple "Hello World" HTML page:
- #!/usr/local/bin/perl
+ #!/usr/local/bin/perl -w
use CGI; # load CGI routines
$q = new CGI; # create new CGI object
print $q->header, # create the HTTP header
@@ -3640,6 +3754,36 @@ can manipulate in any way you like.
You can also use a named argument style using the B<-name> argument.
+=head2 FETCHING THE PARAMETER LIST AS A HASH:
+
+ $params = $q->Vars;
+ print $params->{'address'};
+ @foo = split("\0",$params->{'foo'});
+ %params = $q->Vars;
+
+ use CGI ':cgi-lib';
+ $params = Vars;
+
+Many people want to fetch the entire parameter list as a hash in which
+the keys are the names of the CGI parameters, and the values are the
+parameters' values. The Vars() method does this. Called in a scalar
+context, it returns the parameter list as a tied hash reference.
+Changing a key changes the value of the parameter in the underlying
+CGI parameter list. Called in an array context, it returns the
+parameter list as an ordinary hash. This allows you to read the
+contents of the parameter list, but not to change it.
+
+When using this, the thing you must watch out for are multivalued CGI
+parameters. Because a hash cannot distinguish between scalar and
+array context, multivalued parameters will be returned as a packed
+string, separated by the "\0" (null) character. You must split this
+packed string in order to get at the individual values. This is the
+convention introduced long ago by Steve Brenner in his cgi-lib.pl
+module for Perl version 4.
+
+If you wish to use Vars() as a function, import the I<:cgi-lib> set of
+function calls (also see the section on CGI-LIB compatibility).
+
=head2 SAVING THE STATE OF THE SCRIPT TO A FILE:
$query->save(FILEHANDLE)
@@ -3686,14 +3830,37 @@ a short example of creating multiple session records:
The file format used for save/restore is identical to that used by the
Whitehead Genome Center's data exchange format "Boulderio", and can be
manipulated and even databased using Boulderio utilities. See
-
- http://www.genome.wi.mit.edu/genome_software/other/boulder.html
+
+ http://stein.cshl.org/boulder/
for further details.
If you wish to use this method from the function-oriented (non-OO)
interface, the exported name for this method is B<save_parameters()>.
+=head2 RETRIEVING CGI ERRORS
+
+Errors can occur while processing user input, particularly when
+processing uploaded files. When these errors occur, CGI will stop
+processing and return an empty parameter list. You can test for
+the existence and nature of errors using the I<cgi_error()> function.
+The error messages are formatted as HTTP status codes. You can either
+incorporate the error text into an HTML page, or use it as the value
+of the HTTP status:
+
+ my $error = $q->cgi_error;
+ if ($error) {
+ print $q->header(-status=>$error),
+ $q->start_html('Problems'),
+ $q->h2('Request not processed'),
+ $q->strong($error);
+ exit 0;
+ }
+
+When using the function-oriented interface (see the next section),
+errors may only occur the first time you call I<param()>. Be ready
+for this!
+
=head2 USING THE FUNCTION-ORIENTED INTERFACE
To use the function-oriented interface, you must specify which CGI.pm
@@ -3754,7 +3921,7 @@ Import "standard" features, 'html2', 'html3', 'form' and 'cgi'.
=item B<:all>
Import all the available methods. For the full list, see the CGI.pm
-code, where the variable %TAGS is defined.
+code, where the variable %EXPORT_TAGS is defined.
=back
@@ -3902,20 +4069,40 @@ input, this should work:
use CGI qw(-no_debug :standard);
restore_parameters(join('&',@ARGV));
-
+
See the section on debugging for more details.
=item -private_tempfiles
-CGI.pm can process uploaded file. Ordinarily it spools the
-uploaded file to a temporary directory, then deletes the file
-when done. However, this opens the risk of eavesdropping as
-described in the file upload section.
-Another CGI script author could peek at this data during the
-upload, even if it is confidential information. On Unix systems,
-the -private_tempfiles pragma will cause the temporary file to be unlinked as soon
-as it is opened and before any data is written into it,
-eliminating the risk of eavesdropping.
+CGI.pm can process uploaded file. Ordinarily it spools the uploaded
+file to a temporary directory, then deletes the file when done.
+However, this opens the risk of eavesdropping as described in the file
+upload section. Another CGI script author could peek at this data
+during the upload, even if it is confidential information. On Unix
+systems, the -private_tempfiles pragma will cause the temporary file
+to be unlinked as soon as it is opened and before any data is written
+into it, reducing, but not eliminating the risk of eavesdropping
+(there is still a potential race condition). To make life harder for
+the attacker, the program chooses tempfile names by calculating a 32
+bit checksum of the incoming HTTP headers.
+
+To ensure that the temporary file cannot be read by other CGI scripts,
+use suEXEC or a CGI wrapper program to run your script. The temporary
+file is created with mode 0600 (neither world nor group readable).
+
+The temporary directory is selected using the following algorithm:
+
+ 1. if the current user (e.g. "nobody") has a directory named
+ "tmp" in its home directory, use that (Unix systems only).
+
+ 2. if the environment variable TMPDIR exists, use the location
+ indicated.
+
+ 3. Otherwise try the locations /usr/tmp, /var/tmp, C:\temp,
+ /tmp, /temp, ::Temporary Items, and \WWW_ROOT.
+
+Each of these locations is checked that it is a directory and is
+writable. If not, the algorithm tries the next choice.
=back
@@ -4135,17 +4322,17 @@ You can place other arbitrary HTML elements to the <HEAD> section with the
B<-head> tag. For example, to place the rarely-used <LINK> element in the
head section, use this:
- print $q->start_html(-head=>Link({-rel=>'next',
- -href=>'http://www.capricorn.com/s2.html'}));
+ print start_html(-head=>Link({-rel=>'next',
+ -href=>'http://www.capricorn.com/s2.html'}));
To incorporate multiple HTML elements into the <HEAD> section, just pass an
array reference:
- print $q->start_html(-head=>[
- Link({-rel=>'next',
- -href=>'http://www.capricorn.com/s2.html'}),
- Link({-rel=>'previous',
- -href=>'http://www.capricorn.com/s1.html'})
+ print start_html(-head=>[
+ Link({-rel=>'next',
+ -href=>'http://www.capricorn.com/s2.html'}),
+ Link({-rel=>'previous',
+ -href=>'http://www.capricorn.com/s1.html'})
]
);
@@ -4205,8 +4392,8 @@ one or more of -language, -src, or -code:
);
print $q->(-title=>'The Riddle of the Sphinx',
- -script=>{-language=>'PERLSCRIPT'},
- -code=>'print "hello world!\n;"'
+ -script=>{-language=>'PERLSCRIPT',
+ -code=>'print "hello world!\n;"'}
);
@@ -4215,19 +4402,19 @@ header. Just pass the list of script sections as an array reference.
this allows you to specify different source files for different dialects
of JavaScript. Example:
- print $q-&gt;start_html(-title=&gt;'The Riddle of the Sphinx',
- -script=&gt;[
- { -language =&gt; 'JavaScript1.0',
- -src =&gt; '/javascript/utilities10.js'
+ print $q->start_html(-title=>'The Riddle of the Sphinx',
+ -script=>[
+ { -language => 'JavaScript1.0',
+ -src => '/javascript/utilities10.js'
},
- { -language =&gt; 'JavaScript1.1',
- -src =&gt; '/javascript/utilities11.js'
+ { -language => 'JavaScript1.1',
+ -src => '/javascript/utilities11.js'
},
- { -language =&gt; 'JavaScript1.2',
- -src =&gt; '/javascript/utilities12.js'
+ { -language => 'JavaScript1.2',
+ -src => '/javascript/utilities12.js'
},
- { -language =&gt; 'JavaScript28.2',
- -src =&gt; '/javascript/utilities219.js'
+ { -language => 'JavaScript28.2',
+ -src => '/javascript/utilities219.js'
}
]
);
@@ -4382,7 +4569,7 @@ This example shows how to use the HTML methods:
print $q->blockquote(
"Many years ago on the island of",
$q->a({href=>"http://crete.org/"},"Crete"),
- "there lived a minotaur named",
+ "there lived a Minotaur named",
$q->strong("Fred."),
),
$q->hr;
@@ -4429,7 +4616,7 @@ and values of the associative array become the HTML tag's attributes:
"Open a new frame");
<A HREF="fred.html",TARGET="_new">Open a new frame</A>
-
+
You may dispense with the dashes in front of the attribute names if
you prefer:
@@ -4447,7 +4634,7 @@ Prior to CGI.pm version 2.41, providing an empty ('') string as an
attribute argument was the same as providing undef. However, this has
changed in order to accommodate those who want to create tags of the form
<IMG ALT="">. The difference is shown in these two pieces of code:
-
+
CODE RESULT
img({alt=>undef}) <IMG ALT>
img({alt=>''}) <IMT ALT="">
@@ -4581,7 +4768,7 @@ autoEscape() method with a false value immediately after creating the CGI object
$query = new CGI;
$query->autoEscape(undef);
-
+
=head2 CREATING AN ISINDEX TAG
@@ -4611,7 +4798,7 @@ default is to process the query with the current script.
startform() will return a <FORM> tag with the optional method,
action and form encoding that you specify. The defaults are:
-
+
method: POST
action: this script
enctype: application/x-www-form-urlencoded
@@ -4820,23 +5007,16 @@ field will accept (-maxlength).
=back
When the form is processed, you can retrieve the entered filename
-by calling param().
+by calling param():
$filename = $query->param('uploaded_file');
-In Netscape Navigator 2.0, the filename that gets returned is the full
-local filename on the B<remote user's> machine. If the remote user is
-on a Unix machine, the filename will follow Unix conventions:
-
- /path/to/the/file
-
-On an MS-DOS/Windows and OS/2 machines, the filename will follow DOS conventions:
-
- C:\PATH\TO\THE\FILE.MSW
-
-On a Macintosh machine, the filename will follow Mac conventions:
-
- HD 40:Desktop Folder:Sort Through:Reminders
+Different browsers will return slightly different things for the
+name. Some browsers return the filename only. Others return the full
+path to the file, using the path conventions of the user's machine.
+Regardless, the name returned is always the name of the file on the
+I<user's> machine, and is unrelated to the name of the temporary file
+that CGI.pm creates during upload spooling (see below).
The filename returned is also a file handle. You can read the contents
of the file using standard Perl file reading calls:
@@ -4852,6 +5032,25 @@ of the file using standard Perl file reading calls:
print OUTFILE $buffer;
}
+However, there are problems with the dual nature of the upload fields.
+If you C<use strict>, then Perl will complain when you try to use a
+string as a filehandle. You can get around this by placing the file
+reading code in a block containing the C<no strict> pragma. More
+seriously, it is possible for the remote user to type garbage into the
+upload field, in which case what you get from param() is not a
+filehandle at all, but a string.
+
+To be safe, use the I<upload()> function (new in version 2.47). When
+called with the name of an upload field, I<upload()> returns a
+filehandle, or undef if the parameter is not a valid filehandle.
+
+ $fh = $query->upload('uploaded_file');
+ while (<$fh>) {
+ print;
+ }
+
+This is the recommended idiom.
+
When a file is uploaded the browser usually sends along some
information along with it in the format of headers. The information
usually includes the MIME content type. Future browsers may send
@@ -4867,7 +5066,25 @@ an associative array containing all the document headers.
If you are using a machine that recognizes "text" and "binary" data
modes, be sure to understand when and how to use them (see the Camel book).
-Otherwise you may find that binary files are corrupted during file uploads.
+Otherwise you may find that binary files are corrupted during file
+uploads.
+
+There are occasionally problems involving parsing the uploaded file.
+This usually happens when the user presses "Stop" before the upload is
+finished. In this case, CGI.pm will return undef for the name of the
+uploaded file and set I<cgi_error()> to the string "400 Bad request
+(malformed multipart POST)". This error message is designed so that
+you can incorporate it into a status code to be sent to the browser.
+Example:
+
+ $file = $query->upload('uploaded_file');
+ if (!$file && $query->cgi_error) {
+ print $query->header(-status=>$query->cgi_error);
+ exit 0;
+ }
+
+You are free to create a custom HTML page to complain about the error,
+if you wish.
JAVASCRIPTING: The B<-onChange>, B<-onFocus>, B<-onBlur>,
B<-onMouseOver>, B<-onMouseOut> and B<-onSelect> parameters are
@@ -5025,7 +5242,7 @@ handlers are called.
print $query->checkbox_group(-name=>'group_name',
-values=>['eenie','meenie','minie','moe'],
-rows=2,-columns=>2);
-
+
checkbox_group() creates a list of checkboxes that are related
by the same name.
@@ -5563,7 +5780,7 @@ documentation in Netscape's home pages for details
=item 2. Specify the destination for the document in the HTTP header
You may provide a B<-target> parameter to the header() method:
-
+
print $q->header(-target=>'ResultsWindow');
This will tell the browser to load the output of your script into the
@@ -5700,7 +5917,7 @@ name/value pairs formatted nicely as a nested list. This is useful
for debugging purposes:
print $query->dump
-
+
Produces something that looks like:
@@ -5838,6 +6055,32 @@ Newer browsers do not report the user name for privacy reasons!
Returns the method used to access your script, usually
one of 'POST', 'GET' or 'HEAD'.
+=item B<content_type()>
+
+Returns the content_type of data submitted in a POST, generally
+multipart/form-data or application/x-www-form-urlencoded
+
+=item B<http()>
+
+Called with no arguments returns the list of HTTP environment
+variables, including such things as HTTP_USER_AGENT,
+HTTP_ACCEPT_LANGUAGE, and HTTP_ACCEPT_CHARSET, corresponding to the
+like-named HTTP header fields in the request. Called with the name of
+an HTTP header field, returns its value. Capitalization and the use
+of hyphens versus underscores are not significant.
+
+For example, all three of these examples are equivalent:
+
+ $requested_language = $q->http('Accept-language');
+ $requested_language = $q->http('Accept_language');
+ $requested_language = $q->http('HTTP_ACCEPT_LANGUAGE');
+
+=item B<https()>
+
+The same as I<http()>, but operates on the HTTPS environment variables
+present when the SSL protocol is in effect. Can be used to determine
+whether SSL is turned on.
+
=back
=head1 USING NPH SCRIPTS
@@ -5919,7 +6162,7 @@ a second, and begins again.
=over 4
=item multipart_init()
-
+
multipart_init(-boundary=>$boundary);
Initialize the multipart system. The -boundary argument specifies
@@ -6014,18 +6257,31 @@ initialize_globals().
=back
-Since an attempt to send a POST larger than $POST_MAX bytes
-will cause a fatal error, you might want to use CGI::Carp to echo the
-fatal error message to the browser window as shown in the example
-above. Otherwise the remote user will see only a generic "Internal
-Server" error message. See the L<CGI::Carp> manual page for more
-details.
+An attempt to send a POST larger than $POST_MAX bytes will cause
+I<param()> to return an empty CGI parameter list. You can test for
+this event by checking I<cgi_error()>, either after you create the CGI
+object or, if you are using the function-oriented interface, call
+<param()> for the first time. If the POST was intercepted, then
+cgi_error() will return the message "413 POST too large".
+
+This error message is actually defined by the HTTP protocol, and is
+designed to be returned to the browser as the CGI script's status
+ code. For example:
+
+ $uploaded_file = param('upload');
+ if (!$uploaded_file && cgi_error()) {
+ print header(-status=>cgi_error());
+ exit 0;
+ }
+
+However it isn't clear that any browser currently knows what to do
+with this status code. It might be better just to create an
+HTML page that warns the user of the problem.
=head1 COMPATIBILITY WITH CGI-LIB.PL
-To make it easier to port existing programs that use cgi-lib.pl
-the compatibility routine "ReadParse" is provided. Porting is
-simple:
+To make it easier to port existing programs that use cgi-lib.pl the
+compatibility routine "ReadParse" is provided. Porting is simple:
OLD VERSION
require "cgi-lib.pl";
@@ -6123,9 +6379,9 @@ for suggestions and bug fixes.
#!/usr/local/bin/perl
-
+
use CGI;
-
+
$query = new CGI;
print $query->header;
@@ -6135,35 +6391,35 @@ for suggestions and bug fixes.
&do_work($query);
&print_tail;
print $query->end_html;
-
+
sub print_prompt {
my($query) = @_;
-
+
print $query->startform;
print "<EM>What's your name?</EM><BR>";
print $query->textfield('name');
print $query->checkbox('Not my real name');
-
+
print "<P><EM>Where can you find English Sparrows?</EM><BR>";
print $query->checkbox_group(
-name=>'Sparrow locations',
-values=>[England,France,Spain,Asia,Hoboken],
-linebreak=>'yes',
-defaults=>[England,Asia]);
-
+
print "<P><EM>How far can they fly?</EM><BR>",
$query->radio_group(
-name=>'how far',
-values=>['10 ft','1 mile','10 miles','real far'],
-default=>'1 mile');
-
+
print "<P><EM>What's your favorite color?</EM> ";
print $query->popup_menu(-name=>'Color',
-values=>['black','brown','red','yellow'],
-default=>'red');
-
+
print $query->hidden('Reference','Monty Python and the Holy Grail');
-
+
print "<P><EM>What have you got there?</EM><BR>";
print $query->scrolling_list(
-name=>'possessions',
@@ -6171,19 +6427,19 @@ for suggestions and bug fixes.
'A Sword','A Ticket'],
-size=>5,
-multiple=>'true');
-
+
print "<P><EM>Any parting comments?</EM><BR>";
print $query->textarea(-name=>'Comments',
-rows=>10,
-columns=>50);
-
- print "<P>",$query->Reset;
+
+ print "<P>",$query->reset;
print $query->submit('Action','Shout');
print $query->submit('Action','Scream');
print $query->endform;
print "<HR>\n";
}
-
+
sub do_work {
my($query) = @_;
my(@values,$key);
@@ -6196,7 +6452,7 @@ for suggestions and bug fixes.
print join(", ",@values),"<BR>\n";
}
}
-
+
sub print_tail {
print <<END;
<HR>
diff --git a/contrib/perl5/lib/CGI/Apache.pm b/contrib/perl5/lib/CGI/Apache.pm
index 82a3669..dced866 100644
--- a/contrib/perl5/lib/CGI/Apache.pm
+++ b/contrib/perl5/lib/CGI/Apache.pm
@@ -1,103 +1,23 @@
-package CGI::Apache;
-use Apache ();
-use vars qw(@ISA $VERSION);
-require CGI;
-@ISA = qw(CGI);
-
-$VERSION = (qw$Revision: 1.1 $)[1];
-$CGI::DefaultClass = 'CGI::Apache';
-$CGI::Apache::AutoloadClass = 'CGI';
-
-sub import {
- my $self = shift;
- my ($callpack, $callfile, $callline) = caller;
- ${"${callpack}::AutoloadClass"} = 'CGI';
-}
-
-sub new {
- my($class) = shift;
- my($r) = Apache->request;
- %ENV = $r->cgi_env unless defined $ENV{GATEWAY_INTERFACE}; #PerlSetupEnv On
- my $self = $class->SUPER::new(@_);
- $self->{'.req'} = $r;
- $self;
-}
-
-sub header {
- my ($self,@rest) = CGI::self_or_default(@_);
- my $r = $self->{'.req'};
- $r->basic_http_header;
- return CGI::header($self,@rest);
-}
-
-sub print {
- my($self,@rest) = CGI::self_or_default(@_);
- $self->{'.req'}->print(@rest);
-}
-
-sub read_from_client {
- my($self, $fh, $buff, $len, $offset) = @_;
- my $r = $self->{'.req'} || Apache->request;
- return $r->read($$buff, $len, $offset);
-}
-
-sub new_MultipartBuffer {
- my $self = shift;
- my $new = CGI::Apache::MultipartBuffer->new($self, @_);
- $new->{'.req'} = $self->{'.req'} || Apache->request;
- return $new;
-}
-
-package CGI::Apache::MultipartBuffer;
-use vars qw(@ISA);
-@ISA = qw(MultipartBuffer);
-
-$CGI::Apache::MultipartBuffer::AutoloadClass = 'MultipartBuffer';
-*CGI::Apache::MultipartBuffer::read_from_client =
- \&CGI::Apache::read_from_client;
-
-
+use CGI;
1;
-
__END__
=head1 NAME
-CGI::Apache - Make things work with CGI.pm against Perl-Apache API
+CGI::Apache - Backward compatibility module for CGI.pm
=head1 SYNOPSIS
- require CGI::Apache;
-
- my $q = new Apache::CGI;
+Do not use this module. It is deprecated.
- $q->print($q->header);
-
- #do things just like you do with CGI.pm
+=head1 ABSTRACT
=head1 DESCRIPTION
-When using the Perl-Apache API, your applications are faster, but the
-environment is different than CGI.
-This module attempts to set-up that environment as best it can.
-
-=head1 NOTE 1
+=head1 AUTHOR INFORMATION
-This module used to be named Apache::CGI. Sorry for the confusion.
-
-=head1 NOTE 2
-
-If you're going to inherit from this class, make sure to "use" it
-after your package declaration rather than "require" it. This is
-because CGI.pm does a little magic during the import() step in order
-to make autoloading work correctly.
+=head1 BUGS
=head1 SEE ALSO
-perl(1), Apache(3), CGI(3)
-
-=head1 AUTHOR
-
-Doug MacEachern E<lt>dougm@osf.orgE<gt>, hacked over by Andreas KE<ouml>nig E<lt>a.koenig@mind.deE<gt>, modified by Lincoln Stein <lt>lstein@genome.wi.mit.edu<gt>
-
=cut
diff --git a/contrib/perl5/lib/CGI/Carp.pm b/contrib/perl5/lib/CGI/Carp.pm
index dfae1a6..90e9552 100644
--- a/contrib/perl5/lib/CGI/Carp.pm
+++ b/contrib/perl5/lib/CGI/Carp.pm
@@ -192,9 +192,16 @@ use Carp;
@EXPORT = qw(confess croak carp);
@EXPORT_OK = qw(carpout fatalsToBrowser wrap set_message cluck);
+BEGIN {
+ $] >= 5.005
+ ? eval q#sub ineval { $^S }#
+ : eval q#sub ineval { _longmess() =~ /eval [\{\']/m }#;
+ $@ and die;
+}
+
$main::SIG{__WARN__}=\&CGI::Carp::warn;
$main::SIG{__DIE__}=\&CGI::Carp::die;
-$CGI::Carp::VERSION = '1.13';
+$CGI::Carp::VERSION = '1.14';
$CGI::Carp::CUSTOM_MSG = undef;
# fancy import routine detects and handles 'errorWrap' specially.
@@ -216,7 +223,7 @@ sub realdie { CORE::die(@_); }
sub id {
my $level = shift;
my($pack,$file,$line,$sub) = caller($level);
- my($id) = $file=~m|([^/]+)$|;
+ my($id) = $file=~m|([^/]+)\z|;
return ($file,$line,$id);
}
@@ -228,7 +235,7 @@ sub stamp {
$id = $file;
($pack,$file) = caller($frame++);
} until !$file;
- ($id) = $id=~m|([^/]+)$|;
+ ($id) = $id=~m|([^/]+)\z|;
return "[$time] $id: ";
}
@@ -251,14 +258,15 @@ sub _longmess {
}
sub die {
- my $message = shift;
- my $time = scalar(localtime);
- my($file,$line,$id) = id(1);
- $message .= " at $file line $line." unless $message=~/\n$/;
- &fatalsToBrowser($message) if $WRAP && _longmess() !~ /eval [{\']/m;
- my $stamp = stamp;
- $message=~s/^/$stamp/gm;
- realdie $message;
+ realdie @_ if ineval;
+ my $message = shift;
+ my $time = scalar(localtime);
+ my($file,$line,$id) = id(1);
+ $message .= " at $file line $line." unless $message=~/\n$/;
+ &fatalsToBrowser($message) if $WRAP;
+ my $stamp = stamp;
+ $message=~s/^/$stamp/gm;
+ realdie $message;
}
sub set_message {
diff --git a/contrib/perl5/lib/CGI/Cookie.pm b/contrib/perl5/lib/CGI/Cookie.pm
index 204d67b..bd3c3d8 100644
--- a/contrib/perl5/lib/CGI/Cookie.pm
+++ b/contrib/perl5/lib/CGI/Cookie.pm
@@ -7,19 +7,15 @@ package CGI::Cookie;
# documentation in manual or html file format (these utilities are part of the
# Perl 5 distribution).
-# Copyright 1995,1996, Lincoln D. Stein. All rights reserved.
+# Copyright 1995-1999, Lincoln D. Stein. All rights reserved.
# It may be used and modified freely, but I do request that this copyright
# notice remain attached to the file. You may modify this module as you
# wish, but if you redistribute a modified version, please attach a note
# listing the modifications you have made.
-# The most recent version and complete docs are available at:
-# http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html
-# ftp://ftp-genome.wi.mit.edu/pub/software/WWW/
+$CGI::Cookie::VERSION='1.12';
-$CGI::Cookie::VERSION='1.06';
-
-use CGI;
+use CGI qw(-no_debug);
use overload '""' => \&as_string,
'cmp' => \&compare,
'fallback'=>1;
@@ -100,10 +96,13 @@ sub new {
'value'=>[@values],
},$class;
- # IE requires the path to be present for some reason.
- ($path = $ENV{'SCRIPT_NAME'})=~s![^/]+$!! unless $path;
+ # IE requires the path and domain to be present for some reason.
+ $path = CGI::url(-absolute=>1) unless defined $path;
+# however, this breaks networks which use host tables without fully qualified
+# names, so we comment it out.
+# $domain = CGI::virtual_host() unless defined $domain;
- $self->path($path) if defined $path;
+ $self->path($path) if defined $path;
$self->domain($domain) if defined $domain;
$self->secure($secure) if defined $secure;
$self->expires($expires) if defined $expires;
@@ -251,10 +250,10 @@ cookie originated from.
If you provide a cookie path attribute, the browser will check it
against your script's URL before returning the cookie. For example,
if you specify the path "/cgi-bin", then the cookie will be returned
-to each of the scripts "/cgi-bin/tally.pl", "/cgi-bin/order.pl",
-and "/cgi-bin/customer_service/complain.pl", but not to the script
-"/cgi-private/site_admin.pl". By default, path is set to "/", which
-causes the cookie to be sent to any CGI script on your site.
+to each of the scripts "/cgi-bin/tally.pl", "/cgi-bin/order.pl", and
+"/cgi-bin/customer_service/complain.pl", but not to the script
+"/cgi-private/site_admin.pl". By default, the path is set to your
+script, so that only it will receive the cookie.
=item B<4. secure flag>
@@ -344,7 +343,7 @@ can iterate through the cookies this way:
In a scalar context, fetch() returns a hash reference, which may be more
efficient if you are manipulating multiple cookies.
-
+
CGI.pm uses the URL escaping methods to save and restore reserved characters
in its cookies. If you are trying to retrieve a cookie set by a foreign server,
this escaping method may trip you up. Use raw_fetch() instead, which has the
@@ -415,5 +414,5 @@ This section intentionally left blank.
=head1 SEE ALSO
L<CGI::Carp>, L<CGI>
-
+
=cut
diff --git a/contrib/perl5/lib/CGI/Fast.pm b/contrib/perl5/lib/CGI/Fast.pm
index a39fe05..b485186 100644
--- a/contrib/perl5/lib/CGI/Fast.pm
+++ b/contrib/perl5/lib/CGI/Fast.pm
@@ -16,7 +16,7 @@ package CGI::Fast;
# The most recent version and complete docs are available at:
# http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html
# ftp://ftp-genome.wi.mit.edu/pub/software/WWW/
-$CGI::Fast::VERSION='1.01';
+$CGI::Fast::VERSION='1.02';
use CGI;
use FCGI;
@@ -170,5 +170,5 @@ This section intentionally left blank.
=head1 SEE ALSO
L<CGI::Carp>, L<CGI>
-
+
=cut
diff --git a/contrib/perl5/lib/CGI/Pretty.pm b/contrib/perl5/lib/CGI/Pretty.pm
new file mode 100644
index 0000000..4f2eed4
--- /dev/null
+++ b/contrib/perl5/lib/CGI/Pretty.pm
@@ -0,0 +1,236 @@
+package CGI::Pretty;
+
+# See the bottom of this file for the POD documentation. Search for the
+# string '=head'.
+
+# You can run this file through either pod2man or pod2html to produce pretty
+# documentation in manual or html file format (these utilities are part of the
+# Perl 5 distribution).
+
+use strict;
+use CGI ();
+
+$CGI::Pretty::VERSION = '1.03';
+$CGI::DefaultClass = __PACKAGE__;
+$CGI::Pretty::AutoloadClass = 'CGI';
+@CGI::Pretty::ISA = qw( CGI );
+
+initialize_globals();
+
+sub _prettyPrint {
+ my $input = shift;
+
+ foreach my $i ( @CGI::Pretty::AS_IS ) {
+ if ( $$input =~ /<\/$i>/si ) {
+ my ( $a, $b, $c, $d, $e ) = $$input =~ /(.*)<$i(\s?)(.*?)>(.*?)<\/$i>(.*)/si;
+ _prettyPrint( \$a );
+ _prettyPrint( \$e );
+
+ $$input = "$a<$i$b$c>$d</$i>$e";
+ return;
+ }
+ }
+ $$input =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g;
+}
+
+sub comment {
+ my($self,@p) = CGI::self_or_CGI(@_);
+
+ my $s = "@p";
+ $s =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g;
+
+ return $self->SUPER::comment( "$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT$s$CGI::Pretty::LINEBREAK" ) . $CGI::Pretty::LINEBREAK;
+}
+
+sub _make_tag_func {
+ my ($self,$tagname) = @_;
+ return $self->SUPER::_make_tag_func($tagname) if $tagname=~/^(start|end)_/;
+
+ # As Lincoln as noted, the last else clause is VERY hairy, and it
+ # took me a while to figure out what I was trying to do.
+ # What it does is look for tags that shouldn't be indented (e.g. PRE)
+ # and makes sure that when we nest tags, those tags don't get
+ # indented.
+ # For an example, try print td( pre( "hello\nworld" ) );
+ # If we didn't care about stuff like that, the code would be
+ # MUCH simpler. BTW: I won't claim to be a regular expression
+ # guru, so if anybody wants to contribute something that would
+ # be quicker, easier to read, etc, I would be more than
+ # willing to put it in - Brian
+
+ return qq{
+ sub $tagname {
+ # handle various cases in which we're called
+ # most of this bizarre stuff is to avoid -w errors
+ shift if \$_[0] &&
+ (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) ||
+ (ref(\$_[0]) &&
+ (substr(ref(\$_[0]),0,3) eq 'CGI' ||
+ UNIVERSAL::isa(\$_[0],'CGI')));
+
+ my(\$attr) = '';
+ if (ref(\$_[0]) && ref(\$_[0]) eq 'HASH') {
+ my(\@attr) = make_attributes('',shift);
+ \$attr = " \@attr" if \@attr;
+ }
+
+ my(\$tag,\$untag) = ("\U<$tagname\E\$attr>","\U</$tagname>\E");
+ return \$tag unless \@_;
+
+ my \@result;
+ my \$NON_PRETTIFY_ENDTAGS = join "", map { "</\$_>" } \@CGI::Pretty::AS_IS;
+
+ if ( \$NON_PRETTIFY_ENDTAGS =~ /\$untag/ ) {
+ \@result = map { "\$tag\$_\$untag\$CGI::Pretty::LINEBREAK" }
+ (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_";
+ }
+ else {
+ \@result = map {
+ chomp;
+ if ( \$_ !~ /<\\// ) {
+ s/\$CGI::Pretty::LINEBREAK/\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT/g;
+ }
+ else {
+ my \$tmp = \$_;
+ CGI::Pretty::_prettyPrint( \\\$tmp );
+ \$_ = \$tmp;
+ }
+ "\$tag\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT\$_\$CGI::Pretty::LINEBREAK\$untag\$CGI::Pretty::LINEBREAK" }
+ (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_";
+ }
+ local \$" = "";
+ return "\@result";
+ }
+ };
+}
+
+sub start_html {
+ return CGI::start_html( @_ ) . $CGI::Pretty::LINEBREAK;
+}
+
+sub end_html {
+ return CGI::end_html( @_ ) . $CGI::Pretty::LINEBREAK;
+}
+
+sub new {
+ my $class = shift;
+ my $this = $class->SUPER::new( @_ );
+
+ Apache->request->register_cleanup(\&CGI::Pretty::_reset_globals) if ($CGI::MOD_PERL);
+ $class->_reset_globals if $CGI::PERLEX;
+
+ return bless $this, $class;
+}
+
+sub initialize_globals {
+ # This is the string used for indentation of tags
+ $CGI::Pretty::INDENT = "\t";
+
+ # This is the string used for seperation between tags
+ $CGI::Pretty::LINEBREAK = "\n";
+
+ # These tags are not prettify'd.
+ @CGI::Pretty::AS_IS = qw( A PRE CODE SCRIPT TEXTAREA );
+
+ 1;
+}
+sub _reset_globals { initialize_globals(); }
+
+1;
+
+=head1 NAME
+
+CGI::Pretty - module to produce nicely formatted HTML code
+
+=head1 SYNOPSIS
+
+ use CGI::Pretty qw( :html3 );
+
+ # Print a table with a single data element
+ print table( TR( td( "foo" ) ) );
+
+=head1 DESCRIPTION
+
+CGI::Pretty is a module that derives from CGI. It's sole function is to
+allow users of CGI to output nicely formatted HTML code.
+
+When using the CGI module, the following code:
+ print table( TR( td( "foo" ) ) );
+
+produces the following output:
+ <TABLE><TR><TD>foo</TD></TR></TABLE>
+
+If a user were to create a table consisting of many rows and many columns,
+the resultant HTML code would be quite difficult to read since it has no
+carriage returns or indentation.
+
+CGI::Pretty fixes this problem. What it does is add a carriage
+return and indentation to the HTML code so that one can easily read
+it.
+
+ print table( TR( td( "foo" ) ) );
+
+now produces the following output:
+ <TABLE>
+ <TR>
+ <TD>
+ foo
+ </TD>
+ </TR>
+ </TABLE>
+
+
+=head2 Tags that won't be formatted
+
+The <A> and <PRE> tags are not formatted. If these tags were formatted, the
+user would see the extra indentation on the web browser causing the page to
+look different than what would be expected. If you wish to add more tags to
+the list of tags that are not to be touched, push them onto the C<@AS_IS> array:
+
+ push @CGI::Pretty::AS_IS,qw(CODE XMP);
+
+=head2 Customizing the Indenting
+
+If you wish to have your own personal style of indenting, you can change the
+C<$INDENT> variable:
+
+ $CGI::Pretty::INDENT = "\t\t";
+
+would cause the indents to be two tabs.
+
+Similarly, if you wish to have more space between lines, you may change the
+C<$LINEBREAK> variable:
+
+ $CGI::Pretty::LINEBREAK = "\n\n";
+
+would create two carriage returns between lines.
+
+If you decide you want to use the regular CGI indenting, you can easily do
+the following:
+
+ $CGI::Pretty::INDENT = $CGI::Pretty::LINEBREAK = "";
+
+=head1 BUGS
+
+This section intentionally left blank.
+
+=head1 AUTHOR
+
+Brian Paulsen <Brian@ThePaulsens.com>, with minor modifications by
+Lincoln Stein <lstein@cshl.org> for incorporation into the CGI.pm
+distribution.
+
+Copyright 1999, Brian Paulsen. All rights reserved.
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+Bug reports and comments to Brian@ThePaulsens.com. You can also write
+to lstein@cshl.org, but this code looks pretty hairy to me and I'm not
+sure I understand it!
+
+=head1 SEE ALSO
+
+L<CGI>
+
+=cut
diff --git a/contrib/perl5/lib/CGI/Push.pm b/contrib/perl5/lib/CGI/Push.pm
index e4a66ae..80683a2 100644
--- a/contrib/perl5/lib/CGI/Push.pm
+++ b/contrib/perl5/lib/CGI/Push.pm
@@ -257,7 +257,7 @@ as shown below:
h1('testing'),
"This page called $counter times";
}
-
+
sub my_last_page {
header(-refresh=>'5; URL=http://somewhere.else/finished.html',
-type=>'text/html'),
diff --git a/contrib/perl5/lib/CGI/Switch.pm b/contrib/perl5/lib/CGI/Switch.pm
index 8afc6a6..b16b9c0 100644
--- a/contrib/perl5/lib/CGI/Switch.pm
+++ b/contrib/perl5/lib/CGI/Switch.pm
@@ -1,71 +1,24 @@
-package CGI::Switch;
-use Carp;
-use strict;
-use vars qw($VERSION @Pref);
-$VERSION = '0.06';
-@Pref = qw(CGI::Apache CGI); #default
-
-sub import {
- my($self,@arg) = @_;
- @Pref = @arg if @arg;
-}
-
-sub new {
- shift;
- my($file,$pack);
- for $pack (@Pref) {
- ($file = $pack) =~ s|::|/|g;
- eval { require "$file.pm"; };
- if ($@) {
-#XXX warn $@;
- next;
- } else {
-#XXX warn "Going to try $pack\->new\n";
- my $obj;
- eval {$obj = $pack->new(@_)};
- if ($@) {
-#XXX warn $@;
- } else {
- return $obj;
- }
- }
- }
- Carp::croak "Couldn't load+construct any of @Pref\n";
-}
-
+use CGI;
1;
+
__END__
=head1 NAME
-CGI::Switch - Try more than one constructors and return the first object available
+CGI::Switch - Backward compatibility module for defunct CGI::Switch
=head1 SYNOPSIS
-
- use CGISwitch;
-
- -or-
+Do not use this module. It is deprecated.
- use CGI::Switch This, That, CGI::XA, Foo, Bar, CGI;
-
- my $q = new CGI::Switch;
+=head1 ABSTRACT
=head1 DESCRIPTION
-Per default the new() method tries to call new() in the three packages
-Apache::CGI, CGI::XA, and CGI. It returns the first CGI object it
-succeeds with.
+=head1 AUTHOR INFORMATION
-The import method allows you to set up the default order of the
-modules to be tested.
+=head1 BUGS
=head1 SEE ALSO
-perl(1), Apache(3), CGI(3), CGI::XA(3)
-
-=head1 AUTHOR
-
-Andreas KE<ouml>nig E<lt>a.koenig@mind.deE<gt>
-
=cut
diff --git a/contrib/perl5/lib/CPAN.pm b/contrib/perl5/lib/CPAN.pm
index 2276943..84dfd31 100644
--- a/contrib/perl5/lib/CPAN.pm
+++ b/contrib/perl5/lib/CPAN.pm
@@ -6,13 +6,13 @@ use vars qw{$Try_autoload
$Frontend $Defaultsite
}; #};
-$VERSION = '1.48';
+$VERSION = '1.52';
-# $Id: CPAN.pm,v 1.260 1999/03/06 19:31:02 k Exp $
+# $Id: CPAN.pm,v 1.276 2000/01/08 15:29:46 k Exp $
# only used during development:
$Revision = "";
-# $Revision = "[".substr(q$Revision: 1.260 $, 10)."]";
+# $Revision = "[".substr(q$Revision: 1.276 $, 10)."]";
use Carp ();
use Config ();
@@ -61,7 +61,7 @@ use strict qw(vars);
@CPAN::ISA = qw(CPAN::Debug Exporter);
@EXPORT = qw(
- autobundle bundle expand force get
+ autobundle bundle expand force get cvs_import
install make readme recompile shell test clean
);
@@ -90,7 +90,7 @@ sub AUTOLOAD {
#-> sub CPAN::shell ;
sub shell {
my($self) = @_;
- $Suppress_readline ||= ! -t STDIN;
+ $Suppress_readline = ! -t STDIN unless defined $Suppress_readline;
CPAN::Config->load unless $CPAN::Config_loaded++;
my $prompt = "cpan> ";
@@ -113,6 +113,12 @@ sub shell {
$readline::rl_completion_function =
$readline::rl_completion_function = 'CPAN::Complete::cpl';
}
+ # $term->OUT is autoflushed anyway
+ my $odef = select STDERR;
+ $| = 1;
+ select STDOUT;
+ $| = 1;
+ select $odef;
}
no strict;
@@ -120,7 +126,8 @@ sub shell {
my $getcwd;
$getcwd = $CPAN::Config->{'getcwd'} || 'cwd';
my $cwd = CPAN->$getcwd();
- my $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub";
+ my $try_detect_readline;
+ $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub" if $term;
my $rl_avail = $Suppress_readline ? "suppressed" :
($term->ReadLine ne "Term::ReadLine::Stub") ? "enabled" :
"available (try ``install Bundle::CPAN'')";
@@ -190,7 +197,8 @@ ReadLine support $rl_avail
my $redef;
local($SIG{__WARN__}) = CPAN::Shell::dotdot_onreload(\$redef);
require Term::ReadLine;
- $CPAN::Frontend->myprint("\n$redef subroutines in Term::ReadLine redefined\n");
+ $CPAN::Frontend->myprint("\n$redef subroutines in ".
+ "Term::ReadLine redefined\n");
goto &shell;
}
}
@@ -285,7 +293,7 @@ sub try_dot_al {
$pkg =~ s|::|/|g;
if (defined($name=$INC{"$pkg.pm"}))
{
- $name =~ s|^(.*)$pkg\.pm$|$1auto/$pkg/$func.al|;
+ $name =~ s|^(.*)$pkg\.pm\z|$1auto/$pkg/$func.al|s;
$name = undef unless (-r $name);
}
unless (defined $name)
@@ -301,7 +309,7 @@ sub try_dot_al {
*$autoload = sub {};
$ok = 1;
} else {
- if ($name =~ s{(\w{12,})\.al$}{substr($1,0,11).".al"}e){
+ if ($name =~ s{(\w{12,})\.al\z}{substr($1,0,11).".al"}e){
eval {local $SIG{__DIE__};require $name};
}
if ($@){
@@ -539,7 +547,40 @@ You may want to kill it and delete the lockfile, maybe. On UNIX try:
}
}
}
- File::Path::mkpath($CPAN::Config->{cpan_home});
+ my $dotcpan = $CPAN::Config->{cpan_home};
+ eval { File::Path::mkpath($dotcpan);};
+ if ($@) {
+ # A special case at least for Jarkko.
+ my $firsterror = $@;
+ my $seconderror;
+ my $symlinkcpan;
+ if (-l $dotcpan) {
+ $symlinkcpan = readlink $dotcpan;
+ die "readlink $dotcpan failed: $!" unless defined $symlinkcpan;
+ eval { File::Path::mkpath($symlinkcpan); };
+ if ($@) {
+ $seconderror = $@;
+ } else {
+ $CPAN::Frontend->mywarn(qq{
+Working directory $symlinkcpan created.
+});
+ }
+ }
+ unless (-d $dotcpan) {
+ my $diemess = qq{
+Your configuration suggests "$dotcpan" as your
+CPAN.pm working directory. I could not create this directory due
+to this error: $firsterror\n};
+ $diemess .= qq{
+As "$dotcpan" is a symlink to "$symlinkcpan",
+I tried to create that, but I failed with this error: $seconderror
+} if $seconderror;
+ $diemess .= qq{
+Please make sure the directory exists and is writable.
+};
+ $CPAN::Frontend->mydie($diemess);
+ }
+ }
my $fh;
unless ($fh = FileHandle->new(">$lockfile")) {
if ($! =~ /Permission/) {
@@ -580,6 +621,27 @@ or
print "Caught SIGINT\n";
$Signal++;
};
+
+# From: Larry Wall <larry@wall.org>
+# Subject: Re: deprecating SIGDIE
+# To: perl5-porters@perl.org
+# Date: Thu, 30 Sep 1999 14:58:40 -0700 (PDT)
+#
+# The original intent of __DIE__ was only to allow you to substitute one
+# kind of death for another on an application-wide basis without respect
+# to whether you were in an eval or not. As a global backstop, it should
+# not be used any more lightly (or any more heavily :-) than class
+# UNIVERSAL. Any attempt to build a general exception model on it should
+# be politely squashed. Any bug that causes every eval {} to have to be
+# modified should be not so politely squashed.
+#
+# Those are my current opinions. It is also my optinion that polite
+# arguments degenerate to personal arguments far too frequently, and that
+# when they do, it's because both people wanted it to, or at least didn't
+# sufficiently want it not to.
+#
+# Larry
+
$SIG{'__DIE__'} = \&cleanup;
$self->debug("Signal handler set.") if $CPAN::DEBUG;
}
@@ -784,7 +846,7 @@ sub disk_usage {
if ($^O eq 'MacOS') {
require Mac::Files;
my $cat = Mac::Files::FSpGetCatInfo($_);
- $Du += $cat->ioFlLgLen() + $cat->ioFlRLgLen();
+ $Du += $cat->ioFlLgLen() + $cat->ioFlRLgLen() if $cat;
} else {
$Du += (-s _);
}
@@ -1103,7 +1165,8 @@ Known options:
commit commit session changes to disk
init go through a dialog to set all parameters
-You may edit key values in the follow fashion:
+You may edit key values in the follow fashion (the "o" is a literal
+letter o):
o conf build_cache 15
@@ -1149,29 +1212,29 @@ sub h {
$CPAN::Frontend->myprint("Detailed help not yet implemented\n");
} else {
$CPAN::Frontend->myprint(q{
-command arguments description
-a string authors
-b or display bundles
-d /regex/ info distributions
-m or about modules
-i none anything of above
-
-r as reinstall recommendations
-u above uninstalled distributions
-See manpage for autobundle, recompile, force, look, etc.
-
-make make
-test modules, make test (implies make)
-install dists, bundles, make install (implies test)
-clean "r" or "u" make clean
-readme display the README file
-
-reload index|cpan load most recent indices/CPAN.pm
-h or ? display this menu
-o various set and query options
-! perl-code eval a perl command
-q quit the shell subroutine
-});
+Display Information
+ a authors
+ b string display bundles
+ d or info distributions
+ m /regex/ about modules
+ i or anything of above
+ r none reinstall recommendations
+ u uninstalled distributions
+
+Download, Test, Make, Install...
+ get download
+ make make (implies get)
+ test modules, make test (implies make)
+ install dists, bundles make install (implies test)
+ clean make clean
+ look open subshell in these dists' directories
+ readme display these dists' README files
+
+Other
+ h,? display this menu ! perl-code eval a perl command
+ o conf [opt] set and query options q quit the cpan shell
+ reload cpan load CPAN.pm again reload index load newer indices
+ autobundle Snapshot force cmd unconditionally do cmd});
}
}
@@ -1190,7 +1253,7 @@ sub b {
my($entry);
for $entry ($dh->read) {
next if -d MM->catdir($bdir,$entry);
- next unless $entry =~ s/\.pm$//;
+ next unless $entry =~ s/\.pm\z//;
$CPAN::META->instance('CPAN::Bundle',"Bundle::$entry");
}
}
@@ -1293,10 +1356,13 @@ sub o {
}
}
} else {
- $CPAN::Frontend->myprint("Valid options for debug are ".
- join(", ",sort(keys %CPAN::DEBUG), 'all').
- qq{ or a number. Completion works on the options. }.
- qq{Case is ignored.\n\n});
+ my $raw = "Valid options for debug are ".
+ join(", ",sort(keys %CPAN::DEBUG), 'all').
+ qq{ or a number. Completion works on the options. }.
+ qq{Case is ignored.};
+ require Text::Wrap;
+ $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
+ $CPAN::Frontend->myprint("\n\n");
}
if ($CPAN::DEBUG) {
$CPAN::Frontend->myprint("Options set for debugging:\n");
@@ -1358,7 +1424,7 @@ index re-reads the index files\n});
sub _binary_extensions {
my($self) = shift @_;
my(@result,$module,%seen,%need,$headerdone);
- my $isaperl = q{perl5[._-]\\d{3}(_[0-4][0-9])?\\.tar[._-]gz$};
+ my $isaperl = q{perl5[._-]\\d{3}(_[0-4][0-9])?\\.tar[._-]gz\z};
for $module ($self->expand('Module','/./')) {
my $file = $module->cpan_file;
next if $file eq "N/A";
@@ -1562,21 +1628,34 @@ sub expand {
my $class = "CPAN::$type";
my $obj;
if (defined $regex) {
- for $obj ( sort {$a->id cmp $b->id} $CPAN::META->all_objects($class)) {
- push @m, $obj
- if
- $obj->id =~ /$regex/i
- or
+ for $obj (
+ sort
+ {$a->id cmp $b->id}
+ $CPAN::META->all_objects($class)
+ ) {
+ unless ($obj->id){
+ # BUG, we got an empty object somewhere
+ CPAN->debug(sprintf(
+ "Empty id on obj[%s]%%[%s]",
+ $obj,
+ join(":", %$obj)
+ )) if $CPAN::DEBUG;
+ next;
+ }
+ push @m, $obj
+ if $obj->id =~ /$regex/i
+ or
(
(
- $] < 5.00303 ### provide sort of compatibility with 5.003
+ $] < 5.00303 ### provide sort of
+ ### compatibility with 5.003
||
$obj->can('name')
)
&&
$obj->name =~ /$regex/i
);
- }
+ }
} else {
my($xarg) = $arg;
if ( $type eq 'Bundle' ) {
@@ -1670,6 +1749,15 @@ sub mydie {
die "\n";
}
+sub setup_output {
+ return if -t STDOUT;
+ my $odef = select STDERR;
+ $| = 1;
+ select STDOUT;
+ $| = 1;
+ select $odef;
+}
+
#-> sub CPAN::Shell::rematein ;
# RE-adme||MA-ke||TE-st||IN-stall
sub rematein {
@@ -1680,6 +1768,7 @@ sub rematein {
$pragma = $meth;
$meth = shift @some;
}
+ setup_output();
CPAN->debug("pragma[$pragma]meth[$meth] some[@some]") if $CPAN::DEBUG;
my($s,@s);
foreach $s (@some) {
@@ -1756,6 +1845,8 @@ sub install { shift->rematein('install',@_); }
sub clean { shift->rematein('clean',@_); }
#-> sub CPAN::Shell::look ;
sub look { shift->rematein('look',@_); }
+#-> sub CPAN::Shell::cvs_import ;
+sub cvs_import { shift->rematein('cvs_import',@_); }
package CPAN::FTP;
@@ -1932,6 +2023,9 @@ sub localize {
my $ret = $self->$method(\@host_seq,$file,$aslocal);
if ($ret) {
$Themethod = $level;
+ my $now = time;
+ # utime $now, $now, $aslocal; # too bad, if we do that, we
+ # might alter a local mirror
$self->debug("level[$level]") if $CPAN::DEBUG;
return $ret;
} else {
@@ -1985,7 +2079,7 @@ sub hosteasy {
$l =~ s|^file:||; # assume they
# meant
# file://localhost
- $l =~ s|^/|| unless -f $l; # e.g. /P:
+ $l =~ s|^/||s unless -f $l; # e.g. /P:
}
if ( -f $l && -r _) {
$Thesite = $i;
@@ -2012,8 +2106,11 @@ sub hosteasy {
my $res = $Ua->mirror($url, $aslocal);
if ($res->is_success) {
$Thesite = $i;
+ my $now = time;
+ utime $now, $now, $aslocal; # download time is more
+ # important than upload time
return $aslocal;
- } elsif ($url !~ /\.gz$/) {
+ } elsif ($url !~ /\.gz\z/) {
my $gzurl = "$url.gz";
$CPAN::Frontend->myprint("Fetching with LWP:
$gzurl
@@ -2050,7 +2147,7 @@ sub hosteasy {
$Thesite = $i;
return $aslocal;
}
- if ($aslocal !~ /\.gz$/) {
+ if ($aslocal !~ /\.gz\z/) {
my $gz = "$aslocal.gz";
$CPAN::Frontend->myprint("Fetching with Net::FTP
$url.gz
@@ -2086,8 +2183,8 @@ sub hosthard {
HOSTHARD: for $i (@$host_seq) {
my $url = $CPAN::Config->{urllist}[$i] || $CPAN::Defaultsite;
unless ($self->is_reachable($url)) {
- $CPAN::Frontend->myprint("Skipping $url (not reachable)\n");
- next;
+ $CPAN::Frontend->myprint("Skipping $url (not reachable)\n");
+ next;
}
$url .= "/" unless substr($url,-1) eq "/";
$url .= $file;
@@ -2097,90 +2194,107 @@ sub hosthard {
# if ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
# to
if ($url =~ m|^([^:]+)://(.*?)/(.*)/(.*)|) {
- # proto not yet used
- ($proto,$host,$dir,$getfile) = ($1,$2,$3,$4);
+ # proto not yet used
+ ($proto,$host,$dir,$getfile) = ($1,$2,$3,$4);
} else {
- next HOSTHARD; # who said, we could ftp anything except ftp?
+ next HOSTHARD; # who said, we could ftp anything except ftp?
}
+
$self->debug("localizing funkyftpwise[$url]") if $CPAN::DEBUG;
my($f,$funkyftp);
for $f ('lynx','ncftpget','ncftp') {
- next unless exists $CPAN::Config->{$f};
- $funkyftp = $CPAN::Config->{$f};
- next unless defined $funkyftp;
- next if $funkyftp =~ /^\s*$/;
- my($want_compressed);
- my $aslocal_uncompressed;
- ($aslocal_uncompressed = $aslocal) =~ s/\.gz//;
- my($source_switch) = "";
- $source_switch = " -source" if $funkyftp =~ /\blynx$/;
- $source_switch = " -c" if $funkyftp =~ /\bncftp$/;
- $CPAN::Frontend->myprint(
- qq[
+ next unless exists $CPAN::Config->{$f};
+ $funkyftp = $CPAN::Config->{$f};
+ next unless defined $funkyftp;
+ next if $funkyftp =~ /^\s*$/;
+ my($want_compressed);
+ my $aslocal_uncompressed;
+ ($aslocal_uncompressed = $aslocal) =~ s/\.gz//;
+ my($source_switch) = "";
+ if ($f eq "lynx"){
+ $source_switch = " -source";
+ } elsif ($f eq "ncftp"){
+ $source_switch = " -c";
+ }
+ my($chdir) = "";
+ my($stdout_redir) = " > $aslocal_uncompressed";
+ if ($f eq "ncftpget"){
+ $chdir = "cd $aslocal_dir && ";
+ $stdout_redir = "";
+ }
+ $CPAN::Frontend->myprint(
+ qq[
Trying with "$funkyftp$source_switch" to get
$url
]);
- my($system) = "$funkyftp$source_switch '$url' $devnull > ".
- "$aslocal_uncompressed";
+ my($system) =
+ "$chdir$funkyftp$source_switch '$url' $devnull$stdout_redir";
+ $self->debug("system[$system]") if $CPAN::DEBUG;
+ my($wstatus);
+ if (($wstatus = system($system)) == 0
+ &&
+ ($f eq "lynx" ?
+ -s $aslocal_uncompressed # lynx returns 0 on my
+ # system even if it fails
+ : 1
+ )
+ ) {
+ if (-s $aslocal) {
+ # Looks good
+ } elsif ($aslocal_uncompressed ne $aslocal) {
+ # test gzip integrity
+ if (
+ CPAN::Tarzip->gtest($aslocal_uncompressed)
+ ) {
+ rename $aslocal_uncompressed, $aslocal;
+ } else {
+ CPAN::Tarzip->gzip($aslocal_uncompressed,
+ "$aslocal_uncompressed.gz");
+ }
+ }
+ $Thesite = $i;
+ return $aslocal;
+ } elsif ($url !~ /\.gz\z/) {
+ unlink $aslocal_uncompressed if
+ -f $aslocal_uncompressed && -s _ == 0;
+ my $gz = "$aslocal.gz";
+ my $gzurl = "$url.gz";
+ $CPAN::Frontend->myprint(
+ qq[
+Trying with "$funkyftp$source_switch" to get
+ $url.gz
+]);
+ my($system) = "$funkyftp$source_switch '$url.gz' $devnull > ".
+ "$aslocal_uncompressed.gz";
$self->debug("system[$system]") if $CPAN::DEBUG;
my($wstatus);
if (($wstatus = system($system)) == 0
&&
- -s $aslocal_uncompressed # lynx returns 0 on my
- # system even if it fails
+ -s "$aslocal_uncompressed.gz"
) {
- if ($aslocal_uncompressed ne $aslocal) {
- # test gzip integrity
- if (
- CPAN::Tarzip->gtest($aslocal_uncompressed)
- ) {
- rename $aslocal_uncompressed, $aslocal;
- } else {
- CPAN::Tarzip->gzip($aslocal_uncompressed,
- "$aslocal_uncompressed.gz");
- }
- }
- $Thesite = $i;
- return $aslocal;
- } elsif ($url !~ /\.gz$/) {
- unlink $aslocal_uncompressed if
- -f $aslocal_uncompressed && -s _ == 0;
- my $gz = "$aslocal.gz";
- my $gzurl = "$url.gz";
- $CPAN::Frontend->myprint(
- qq[
-Trying with "$funkyftp$source_switch" to get
- $url.gz
-]);
- my($system) = "$funkyftp$source_switch '$url.gz' $devnull > ".
- "$aslocal_uncompressed.gz";
- $self->debug("system[$system]") if $CPAN::DEBUG;
- my($wstatus);
- if (($wstatus = system($system)) == 0
- &&
- -s "$aslocal_uncompressed.gz"
- ) {
- # test gzip integrity
- if (CPAN::Tarzip->gtest("$aslocal_uncompressed.gz")) {
- CPAN::Tarzip->gunzip("$aslocal_uncompressed.gz",
- $aslocal);
- } else {
- rename $aslocal_uncompressed, $aslocal;
- }
- $Thesite = $i;
- return $aslocal;
+ # test gzip integrity
+ if (CPAN::Tarzip->gtest("$aslocal_uncompressed.gz")) {
+ CPAN::Tarzip->gunzip("$aslocal_uncompressed.gz",
+ $aslocal);
} else {
- unlink "$aslocal_uncompressed.gz" if
- -f "$aslocal_uncompressed.gz";
+ rename $aslocal_uncompressed, $aslocal;
}
+ $Thesite = $i;
+ return $aslocal;
} else {
- my $estatus = $wstatus >> 8;
- my $size = -f $aslocal ? ", left\n$aslocal with size ".-s _ : "";
- $CPAN::Frontend->myprint(qq{
+ unlink "$aslocal_uncompressed.gz" if
+ -f "$aslocal_uncompressed.gz";
+ }
+ } else {
+ my $estatus = $wstatus >> 8;
+ my $size = -f $aslocal ?
+ ", left\n$aslocal with size ".-s _ :
+ "\nWarning: expected file [$aslocal] doesn't exist";
+ $CPAN::Frontend->myprint(qq{
System call "$system"
returned status $estatus (wstat $wstatus)$size
});
- }
+ }
}
}
}
@@ -2208,12 +2322,12 @@ sub hosthardest {
next;
}
my($host,$dir,$getfile) = ($1,$2,$3);
- my($netrcfile,$fh);
my $timestamp = 0;
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,
$ctime,$blksize,$blocks) = stat($aslocal);
$timestamp = $mtime ||= 0;
my($netrc) = CPAN::FTP::netrc->new;
+ my($netrcfile) = $netrc->netrc;
my($verbose) = $CPAN::DEBUG{'FTP'} & $CPAN::DEBUG ? " -v" : "";
my $targetfile = File::Basename::basename($aslocal);
my(@dialog);
@@ -2226,7 +2340,7 @@ sub hosthardest {
"get $getfile $targetfile",
"quit"
);
- if (! $netrc->netrc) {
+ if (! $netrcfile) {
CPAN->debug("No ~/.netrc file found") if $CPAN::DEBUG;
} elsif ($netrc->hasdefault || $netrc->contains($host)) {
CPAN->debug(sprintf("hasdef[%d]cont($host)[%d]",
@@ -2463,10 +2577,10 @@ sub cpl {
/^$word/,
sort qw(
! a b d h i m o q r u autobundle clean
- make test install force reload look
+ make test install force reload look cvs_import
)
);
- } elsif ( $line !~ /^[\!abdhimorutl]/ ) {
+ } elsif ( $line !~ /^[\!abcdhimorutl]/ ) {
@return = ();
} elsif ($line =~ /^a\s/) {
@return = cplx('CPAN::Author',$word);
@@ -2474,7 +2588,7 @@ sub cpl {
@return = cplx('CPAN::Bundle',$word);
} elsif ($line =~ /^d\s/) {
@return = cplx('CPAN::Distribution',$word);
- } elsif ($line =~ /^([mru]|make|clean|test|install|readme|look)\s/ ) {
+ } elsif ($line =~ /^([mru]|make|clean|test|install|readme|look|cvs_import)\s/ ) {
@return = (cplx('CPAN::Module',$word),cplx('CPAN::Bundle',$word));
} elsif ($line =~ /^i\s/) {
@return = cpl_any($word);
@@ -2552,10 +2666,15 @@ sub reload {
# XXX check if a newer one is available. (We currently read it
# from time to time)
for ($CPAN::Config->{index_expire}) {
- $_ = 0.001 unless $_ > 0.001;
+ $_ = 0.001 unless $_ && $_ > 0.001;
}
return if $last_time + $CPAN::Config->{index_expire}*86400 > $time
and ! $force;
+ ## IFF we are developing, it helps to wipe out the memory between
+ ## reloads, otherwise it is not what a user expects.
+
+ ## undef $CPAN::META; # Neue Gruendlichkeit since v1.52(r1.274)
+ ## $CPAN::META = CPAN->new;
my($debug,$t2);
$last_time = $time;
@@ -2675,7 +2794,7 @@ sub rd_modpacks {
my($mod,$version,$dist) = split;
### $version =~ s/^\+//;
- # if it is a bundle, instatiate a bundle object
+ # if it is a bundle, instantiate a bundle object
my($bundle,$id,$userid);
if ($mod eq 'CPAN' &&
@@ -2688,6 +2807,7 @@ sub rd_modpacks {
if ($version > $CPAN::VERSION){
$CPAN::Frontend->myprint(qq{
There\'s a new CPAN.pm version (v$version) available!
+ [Current version is v$CPAN::VERSION]
You might want to try
install Bundle::CPAN
reload cpan
@@ -2731,12 +2851,20 @@ sub rd_modpacks {
}
# instantiate a distribution object
- unless ($CPAN::META->exists('CPAN::Distribution',$dist)) {
- $CPAN::META->instance(
- 'CPAN::Distribution' => $dist
- )->set(
- 'CPAN_USERID' => $userid
- );
+ if ($CPAN::META->exists('CPAN::Distribution',$dist)) {
+ # we do not need CONTAINSMODS unless we do something with
+ # this dist, so we better produce it on demand.
+
+ ## my $obj = $CPAN::META->instance(
+ ## 'CPAN::Distribution' => $dist
+ ## );
+ ## $obj->{CONTAINSMODS}{$mod} = undef; # experimental
+ } else {
+ $CPAN::META->instance(
+ 'CPAN::Distribution' => $dist
+ )->set(
+ 'CPAN_USERID' => $userid
+ );
}
return if $CPAN::Signal;
@@ -2829,9 +2957,15 @@ sub as_string {
$extra .= ")";
}
if (ref($self->{$_}) eq "ARRAY") { # language interface? XXX
- push @m, sprintf " %-12s %s%s\n", $_, "@{$self->{$_}}", $extra;
+ push @m, sprintf " %-12s %s%s\n", $_, "@{$self->{$_}}", $extra;
+ } elsif (ref($self->{$_}) eq "HASH") {
+ push @m, sprintf(
+ " %-12s %s%s\n",
+ $_,
+ join(" ",keys %{$self->{$_}}),
+ $extra);
} else {
- push @m, sprintf " %-12s %s%s\n", $_, $self->{$_}, $extra;
+ push @m, sprintf " %-12s %s%s\n", $_, $self->{$_}, $extra;
}
}
join "", @m, "\n";
@@ -2843,6 +2977,12 @@ sub author {
$CPAN::META->instance(CPAN::Author,$self->{CPAN_USERID})->fullname;
}
+sub dump {
+ my($self) = @_;
+ require Data::Dumper;
+ Data::Dumper::Dumper($self);
+}
+
package CPAN::Author;
#-> sub CPAN::Author::as_glimpse ;
@@ -2870,6 +3010,25 @@ sub email { shift->{'EMAIL'} }
package CPAN::Distribution;
+#-> sub CPAN::Distribution::as_string ;
+sub as_string {
+ my $self = shift;
+ $self->containsmods;
+ $self->SUPER::as_string(@_);
+}
+
+#-> sub CPAN::Distribution::containsmods ;
+sub containsmods {
+ my $self = shift;
+ return if exists $self->{CONTAINSMODS};
+ for my $mod ($CPAN::META->all_objects("CPAN::Module")) {
+ my $mod_file = $mod->{CPAN_FILE} or next;
+ my $dist_id = $self->{ID} or next;
+ my $mod_id = $mod->{ID} or next;
+ $self->{CONTAINSMODS}{$mod_id} = undef if $mod_file eq $dist_id;
+ }
+}
+
#-> sub CPAN::Distribution::called_for ;
sub called_for {
my($self,$id) = @_;
@@ -2919,11 +3078,11 @@ sub get {
$self->debug("Changed directory to tmp") if $CPAN::DEBUG;
if (! $local_file) {
Carp::croak "bad download, can't do anything :-(\n";
- } elsif ($local_file =~ /(\.tar\.(gz|Z)|\.tgz)$/i){
+ } elsif ($local_file =~ /(\.tar\.(gz|Z)|\.tgz)\z/i){
$self->untar_me($local_file);
- } elsif ( $local_file =~ /\.zip$/i ) {
+ } elsif ( $local_file =~ /\.zip\z/i ) {
$self->unzip_me($local_file);
- } elsif ( $local_file =~ /\.pm\.(gz|Z)$/) {
+ } elsif ( $local_file =~ /\.pm\.(gz|Z)\z/) {
$self->pm2dir_me($local_file);
} else {
$self->{archived} = "NO";
@@ -2934,7 +3093,7 @@ sub get {
# Let's check if the package has its own directory.
my $dh = DirHandle->new(File::Spec->curdir)
or Carp::croak("Couldn't opendir .: $!");
- my @readdir = grep $_ !~ /^\.\.?$/, $dh->read; ### MAC??
+ my @readdir = grep $_ !~ /^\.\.?\z/s, $dh->read; ### MAC??
$dh->close;
my ($distdir,$packagedir);
if (@readdir == 1 && -d $readdir[0]) {
@@ -3024,7 +3183,7 @@ sub pm2dir_me {
my($self,$local_file) = @_;
$self->{archived} = "pm";
my $to = File::Basename::basename($local_file);
- $to =~ s/\.(gz|Z)$//;
+ $to =~ s/\.(gz|Z)\z//;
if (CPAN::Tarzip->gunzip($local_file,$to)) {
$self->{unwrapped} = "YES";
} else {
@@ -3075,6 +3234,44 @@ Please define it with "o conf shell <your shell>"
chdir($pwd);
}
+sub cvs_import {
+ my($self) = @_;
+ $self->get;
+ my $dir = $self->dir;
+
+ my $package = $self->called_for;
+ my $module = $CPAN::META->instance('CPAN::Module', $package);
+ my $version = $module->cpan_version;
+
+ my $userid = $self->{CPAN_USERID};
+
+ my $cvs_dir = (split '/', $dir)[-1];
+ $cvs_dir =~ s/-\d+[^-]+\z//;
+ my $cvs_root =
+ $CPAN::Config->{cvsroot} || $ENV{CVSROOT};
+ my $cvs_site_perl =
+ $CPAN::Config->{cvs_site_perl} || $ENV{CVS_SITE_PERL};
+ if ($cvs_site_perl) {
+ $cvs_dir = "$cvs_site_perl/$cvs_dir";
+ }
+ my $cvs_log = qq{"imported $package $version sources"};
+ $version =~ s/\./_/g;
+ my @cmd = ('cvs', '-d', $cvs_root, 'import', '-m', $cvs_log,
+ "$cvs_dir", $userid, "v$version");
+
+ my $getcwd;
+ $getcwd = $CPAN::Config->{'getcwd'} || 'cwd';
+ my $pwd = CPAN->$getcwd();
+ chdir($dir);
+
+ $CPAN::Frontend->myprint(qq{Working directory is $dir\n});
+
+ $CPAN::Frontend->myprint(qq{@cmd\n});
+ system(@cmd) == 0 or
+ $CPAN::Frontend->mydie("cvs import failed");
+ chdir($pwd);
+}
+
#-> sub CPAN::Distribution::readme ;
sub readme {
my($self) = @_;
@@ -3146,7 +3343,7 @@ sub verifyMD5 {
$lc_file = CPAN::FTP->localize("authors/id/@local",
"$lc_want.gz",1);
if ($lc_file) {
- $lc_file =~ s/\.gz$//;
+ $lc_file =~ s/\.gz\z//;
CPAN::Tarzip->gunzip("$lc_file.gz",$lc_file);
} else {
return;
@@ -3193,7 +3390,7 @@ sub MD5_check_file {
my $md5 = MD5->new;
my($data,$ref);
$ref = \$data;
- while ($fh->READ($ref, 4096)){
+ while ($fh->READ($ref, 4096) > 0){
$md5->add($data);
}
my $hexdigest = $md5->hexdigest;
@@ -3257,7 +3454,7 @@ sub force {
$self->{'force_update'}++;
for my $att (qw(
MD5_STATUS archived build_dir localfile make install unwrapped
- writemakefile have_sponsored
+ writemakefile
)) {
delete $self->{$att};
}
@@ -3271,8 +3468,8 @@ sub isa_perl {
([._-])
(\d{3}(_[0-4][0-9])?)
\.tar[._-]gz
- $
- }x;
+ \z
+ }xs;
"$1.$3";
}
@@ -3338,8 +3535,8 @@ or
"had problems unarchiving. Please build manually";
exists $self->{writemakefile} &&
- $self->{writemakefile} eq "NO" and push @e,
- "Had some problem writing Makefile";
+ $self->{writemakefile} =~ m/ ^ NO\s* ( .* ) /sx and push @e,
+ $1 || "Had some problem writing Makefile";
defined $self->{'make'} and push @e,
"Has already been processed within this session";
@@ -3396,18 +3593,27 @@ or
kill 9, $pid;
waitpid $pid, 0;
$CPAN::Frontend->myprint($@);
- $self->{writemakefile} = "NO - $@";
+ $self->{writemakefile} = "NO $@";
$@ = "";
return;
}
} else {
$ret = system($system);
if ($ret != 0) {
- $self->{writemakefile} = "NO";
+ $self->{writemakefile} = "NO Makefile.PL returned status $ret";
return;
}
}
- $self->{writemakefile} = "YES";
+ if (-f "Makefile") {
+ $self->{writemakefile} = "YES";
+ } else {
+ $self->{writemakefile} =
+ qq{NO Makefile.PL refused to write a Makefile.};
+ # It's probably worth to record the reason, so let's retry
+ # local $/;
+ # my $fh = IO::File->new("$system |"); # STDERR? STDIN?
+ # $self->{writemakefile} .= <$fh>;
+ }
}
return if $CPAN::Signal;
if (my @prereq = $self->needs_prereq){
@@ -3441,7 +3647,7 @@ of modules we are processing right now?", "yes");
$CPAN::Frontend->myprint(" $system -- OK\n");
$self->{'make'} = "YES";
} else {
- $self->{writemakefile} = "YES";
+ $self->{writemakefile} ||= "YES";
$self->{'make'} = "NO";
$CPAN::Frontend->myprint(" $system -- NOT OK\n");
}
@@ -3474,7 +3680,7 @@ sub needs_prereq {
next if $mo->uptodate;
# it's not needed, so don't push it. We cannot omit this step, because
# if 'force' is in effect, nobody else will check.
- if ($self->{'have_sponsored'}{$p}++){
+ if ($self->{have_sponsored}{$p}++){
# We have already sponsored it and for some reason it's still
# not available. So we do nothing. Or what should we do?
# if we push it again, we have a potential infinite loop
@@ -3657,13 +3863,14 @@ sub contains {
my $fh = FileHandle->new;
local $/ = "\n";
open($fh,$parsefile) or die "Could not open '$parsefile': $!";
- my $inpod = 0;
+ my $in_cont = 0;
$self->debug("parsefile[$parsefile]") if $CPAN::DEBUG;
while (<$fh>) {
- $inpod = m/^=(?!head1\s+CONTENTS)/ ? 0 :
- m/^=head1\s+CONTENTS/ ? 1 : $inpod;
- next unless $inpod;
+ $in_cont = m/^=(?!head1\s+CONTENTS)/ ? 0 :
+ m/^=head1\s+CONTENTS/ ? 1 : $in_cont;
+ next unless $in_cont;
next if /^=/;
+ s/\#.*//;
next if /^\s+$/;
chomp;
push @result, (split " ", $_, 2)[0];
@@ -3709,7 +3916,7 @@ sub find_bundle_file {
$what2 =~ s/:Bundle://;
$what2 =~ tr|:|/|;
} else {
- $what2 =~ s|Bundle/||;
+ $what2 =~ s|Bundle[/\\]||;
}
my $bu;
while (<$fh>) {
@@ -3775,13 +3982,19 @@ explicitly a file $s.
# recap with less noise
if ( $meth eq "install") {
if (%fail) {
- $CPAN::Frontend->myprint(qq{\nBundle summary: }.
- qq{The following items seem to }.
- qq{have had installation problems:\n});
+ require Text::Wrap;
+ my $raw = sprintf(qq{Bundle summary:
+The following items in bundle %s had installation problems:},
+ $self->id
+ );
+ $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
+ $CPAN::Frontend->myprint("\n");
+ my $paragraph = "";
for $s ($self->contains) {
- $CPAN::Frontend->myprint( "$s " ) if $fail{$s};
+ $paragraph .= "$s " if $fail{$s};
}
- $CPAN::Frontend->myprint(qq{\n});
+ $CPAN::Frontend->myprint(Text::Wrap::fill(" "," ",$paragraph));
+ $CPAN::Frontend->myprint("\n");
} else {
$self->{'install'} = 'YES';
}
@@ -3911,7 +4124,7 @@ sub as_string {
sub manpage_headline {
my($self,$local_file) = @_;
my(@local_file) = $local_file;
- $local_file =~ s/\.pm$/.pod/;
+ $local_file =~ s/\.pm\z/.pod/;
push @local_file, $local_file;
my(@result,$locf);
for $locf (@local_file) {
@@ -4011,6 +4224,8 @@ sub rematein {
sub readme { shift->rematein('readme') }
#-> sub CPAN::Module::look ;
sub look { shift->rematein('look') }
+#-> sub CPAN::Module::cvs_import ;
+sub cvs_import { shift->rematein('cvs_import') }
#-> sub CPAN::Module::get ;
sub get { shift->rematein('get',@_); }
#-> sub CPAN::Module::make ;
@@ -4091,7 +4306,7 @@ sub inst_version {
local($^W) = 0 if $] < 5.00303 && $ExtUtils::MakeMaker::VERSION < 5.38;
# warn "HERE";
my $have = MM->parse_version($parsefile) || "undef";
- $have =~ s/\s+//g;
+ $have =~ s/\s*//g; # stringify to float around floating point issues
$have;
}
@@ -4174,7 +4389,7 @@ sub READLINE {
my $gz = $self->{GZ};
my($line,$bytesread);
$bytesread = $gz->gzreadline($line);
- return undef if $bytesread == 0;
+ return undef if $bytesread <= 0;
return $line;
} else {
my $fh = $self->{FH};
@@ -4202,7 +4417,7 @@ sub DESTROY {
$gz->gzclose();
} else {
my $fh = $self->{FH};
- $fh->close;
+ $fh->close if defined $fh;
}
undef $self;
}
@@ -4213,29 +4428,30 @@ sub untar {
if (MM->maybe_command($CPAN::Config->{'gzip'})
&&
MM->maybe_command($CPAN::Config->{'tar'})) {
- if ($^O =~ /win/i) { # irgggh
- # people find the most curious tar binaries that cannot handle
- # pipes
- my $system = "$CPAN::Config->{'gzip'} --decompress $file";
- if (system($system)==0) {
- $CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n});
- } else {
- $CPAN::Frontend->mydie(
- qq{Couldn\'t uncompress $file\n}
- );
- }
- $file =~ s/\.gz$//;
- $system = "$CPAN::Config->{tar} xvf $file";
- if (system($system)==0) {
- $CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
- } else {
- $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
- }
- return 1;
+ my $system = "$CPAN::Config->{'gzip'} --decompress --stdout " .
+ "< $file | $CPAN::Config->{tar} xvf -";
+ if (system($system) != 0) {
+ # people find the most curious tar binaries that cannot handle
+ # pipes
+ my $system = "$CPAN::Config->{'gzip'} --decompress $file";
+ if (system($system)==0) {
+ $CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n});
+ } else {
+ $CPAN::Frontend->mydie(
+ qq{Couldn\'t uncompress $file\n}
+ );
+ }
+ $file =~ s/\.gz\z//;
+ $system = "$CPAN::Config->{tar} xvf $file";
+ $CPAN::Frontend->myprint(qq{Using Tar:$system:\n});
+ if (system($system)==0) {
+ $CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
+ } else {
+ $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
+ }
+ return 1;
} else {
- my $system = "$CPAN::Config->{'gzip'} --decompress --stdout " .
- "< $file | $CPAN::Config->{tar} xvf -";
- return system($system) == 0;
+ return 1;
}
} elsif ($CPAN::META->has_inst("Archive::Tar")
&&
@@ -4291,8 +4507,8 @@ Modules are fetched from one or more of the mirrored CPAN
directory.
The CPAN module also supports the concept of named and versioned
-'bundles' of modules. Bundles simplify the handling of sets of
-related modules. See BUNDLES below.
+I<bundles> of modules. Bundles simplify the handling of sets of
+related modules. See Bundles below.
The package contains a session manager and a cache manager. There is
no status retained between sessions. The session manager keeps track
@@ -4343,29 +4559,14 @@ objects. The parser recognizes a regular expression only if you
enclose it between two slashes.
The principle is that the number of found objects influences how an
-item is displayed. If the search finds one item, the result is displayed
-as object-E<gt>as_string, but if we find more than one, we display
-each as object-E<gt>as_glimpse. E.g.
-
- cpan> a ANDK
- Author id = ANDK
- EMAIL a.koenig@franz.ww.TU-Berlin.DE
- FULLNAME Andreas König
-
-
- cpan> a /andk/
- Author id = ANDK
- EMAIL a.koenig@franz.ww.TU-Berlin.DE
- FULLNAME Andreas König
-
-
- cpan> a /and.*rt/
- Author ANDYD (Andy Dougherty)
- Author MERLYN (Randal L. Schwartz)
+item is displayed. If the search finds one item, the result is
+displayed with the rather verbose method C<as_string>, but if we find
+more than one, we display each object with the terse method
+<as_glimpse>.
=item make, test, install, clean modules or distributions
-These commands take any number of arguments and investigates what is
+These commands take any number of arguments and investigate what is
necessary to perform the action. If the argument is a distribution
file name (recognized by embedded slashes), it is processed. If it is
a module, CPAN determines the distribution file in which this module
@@ -4407,12 +4608,11 @@ A C<clean> command results in a
being executed within the distribution file's working directory.
-=item readme, look module or distribution
+=item get, readme, look module or distribution
-These two commands take only one argument, be it a module or a
-distribution file. C<readme> unconditionally runs, displaying the
-README of the associated distribution file. C<Look> gets and
-untars (if not yet done) the distribution file, changes to the
+C<get> downloads a distribution file without further action. C<readme>
+displays the README file of the associated distribution. C<Look> gets
+and untars (if not yet done) the distribution file, changes to the
appropriate directory and opens a subshell process in that directory.
=item Signals
@@ -4513,8 +4713,8 @@ functions in the calling package (C<install(...)>).
There's currently only one class that has a stable interface -
CPAN::Shell. All commands that are available in the CPAN shell are
methods of the class CPAN::Shell. Each of the commands that produce
-listings of modules (C<r>, C<autobundle>, C<u>) returns a list of the
-IDs of all modules within the list.
+listings of modules (C<r>, C<autobundle>, C<u>) also return a list of
+the IDs of all modules within the list.
=over 2
@@ -4549,6 +4749,41 @@ functionalities that are available in the shell.
print "No VERSION in ", $mod->id, "\n";
}
+Or if you want to write a cronjob to watch The CPAN, you could list
+all modules that need updating:
+
+ perl -e 'use CPAN; CPAN::Shell->r;'
+
+If you don't want to get any output if all modules are up to date, you
+can parse the output of above command for the regular expression
+//modules are up to date// and decide to mail the output only if it
+doesn't match. Ick?
+
+If you prefer to do it more in a programmer style in one single
+process, maybe something like this suites you better:
+
+ # list all modules on my disk that have newer versions on CPAN
+ for $mod (CPAN::Shell->expand("Module","/./")){
+ next unless $mod->inst_file;
+ next if $mod->uptodate;
+ printf "Module %s is installed as %s, could be updated to %s from CPAN\n",
+ $mod->id, $mod->inst_version, $mod->cpan_version;
+ }
+
+If that gives you too much output every day, you maybe only want to
+watch for three modules. You can write
+
+ for $mod (CPAN::Shell->expand("Module","/Apache|LWP|CGI/")){
+
+as the first line instead. Or you can combine some of the above
+tricks:
+
+ # watch only for a new mod_perl module
+ $mod = CPAN::Shell->expand("Module","mod_perl");
+ exit if $mod->uptodate;
+ # new mod_perl arrived, let me know all update recommendations
+ CPAN::Shell->r;
+
=back
=head2 Methods in the four Classes
@@ -4666,7 +4901,7 @@ you might use CPAN.pm to put together all you need on a networked
machine. Then copy the $CPAN::Config->{keep_source_where} (but not
$CPAN::Config->{build_dir}) directory on a floppy. This floppy is kind
of a personal CPAN. CPAN.pm on the non-networked machines works nicely
-with this floppy.
+with this floppy. See also below the paragraph about CD-ROM support.
=head1 CONFIGURATION
@@ -4689,7 +4924,6 @@ defined:
many seconds inactivity. Set to 0 to never break.
inhibit_startup_message
if true, does not print the startup message
- keep_source keep the source in a local directory?
keep_source_where directory in which to keep the source (if we do)
make location of external make program
make_arg arguments that should always be passed to 'make'
@@ -4713,29 +4947,40 @@ shell with the command set defined within the C<o conf> command:
=over 2
-=item o conf E<lt>scalar optionE<gt>
+=item C<o conf E<lt>scalar optionE<gt>>
prints the current value of the I<scalar option>
-=item o conf E<lt>scalar optionE<gt> E<lt>valueE<gt>
+=item C<o conf E<lt>scalar optionE<gt> E<lt>valueE<gt>>
Sets the value of the I<scalar option> to I<value>
-=item o conf E<lt>list optionE<gt>
+=item C<o conf E<lt>list optionE<gt>>
prints the current value of the I<list option> in MakeMaker's
neatvalue format.
-=item o conf E<lt>list optionE<gt> [shift|pop]
+=item C<o conf E<lt>list optionE<gt> [shift|pop]>
shifts or pops the array in the I<list option> variable
-=item o conf E<lt>list optionE<gt> [unshift|push|splice] E<lt>listE<gt>
+=item C<o conf E<lt>list optionE<gt> [unshift|push|splice] E<lt>listE<gt>>
works like the corresponding perl commands.
=back
+=head2 Note on urllist parameter's format
+
+urllist parameters are URLs according to RFC 1738. We do a little
+guessing if your URL is not compliant, but if you have problems with file URLs, please try the correct format. Either:
+
+ file://localhost/whatever/ftp/pub/CPAN/
+
+or
+
+ file:///home/ftp/pub/CPAN/
+
=head2 urllist parameter has CD-ROM support
The C<urllist> parameter of the configuration table contains a list of
@@ -4780,28 +5025,30 @@ To populate a freshly installed perl with my favorite modules is pretty
easiest by maintaining a private bundle definition file. To get a useful
blueprint of a bundle definition file, the command autobundle can be used
on the CPAN shell command line. This command writes a bundle definition
-file for all modules that re installed for the currently running perl
+file for all modules that are installed for the currently running perl
interpreter. It's recommended to run this command only once and from then
on maintain the file manually under a private name, say
Bundle/my_bundle.pm. With a clever bundle file you can then simply say
cpan> install Bundle::my_bundle
-then answer a few questions and then go out.
+then answer a few questions and then go out for a coffee.
-Maintaining a bundle definition file means to keep track of two things:
-dependencies and interactivity. CPAN.pm (currently) does not take into
-account dependencies between distributions, so a bundle definition file
-should specify distributions that depend on others B<after> the others.
-On the other hand, it's a bit annoying that many distributions need some
-interactive configuring. So what I try to accomplish in my private bundle
-file is to have the packages that need to be configured early in the file
-and the gentle ones later, so I can go out after a few minutes and leave
-CPAN.pm unattained.
+Maintaining a bundle definition file means to keep track of two
+things: dependencies and interactivity. CPAN.pm sometimes fails on
+calculating dependencies because not all modules define all MakeMaker
+attributes correctly, so a bundle definition file should specify
+prerequisites as early as possible. On the other hand, it's a bit
+annoying that many distributions need some interactive configuring. So
+what I try to accomplish in my private bundle file is to have the
+packages that need to be configured early in the file and the gentle
+ones later, so I can go out after a few minutes and leave CPAN.pm
+unattained.
=head1 WORKING WITH CPAN.pm BEHIND FIREWALLS
-Thanks to Graham Barr for contributing the firewall following howto.
+Thanks to Graham Barr for contributing the following paragraphs about
+the interaction between perl, and various firewall configurations.
Firewalls can be categorized into three basic types.
@@ -4820,10 +5067,10 @@ ftp) you will need to use LWP.
=item ftp firewall
-This where the firewall machine runs a ftp server. This kind of firewall will
-only let you access ftp serves outside the firewall. This is usually done by
-connecting to the firewall with ftp, then entering a username like
-"user@outside.host.com"
+This where the firewall machine runs a ftp server. This kind of
+firewall will only let you access ftp servers outside the firewall.
+This is usually done by connecting to the firewall with ftp, then
+entering a username like "user@outside.host.com"
To access servers outside these type of firewalls with perl you
will need to use Net::FTP.
@@ -4860,7 +5107,7 @@ special compiling is need as you can access hosts directly.
=head1 BUGS
-We should give coverage for _all_ of the CPAN and not just the PAUSE
+We should give coverage for B<all> of the CPAN and not just the PAUSE
part, right? In this discussion CPAN and PAUSE have become equal --
but they are not. PAUSE is authors/ and modules/. CPAN is PAUSE plus
the clpa/, doc/, misc/, ports/, src/, scripts/.
@@ -4875,7 +5122,7 @@ traditional method of building a Perl module package from a shell.
=head1 AUTHOR
-Andreas König E<lt>a.koenig@kulturbox.deE<gt>
+Andreas Koenig E<lt>andreas.koenig@anima.deE<gt>
=head1 SEE ALSO
diff --git a/contrib/perl5/lib/CPAN/FirstTime.pm b/contrib/perl5/lib/CPAN/FirstTime.pm
index df95812..0e795da 100644
--- a/contrib/perl5/lib/CPAN/FirstTime.pm
+++ b/contrib/perl5/lib/CPAN/FirstTime.pm
@@ -16,7 +16,7 @@ use FileHandle ();
use File::Basename ();
use File::Path ();
use vars qw($VERSION);
-$VERSION = substr q$Revision: 1.36 $, 10;
+$VERSION = substr q$Revision: 1.38 $, 10;
=head1 NAME
@@ -77,7 +77,9 @@ dialog anytime later by typing 'o conf init' at the cpan prompt.)
*prompt = \&ExtUtils::MakeMaker::prompt;
} else {
$fastread = 1;
- *prompt = sub {
+ $CPAN::Config->{urllist} ||= [];
+ # prototype should match that of &MakeMaker::prompt
+ *prompt = sub ($;$) {
my($q,$a) = @_;
my($ret) = defined $a ? $a : "";
printf qq{%s [%s]\n\n}, $q, $ret;
@@ -358,16 +360,27 @@ sub conf_sites {
require File::Copy;
File::Copy::copy($m,$mby) or die "Could not update $mby: $!";
}
- if ( ! -f $mby ){
- print qq{You have no $mby
+ my $loopcount = 0;
+ while () {
+ if ( ! -f $mby ){
+ print qq{You have no $mby
I\'m trying to fetch one
};
- $mby = CPAN::FTP->localize($m,$mby,3);
- } elsif (-M $mby > 30 ) {
- print qq{Your $mby is older than 30 days,
+ $mby = CPAN::FTP->localize($m,$mby,3);
+ } elsif (-M $mby > 60 && $loopcount == 0) {
+ print qq{Your $mby is older than 60 days,
I\'m trying to fetch one
};
- $mby = CPAN::FTP->localize($m,$mby,3);
+ $mby = CPAN::FTP->localize($m,$mby,3);
+ $loopcount++;
+ } elsif (-s $mby == 0) {
+ print qq{You have an empty $mby,
+ I\'m trying to fetch one
+};
+ $mby = CPAN::FTP->localize($m,$mby,3);
+ } else {
+ last;
+ }
}
read_mirrored_by($mby);
}
diff --git a/contrib/perl5/lib/CPAN/Nox.pm b/contrib/perl5/lib/CPAN/Nox.pm
index e9cb189..8b59ca0 100644
--- a/contrib/perl5/lib/CPAN/Nox.pm
+++ b/contrib/perl5/lib/CPAN/Nox.pm
@@ -1,7 +1,12 @@
package CPAN::Nox;
+use strict;
+use vars qw($VERSION @EXPORT);
-BEGIN{$CPAN::Suppress_readline=1 unless defined $CPAN::term;}
+BEGIN{
+ $CPAN::Suppress_readline=1 unless defined $CPAN::term;
+}
+use base 'Exporter';
use CPAN;
$VERSION = "1.00";
@@ -12,6 +17,8 @@ $CPAN::META->has_inst('Compress::Zlib','no');
*AUTOLOAD = \&CPAN::AUTOLOAD;
+__END__
+
=head1 NAME
CPAN::Nox - Wrapper around CPAN.pm without using any XS module
diff --git a/contrib/perl5/lib/Carp.pm b/contrib/perl5/lib/Carp.pm
index f8f750a..43524dd 100644
--- a/contrib/perl5/lib/Carp.pm
+++ b/contrib/perl5/lib/Carp.pm
@@ -94,98 +94,8 @@ sub export_fail {
# each function call on the stack.
sub longmess {
- return @_ if ref $_[0];
- my $error = join '', @_;
- my $mess = "";
- my $i = 1 + $CarpLevel;
- my ($pack,$file,$line,$sub,$hargs,$eval,$require);
- my (@a);
- #
- # crawl up the stack....
- #
- while (do { { package DB; @a = caller($i++) } } ) {
- # get copies of the variables returned from caller()
- ($pack,$file,$line,$sub,$hargs,undef,$eval,$require) = @a;
- #
- # if the $error error string is newline terminated then it
- # is copied into $mess. Otherwise, $mess gets set (at the end of
- # the 'else {' section below) to one of two things. The first time
- # through, it is set to the "$error at $file line $line" message.
- # $error is then set to 'called' which triggers subsequent loop
- # iterations to append $sub to $mess before appending the "$error
- # at $file line $line" which now actually reads "called at $file line
- # $line". Thus, the stack trace message is constructed:
- #
- # first time: $mess = $error at $file line $line
- # subsequent times: $mess .= $sub $error at $file line $line
- # ^^^^^^
- # "called"
- if ($error =~ m/\n$/) {
- $mess .= $error;
- } else {
- # Build a string, $sub, which names the sub-routine called.
- # This may also be "require ...", "eval '...' or "eval {...}"
- if (defined $eval) {
- if ($require) {
- $sub = "require $eval";
- } else {
- $eval =~ s/([\\\'])/\\$1/g;
- if ($MaxEvalLen && length($eval) > $MaxEvalLen) {
- substr($eval,$MaxEvalLen) = '...';
- }
- $sub = "eval '$eval'";
- }
- } elsif ($sub eq '(eval)') {
- $sub = 'eval {...}';
- }
- # if there are any arguments in the sub-routine call, format
- # them according to the format variables defined earlier in
- # this file and join them onto the $sub sub-routine string
- if ($hargs) {
- # we may trash some of the args so we take a copy
- @a = @DB::args; # must get local copy of args
- # don't print any more than $MaxArgNums
- if ($MaxArgNums and @a > $MaxArgNums) {
- # cap the length of $#a and set the last element to '...'
- $#a = $MaxArgNums;
- $a[$#a] = "...";
- }
- for (@a) {
- # set args to the string "undef" if undefined
- $_ = "undef", next unless defined $_;
- if (ref $_) {
- # dunno what this is for...
- $_ .= '';
- s/'/\\'/g;
- }
- else {
- s/'/\\'/g;
- # terminate the string early with '...' if too long
- substr($_,$MaxArgLen) = '...'
- if $MaxArgLen and $MaxArgLen < length;
- }
- # 'quote' arg unless it looks like a number
- $_ = "'$_'" unless /^-?[\d.]+$/;
- # print high-end chars as 'M-<char>' or '^<char>'
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- }
- # append ('all', 'the', 'arguments') to the $sub string
- $sub .= '(' . join(', ', @a) . ')';
- }
- # here's where the error message, $mess, gets constructed
- $mess .= "\t$sub " if $error eq "called";
- $mess .= "$error at $file line $line\n";
- }
- # we don't need to print the actual error message again so we can
- # change this to "called" so that the string "$error at $file line
- # $line" makes sense as "called at $file line $line".
- $error = "called";
- }
- # this kludge circumvents die's incorrect handling of NUL
- my $msg = \($mess || $error);
- $$msg =~ tr/\0//d;
- $$msg;
+ { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
+ goto &longmess_heavy;
}
@@ -196,78 +106,8 @@ sub longmess {
# you always get a stack trace
sub shortmess { # Short-circuit &longmess if called via multiple packages
- goto &longmess if $Verbose;
- return @_ if ref $_[0];
- my $error = join '', @_;
- my ($prevpack) = caller(1);
- my $extra = $CarpLevel;
- my $i = 2;
- my ($pack,$file,$line);
- # when reporting an error, we want to report it from the context of the
- # calling package. So what is the calling package? Within a module,
- # there may be many calls between methods and perhaps between sub-classes
- # and super-classes, but the user isn't interested in what happens
- # inside the package. We start by building a hash array which keeps
- # track of all the packages to which the calling package belongs. We
- # do this by examining its @ISA variable. Any call from a base class
- # method (one of our caller's @ISA packages) can be ignored
- my %isa = ($prevpack,1);
-
- # merge all the caller's @ISA packages into %isa.
- @isa{@{"${prevpack}::ISA"}} = ()
- if(defined @{"${prevpack}::ISA"});
-
- # now we crawl up the calling stack and look at all the packages in
- # there. For each package, we look to see if it has an @ISA and then
- # we see if our caller features in that list. That would imply that
- # our caller is a derived class of that package and its calls can also
- # be ignored
- while (($pack,$file,$line) = caller($i++)) {
- if(defined @{$pack . "::ISA"}) {
- my @i = @{$pack . "::ISA"};
- my %i;
- @i{@i} = ();
- # merge any relevant packages into %isa
- @isa{@i,$pack} = ()
- if(exists $i{$prevpack} || exists $isa{$pack});
- }
-
- # and here's where we do the ignoring... if the package in
- # question is one of our caller's base or derived packages then
- # we can ignore it (skip it) and go onto the next (but note that
- # the continue { } block below gets called every time)
- next
- if(exists $isa{$pack});
-
- # Hey! We've found a package that isn't one of our caller's
- # clan....but wait, $extra refers to the number of 'extra' levels
- # we should skip up. If $extra > 0 then this is a false alarm.
- # We must merge the package into the %isa hash (so we can ignore it
- # if it pops up again), decrement $extra, and continue.
- if ($extra-- > 0) {
- %isa = ($pack,1);
- @isa{@{$pack . "::ISA"}} = ()
- if(defined @{$pack . "::ISA"});
- }
- else {
- # OK! We've got a candidate package. Time to construct the
- # relevant error message and return it. die() doesn't like
- # to be given NUL characters (which $msg may contain) so we
- # remove them first.
- (my $msg = "$error at $file line $line\n") =~ tr/\0//d;
- return $msg;
- }
- }
- continue {
- $prevpack = $pack;
- }
-
- # uh-oh! It looks like we crawled all the way up the stack and
- # never found a candidate package. Oh well, let's call longmess
- # to generate a full stack trace. We use the magical form of 'goto'
- # so that this shortmess() function doesn't appear on the stack
- # to further confuse longmess() about it's calling package.
- goto &longmess;
+ { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
+ goto &shortmess_heavy;
}
diff --git a/contrib/perl5/lib/Carp/Heavy.pm b/contrib/perl5/lib/Carp/Heavy.pm
new file mode 100644
index 0000000..5e3de49
--- /dev/null
+++ b/contrib/perl5/lib/Carp/Heavy.pm
@@ -0,0 +1,253 @@
+package Carp;
+
+=head1 NAME
+
+Carp::Heavy - Carp guts
+
+=head1 SYNOPIS
+
+(internal use only)
+
+=head1 DESCRIPTION
+
+No user-serviceable parts inside.
+
+=cut
+
+# This package is heavily used. Be small. Be fast. Be good.
+
+# Comments added by Andy Wardley <abw@kfs.org> 09-Apr-98, based on an
+# _almost_ complete understanding of the package. Corrections and
+# comments are welcome.
+
+# longmess() crawls all the way up the stack reporting on all the function
+# calls made. The error string, $error, is originally constructed from the
+# arguments passed into longmess() via confess(), cluck() or shortmess().
+# This gets appended with the stack trace messages which are generated for
+# each function call on the stack.
+
+sub longmess_heavy {
+ return @_ if ref $_[0];
+ my $error = join '', @_;
+ my $mess = "";
+ my $i = 1 + $CarpLevel;
+ my ($pack,$file,$line,$sub,$hargs,$eval,$require);
+ my (@a);
+ #
+ # crawl up the stack....
+ #
+ while (do { { package DB; @a = caller($i++) } } ) {
+ # get copies of the variables returned from caller()
+ ($pack,$file,$line,$sub,$hargs,undef,$eval,$require) = @a;
+ #
+ # if the $error error string is newline terminated then it
+ # is copied into $mess. Otherwise, $mess gets set (at the end of
+ # the 'else {' section below) to one of two things. The first time
+ # through, it is set to the "$error at $file line $line" message.
+ # $error is then set to 'called' which triggers subsequent loop
+ # iterations to append $sub to $mess before appending the "$error
+ # at $file line $line" which now actually reads "called at $file line
+ # $line". Thus, the stack trace message is constructed:
+ #
+ # first time: $mess = $error at $file line $line
+ # subsequent times: $mess .= $sub $error at $file line $line
+ # ^^^^^^
+ # "called"
+ if ($error =~ m/\n$/) {
+ $mess .= $error;
+ } else {
+ # Build a string, $sub, which names the sub-routine called.
+ # This may also be "require ...", "eval '...' or "eval {...}"
+ if (defined $eval) {
+ if ($require) {
+ $sub = "require $eval";
+ } else {
+ $eval =~ s/([\\\'])/\\$1/g;
+ if ($MaxEvalLen && length($eval) > $MaxEvalLen) {
+ substr($eval,$MaxEvalLen) = '...';
+ }
+ $sub = "eval '$eval'";
+ }
+ } elsif ($sub eq '(eval)') {
+ $sub = 'eval {...}';
+ }
+ # if there are any arguments in the sub-routine call, format
+ # them according to the format variables defined earlier in
+ # this file and join them onto the $sub sub-routine string
+ if ($hargs) {
+ # we may trash some of the args so we take a copy
+ @a = @DB::args; # must get local copy of args
+ # don't print any more than $MaxArgNums
+ if ($MaxArgNums and @a > $MaxArgNums) {
+ # cap the length of $#a and set the last element to '...'
+ $#a = $MaxArgNums;
+ $a[$#a] = "...";
+ }
+ for (@a) {
+ # set args to the string "undef" if undefined
+ $_ = "undef", next unless defined $_;
+ if (ref $_) {
+ # force reference to string representation
+ $_ .= '';
+ s/'/\\'/g;
+ }
+ else {
+ s/'/\\'/g;
+ # terminate the string early with '...' if too long
+ substr($_,$MaxArgLen) = '...'
+ if $MaxArgLen and $MaxArgLen < length;
+ }
+ # 'quote' arg unless it looks like a number
+ $_ = "'$_'" unless /^-?[\d.]+$/;
+ # print high-end chars as 'M-<char>'
+ s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
+ # print remaining control chars as ^<char>
+ s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
+ }
+ # append ('all', 'the', 'arguments') to the $sub string
+ $sub .= '(' . join(', ', @a) . ')';
+ }
+ # here's where the error message, $mess, gets constructed
+ $mess .= "\t$sub " if $error eq "called";
+ $mess .= "$error at $file line $line";
+ if (defined &Thread::tid) {
+ my $tid = Thread->self->tid;
+ $mess .= " thread $tid" if $tid;
+ }
+ $mess .= "\n";
+ }
+ # we don't need to print the actual error message again so we can
+ # change this to "called" so that the string "$error at $file line
+ # $line" makes sense as "called at $file line $line".
+ $error = "called";
+ }
+ # this kludge circumvents die's incorrect handling of NUL
+ my $msg = \($mess || $error);
+ $$msg =~ tr/\0//d;
+ $$msg;
+}
+
+
+# ancestors() returns the complete set of ancestors of a module
+
+sub ancestors($$);
+
+sub ancestors($$){
+ my( $pack, $href ) = @_;
+ if( @{"${pack}::ISA"} ){
+ my $risa = \@{"${pack}::ISA"};
+ my %tree = ();
+ @tree{@$risa} = ();
+ foreach my $mod ( @$risa ){
+ # visit ancestors - if not already in the gallery
+ if( ! defined( $$href{$mod} ) ){
+ my @ancs = ancestors( $mod, $href );
+ @tree{@ancs} = ();
+ }
+ }
+ return ( keys( %tree ) );
+ } else {
+ return ();
+ }
+}
+
+
+# shortmess() is called by carp() and croak() to skip all the way up to
+# the top-level caller's package and report the error from there. confess()
+# and cluck() generate a full stack trace so they call longmess() to
+# generate that. In verbose mode shortmess() calls longmess() so
+# you always get a stack trace
+
+sub shortmess_heavy { # Short-circuit &longmess if called via multiple packages
+ goto &longmess_heavy if $Verbose;
+ return @_ if ref $_[0];
+ my $error = join '', @_;
+ my ($prevpack) = caller(1);
+ my $extra = $CarpLevel;
+
+ my @Clans = ( $prevpack );
+ my $i = 2;
+ my ($pack,$file,$line);
+ # when reporting an error, we want to report it from the context of the
+ # calling package. So what is the calling package? Within a module,
+ # there may be many calls between methods and perhaps between sub-classes
+ # and super-classes, but the user isn't interested in what happens
+ # inside the package. We start by building a hash array which keeps
+ # track of all the packages to which the calling package belongs. We
+ # do this by examining its @ISA variable. Any call from a base class
+ # method (one of our caller's @ISA packages) can be ignored
+ my %isa;
+
+ # merge all the caller's @ISA packages and ancestors into %isa.
+ my @pars = ancestors( $prevpack, \%isa );
+ @isa{@pars} = () if @pars;
+ $isa{$prevpack} = 1;
+
+ # now we crawl up the calling stack and look at all the packages in
+ # there. For each package, we look to see if it has an @ISA and then
+ # we see if our caller features in that list. That would imply that
+ # our caller is a derived class of that package and its calls can also
+ # be ignored
+CALLER:
+ while (($pack,$file,$line) = caller($i++)) {
+
+ # Chances are, the caller's caller (or its caller...) is already
+ # in the gallery - if so, ignore this caller.
+ next if exists( $isa{$pack} );
+
+ # no: collect this module's ancestors.
+ my @i = ancestors( $pack, \%isa );
+ my %i;
+ if( @i ){
+ @i{@i} = ();
+ # check whether our representative of one of the clans is
+ # in this family tree.
+ foreach my $cl (@Clans){
+ if( exists( $i{$cl} ) ){
+ # yes: merge all of the family tree into %isa
+ @isa{@i,$pack} = ();
+ # and here's where we do some more ignoring...
+ # if the package in question is one of our caller's
+ # base or derived packages then we can ignore it (skip it)
+ # and go onto the next.
+ next CALLER if exists( $isa{$pack} );
+ last;
+ }
+ }
+ }
+
+ # Hey! We've found a package that isn't one of our caller's
+ # clan....but wait, $extra refers to the number of 'extra' levels
+ # we should skip up. If $extra > 0 then this is a false alarm.
+ # We must merge the package into the %isa hash (so we can ignore it
+ # if it pops up again), decrement $extra, and continue.
+ if ($extra-- > 0) {
+ push( @Clans, $pack );
+ @isa{@i,$pack} = ();
+ }
+ else {
+ # OK! We've got a candidate package. Time to construct the
+ # relevant error message and return it. die() doesn't like
+ # to be given NUL characters (which $msg may contain) so we
+ # remove them first.
+ my $msg;
+ $msg = "$error at $file line $line";
+ if (defined &Thread::tid) {
+ my $tid = Thread->self->tid;
+ $mess .= " thread $tid" if $tid;
+ }
+ $msg .= "\n";
+ $msg =~ tr/\0//d;
+ return $msg;
+ }
+ }
+
+ # uh-oh! It looks like we crawled all the way up the stack and
+ # never found a candidate package. Oh well, let's call longmess
+ # to generate a full stack trace. We use the magical form of 'goto'
+ # so that this shortmess() function doesn't appear on the stack
+ # to further confuse longmess() about it's calling package.
+ goto &longmess_heavy;
+}
+
+1;
diff --git a/contrib/perl5/lib/Class/Struct.pm b/contrib/perl5/lib/Class/Struct.pm
index 8fddfbf..63eddac 100644
--- a/contrib/perl5/lib/Class/Struct.pm
+++ b/contrib/perl5/lib/Class/Struct.pm
@@ -2,10 +2,11 @@ package Class::Struct;
## See POD after __END__
-require 5.002;
+use 5.005_64;
use strict;
-use vars qw(@ISA @EXPORT);
+use warnings::register;
+our(@ISA, @EXPORT, $VERSION);
use Carp;
@@ -13,6 +14,8 @@ require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(struct);
+$VERSION = '0.58';
+
## Tested on 5.002 and 5.003 without class membership tests:
my $CHECK_CLASS_MEMBERSHIP = ($] >= 5.003_95);
@@ -98,6 +101,8 @@ sub struct {
my $out = '';
$out = "{\n package $class;\n use Carp;\n sub new {\n";
+ $out .= " my (\$class, \%init) = \@_;\n";
+ $out .= " \$class = __PACKAGE__ unless \@_;\n";
my $cnt = 0;
my $idx = 0;
@@ -115,7 +120,7 @@ sub struct {
$type = $decls[$idx+1];
push( @methods, $name );
if( $base_type eq 'HASH' ){
- $elem = "{'$name'}";
+ $elem = "{'${class}::$name'}";
}
elsif( $base_type eq 'ARRAY' ){
$elem = "[$cnt]";
@@ -126,19 +131,27 @@ sub struct {
$refs{$name}++;
$type = $1;
}
+ my $init = "defined(\$init{'$name'}) ? \$init{'$name'} :";
if( $type eq '@' ){
- $out .= " \$r->$elem = [];$cmt\n";
+ $out .= " croak 'Initializer for $name must be array reference'\n";
+ $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'ARRAY';\n";
+ $out .= " \$r->$elem = $init [];$cmt\n";
$arrays{$name}++;
}
elsif( $type eq '%' ){
- $out .= " \$r->$elem = {};$cmt\n";
+ $out .= " croak 'Initializer for $name must be hash reference'\n";
+ $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
+ $out .= " \$r->$elem = $init {};$cmt\n";
$hashes{$name}++;
}
elsif ( $type eq '$') {
- $out .= " \$r->$elem = undef;$cmt\n";
+ $out .= " \$r->$elem = $init undef;$cmt\n";
}
elsif( $type =~ /^\w+(?:::\w+)*$/ ){
- $out .= " \$r->$elem = '${type}'->new();$cmt\n";
+ $init = "defined(\$init{'$name'}) ? \%{\$init{'$name'}} : ()";
+ $out .= " croak 'Initializer for $name must be hash reference'\n";
+ $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
+ $out .= " \$r->$elem = '${type}'->new($init);$cmt\n";
$classes{$name} = $type;
$got_class = 1;
}
@@ -147,7 +160,7 @@ sub struct {
}
$idx += 2;
}
- $out .= " bless \$r;\n }\n";
+ $out .= " bless \$r, \$class;\n }\n";
# Create accessor methods.
@@ -155,8 +168,8 @@ sub struct {
$cnt = 0;
foreach $name (@methods){
if ( do { no strict 'refs'; defined &{$class . "::$name"} } ) {
- carp "function '$name' already defined, overrides struct accessor method"
- if $^W;
+ warnings::warn "function '$name' already defined, overrides struct accessor method"
+ if warnings::enabled();
}
else {
$pre = $pst = $cmt = $sel = '';
@@ -171,16 +184,16 @@ sub struct {
++$cnt;
}
elsif( $base_type eq 'HASH' ){
- $elem = "{'$name'}";
+ $elem = "{'${class}::$name'}";
}
if( defined $arrays{$name} ){
$out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return $pre\$r->$elem$pst;\n";
+ $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
$sel = "->[\$i]";
}
elsif( defined $hashes{$name} ){
$out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return $pre\$r->$elem$pst;\n";
+ $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
$sel = "->{\$i}";
}
elsif( defined $classes{$name} ){
@@ -297,6 +310,11 @@ flexible.
The class created by C<struct> must not be a subclass of another
class other than C<UNIVERSAL>.
+It can, however, be used as a superclass for other classes. To facilitate
+this, the generated constructor method uses a two-argument blessing.
+Furthermore, if the class is hash-based, the key of each element is
+prefixed with the class name (see I<Perl Cookbook>, Recipe 13.12).
+
A function named C<new> must not be explicitly defined in a class
created by C<struct>.
@@ -323,7 +341,8 @@ on the declared type of the element.
=item Scalar (C<'$'> or C<'*$'>)
-The element is a scalar, and is initialized to C<undef>.
+The element is a scalar, and by default is initialized to C<undef>
+(but see L<Initializing with new>).
The accessor's argument, if any, is assigned to the element.
@@ -333,10 +352,11 @@ to the element is returned.
=item Array (C<'@'> or C<'*@'>)
-The element is an array, initialized to C<()>.
+The element is an array, initialized by default to C<()>.
With no argument, the accessor returns a reference to the
-element's whole array.
+element's whole array (whether or not the element was
+specified as C<'@'> or C<'*@'>).
With one or two arguments, the first argument is an index
specifying one element of the array; the second argument, if
@@ -347,10 +367,11 @@ returned.
=item Hash (C<'%'> or C<'*%'>)
-The element is a hash, initialized to C<()>.
+The element is a hash, initialized by default to C<()>.
With no argument, the accessor returns a reference to the
-element's whole hash.
+element's whole hash (whether or not the element was
+specified as C<'%'> or C<'*%'>).
With one or two arguments, the first argument is a key specifying
one element of the hash; the second argument, if present, is
@@ -374,6 +395,23 @@ starts with a C<'*'>, a reference to the element itself is returned.
=back
+=head2 Initializing with C<new>
+
+C<struct> always creates a constructor called C<new>. That constructor
+may take a list of initializers for the various elements of the new
+struct.
+
+Each initializer is a pair of values: I<element name>C< =E<gt> >I<value>.
+The initializer value for a scalar element is just a scalar value. The
+initializer for an array element is an array reference. The initializer
+for a hash is a hash reference.
+
+The initializer for a class element is also a hash reference, and the
+contents of that hash are passed to the element's own constructor.
+
+See Example 3 below for an example of initialization.
+
+
=head1 EXAMPLES
=over
@@ -399,8 +437,8 @@ type C<timeval>.
# create an object:
my $t = new rusage;
- # $t->ru_utime and $t->ru_stime are objects of type timeval.
+ # $t->ru_utime and $t->ru_stime are objects of type timeval.
# set $t->ru_utime to 100.0 sec and $t->ru_stime to 5.0 sec.
$t->ru_utime->tv_secs(100);
$t->ru_utime->tv_usecs(0);
@@ -418,10 +456,10 @@ accessor accordingly.
package MyObj;
use Class::Struct;
- # declare the struct
+ # declare the struct
struct ( 'MyObj', { count => '$', stuff => '%' } );
- # override the default accessor method for 'count'
+ # override the default accessor method for 'count'
sub count {
my $self = shift;
if ( @_ ) {
@@ -443,10 +481,68 @@ accessor accordingly.
print "\$x->count(-5) = ", $x->count(-5), "\n";
# dies due to negative argument!
+=item Example 3
+
+The constructor of a generated class can be passed a list
+of I<element>=>I<value> pairs, with which to initialize the struct.
+If no initializer is specified for a particular element, its default
+initialization is performed instead. Initializers for non-existent
+elements are silently ignored.
+
+Note that the initializer for a nested struct is specified
+as an anonymous hash of initializers, which is passed on to the nested
+struct's constructor.
+
+
+ use Class::Struct;
+
+ struct Breed =>
+ {
+ name => '$',
+ cross => '$',
+ };
+
+ struct Cat =>
+ [
+ name => '$',
+ kittens => '@',
+ markings => '%',
+ breed => 'Breed',
+ ];
+
+
+ my $cat = Cat->new( name => 'Socks',
+ kittens => ['Monica', 'Kenneth'],
+ markings => { socks=>1, blaze=>"white" },
+ breed => { name=>'short-hair', cross=>1 },
+ );
+
+ print "Once a cat called ", $cat->name, "\n";
+ print "(which was a ", $cat->breed->name, ")\n";
+ print "had two kittens: ", join(' and ', @{$cat->kittens}), "\n";
+
+=back
=head1 Author and Modification History
+Modified by Damian Conway, 1999-03-05, v0.58.
+
+ Added handling of hash-like arg list to class ctor.
+
+ Changed to two-argument blessing in ctor to support
+ derivation from created classes.
+
+ Added classname prefixes to keys in hash-based classes
+ (refer to "Perl Cookbook", Recipe 13.12 for rationale).
+
+ Corrected behaviour of accessors for '*@' and '*%' struct
+ elements. Package now implements documented behaviour when
+ returning a reference to an entire hash or array element.
+ Previously these were returned as a reference to a reference
+ to the element.
+
+
Renamed to C<Class::Struct> and modified by Jim Miner, 1997-04-02.
members() function removed.
diff --git a/contrib/perl5/lib/Cwd.pm b/contrib/perl5/lib/Cwd.pm
index 5c10e8e..9a92829 100644
--- a/contrib/perl5/lib/Cwd.pm
+++ b/contrib/perl5/lib/Cwd.pm
@@ -20,7 +20,7 @@ getcwd - get pathname of current working directory
chdir "/tmp";
print $ENV{'PWD'};
- use Cwd 'abs_path';
+ use Cwd 'abs_path'; # aka realpath()
print abs_path($ENV{'PWD'});
use Cwd 'fast_abs_path';
@@ -32,8 +32,11 @@ The getcwd() function re-implements the getcwd(3) (or getwd(3)) functions
in Perl.
The abs_path() function takes a single argument and returns the
-absolute pathname for that argument. It uses the same algorithm as
-getcwd(). (actually getcwd() is abs_path("."))
+absolute pathname for that argument. It uses the same algorithm
+as getcwd(). (Actually, getcwd() is abs_path(".")) Symbolic links
+and relative-path components ("." and "..") are resolved to return
+the canonical pathname, just like realpath(3). Also callable as
+realpath().
The fastcwd() function looks the same as getcwd(), but runs faster.
It's also more dangerous because it might conceivably chdir() you out
@@ -67,12 +70,12 @@ kept up to date if all packages which use chdir import it from Cwd.
use Carp;
-$VERSION = '2.01';
+$VERSION = '2.02';
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
-@EXPORT_OK = qw(chdir abs_path fast_abs_path);
+@EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath);
# The 'natural and safe form' for UNIX (pwd may be setuid root)
@@ -105,9 +108,6 @@ sub getcwd
# This is a faster version of getcwd. It's also more dangerous because
# you might chdir out of a directory that you can't chdir back into.
-# List of metachars taken from do_exec() in doio.c
-my $quoted_shell_meta = quotemeta('$&*(){}[]";\\|?<>~`'."'\n");
-
sub fastcwd {
my($odev, $oino, $cdev, $cino, $tdev, $tino);
my(@path, $path);
@@ -136,9 +136,10 @@ sub fastcwd {
unshift(@path, $direntry);
}
$path = '/' . join('/', @path);
+ if ($^O eq 'apollo') { $path = "/".$path; }
# At this point $path may be tainted (if tainting) and chdir would fail.
# To be more useful we untaint it then check that we landed where we started.
- $path = $1 if $path =~ /^(.*)$/; # untaint
+ $path = $1 if $path =~ /^(.*)\z/s; # untaint
CORE::chdir($path) || return undef;
($cdev, $cino) = stat('.');
die "Unstable directory path, current directory changed unexpectedly"
@@ -166,7 +167,7 @@ sub chdir_init {
$ENV{'PWD'} = cwd();
}
# Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar)
- if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) {
+ if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
my($pd,$pi) = stat($2);
my($dd,$di) = stat($1);
if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
@@ -183,7 +184,7 @@ sub chdir {
return 0 unless CORE::chdir $newdir;
if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} }
- if ($newdir =~ m#^/#) {
+ if ($newdir =~ m#^/#s) {
$ENV{'PWD'} = $newdir;
} else {
my @curdir = split(m#/#,$ENV{'PWD'});
@@ -256,6 +257,10 @@ sub abs_path
$cwd;
}
+# added function alias for those of us more
+# used to the libc function. --tchrist 27-Jan-00
+*realpath = \&abs_path;
+
sub fast_abs_path {
my $cwd = getcwd();
my $path = shift || '.';
@@ -265,6 +270,10 @@ sub fast_abs_path {
$realpath;
}
+# added function alias to follow principle of least surprise
+# based on previous aliasing. --tchrist 27-Jan-00
+*fast_realpath = \&fast_abs_path;
+
# --- PORTING SECTION ---
@@ -330,7 +339,7 @@ sub _qnx_abs_path {
}
{
- local $^W = 0; # assignments trigger 'subroutine redefined' warning
+ no warnings; # assignments trigger 'subroutine redefined' warning
if ($^O eq 'VMS') {
*cwd = \&_vms_cwd;
@@ -371,6 +380,12 @@ sub _qnx_abs_path {
*abs_path = \&_qnx_abs_path;
*fast_abs_path = \&_qnx_abs_path;
}
+ elsif ($^O eq 'cygwin') {
+ *getcwd = \&cwd;
+ *fastgetcwd = \&cwd;
+ *fastcwd = \&cwd;
+ *abs_path = \&fast_abs_path;
+ }
}
# package main; eval join('',<DATA>) || die $@; # quick test
diff --git a/contrib/perl5/lib/DB.pm b/contrib/perl5/lib/DB.pm
new file mode 100644
index 0000000..711acc0
--- /dev/null
+++ b/contrib/perl5/lib/DB.pm
@@ -0,0 +1,802 @@
+#
+# Documentation is at the __END__
+#
+
+package DB;
+
+# "private" globals
+
+my ($running, $ready, $deep, $usrctxt, $evalarg,
+ @stack, @saved, @skippkg, @clients);
+my $preeval = {};
+my $posteval = {};
+my $ineval = {};
+
+####
+#
+# Globals - must be defined at startup so that clients can refer to
+# them right after a C<require DB;>
+#
+####
+
+BEGIN {
+
+ # these are hardcoded in perl source (some are magical)
+
+ $DB::sub = ''; # name of current subroutine
+ %DB::sub = (); # "filename:fromline-toline" for every known sub
+ $DB::single = 0; # single-step flag (set it to 1 to enable stops in BEGIN/use)
+ $DB::signal = 0; # signal flag (will cause a stop at the next line)
+ $DB::trace = 0; # are we tracing through subroutine calls?
+ @DB::args = (); # arguments of current subroutine or @ARGV array
+ @DB::dbline = (); # list of lines in currently loaded file
+ %DB::dbline = (); # actions in current file (keyed by line number)
+ @DB::ret = (); # return value of last sub executed in list context
+ $DB::ret = ''; # return value of last sub executed in scalar context
+
+ # other "public" globals
+
+ $DB::package = ''; # current package space
+ $DB::filename = ''; # current filename
+ $DB::subname = ''; # currently executing sub (fullly qualified name)
+ $DB::lineno = ''; # current line number
+
+ $DB::VERSION = $DB::VERSION = '1.0';
+
+ # initialize private globals to avoid warnings
+
+ $running = 1; # are we running, or are we stopped?
+ @stack = (0);
+ @clients = ();
+ $deep = 100;
+ $ready = 0;
+ @saved = ();
+ @skippkg = ();
+ $usrctxt = '';
+ $evalarg = '';
+}
+
+####
+# entry point for all subroutine calls
+#
+sub sub {
+ push(@stack, $DB::single);
+ $DB::single &= 1;
+ $DB::single |= 4 if $#stack == $deep;
+# print $DB::sub, "\n";
+ if ($DB::sub =~ /(?:^|::)DESTROY$/ or not defined wantarray) {
+ &$DB::sub;
+ $DB::single |= pop(@stack);
+ $DB::ret = undef;
+ }
+ elsif (wantarray) {
+ @DB::ret = &$DB::sub;
+ $DB::single |= pop(@stack);
+ @DB::ret;
+ }
+ else {
+ $DB::ret = &$DB::sub;
+ $DB::single |= pop(@stack);
+ $DB::ret;
+ }
+}
+
+####
+# this is called by perl for every statement
+#
+sub DB {
+ return unless $ready;
+ &save;
+ ($DB::package, $DB::filename, $DB::lineno) = caller;
+
+ return if @skippkg and grep { $_ eq $DB::package } @skippkg;
+
+ $usrctxt = "package $DB::package;"; # this won't let them modify, alas
+ local(*DB::dbline) = "::_<$DB::filename";
+ my ($stop, $action);
+ if (($stop,$action) = split(/\0/,$DB::dbline{$DB::lineno})) {
+ if ($stop eq '1') {
+ $DB::signal |= 1;
+ }
+ else {
+ $stop = 0 unless $stop; # avoid un_init warning
+ $evalarg = "\$DB::signal |= do { $stop; }"; &eval;
+ $DB::dbline{$DB::lineno} =~ s/;9($|\0)/$1/; # clear any temp breakpt
+ }
+ }
+ if ($DB::single || $DB::trace || $DB::signal) {
+ $DB::subname = ($DB::sub =~ /\'|::/) ? $DB::sub : "${DB::package}::$DB::sub"; #';
+ DB->loadfile($DB::filename, $DB::lineno);
+ }
+ $evalarg = $action, &eval if $action;
+ if ($DB::single || $DB::signal) {
+ _outputall($#stack . " levels deep in subroutine calls.\n") if $DB::single & 4;
+ $DB::single = 0;
+ $DB::signal = 0;
+ $running = 0;
+
+ &eval if ($evalarg = DB->prestop);
+ my $c;
+ for $c (@clients) {
+ # perform any client-specific prestop actions
+ &eval if ($evalarg = $c->cprestop);
+
+ # Now sit in an event loop until something sets $running
+ do {
+ $c->idle; # call client event loop; must not block
+ if ($running == 2) { # client wants something eval-ed
+ &eval if ($evalarg = $c->evalcode);
+ $running = 0;
+ }
+ } until $running;
+
+ # perform any client-specific poststop actions
+ &eval if ($evalarg = $c->cpoststop);
+ }
+ &eval if ($evalarg = DB->poststop);
+ }
+ ($@, $!, $,, $/, $\, $^W) = @saved;
+ ();
+}
+
+####
+# this takes its argument via $evalarg to preserve current @_
+#
+sub eval {
+ ($@, $!, $,, $/, $\, $^W) = @saved;
+ eval "$usrctxt $evalarg; &DB::save";
+ _outputall($@) if $@;
+}
+
+###############################################################################
+# no compile-time subroutine call allowed before this point #
+###############################################################################
+
+use strict; # this can run only after DB() and sub() are defined
+
+sub save {
+ @saved = ($@, $!, $,, $/, $\, $^W);
+ $, = ""; $/ = "\n"; $\ = ""; $^W = 0;
+}
+
+sub catch {
+ for (@clients) { $_->awaken; }
+ $DB::signal = 1;
+ $ready = 1;
+}
+
+####
+#
+# Client callable (read inheritable) methods defined after this point
+#
+####
+
+sub register {
+ my $s = shift;
+ $s = _clientname($s) if ref($s);
+ push @clients, $s;
+}
+
+sub done {
+ my $s = shift;
+ $s = _clientname($s) if ref($s);
+ @clients = grep {$_ ne $s} @clients;
+ $s->cleanup;
+# $running = 3 unless @clients;
+ exit(0) unless @clients;
+}
+
+sub _clientname {
+ my $name = shift;
+ "$name" =~ /^(.+)=[A-Z]+\(.+\)$/;
+ return $1;
+}
+
+sub next {
+ my $s = shift;
+ $DB::single = 2;
+ $running = 1;
+}
+
+sub step {
+ my $s = shift;
+ $DB::single = 1;
+ $running = 1;
+}
+
+sub cont {
+ my $s = shift;
+ my $i = shift;
+ $s->set_tbreak($i) if $i;
+ for ($i = 0; $i <= $#stack;) {
+ $stack[$i++] &= ~1;
+ }
+ $DB::single = 0;
+ $running = 1;
+}
+
+####
+# XXX caller must experimentally determine $i (since it depends
+# on how many client call frames are between this call and the DB call).
+# Such is life.
+#
+sub ret {
+ my $s = shift;
+ my $i = shift; # how many levels to get to DB sub
+ $i = 0 unless defined $i;
+ $stack[$#stack-$i] |= 1;
+ $DB::single = 0;
+ $running = 1;
+}
+
+####
+# XXX caller must experimentally determine $start (since it depends
+# on how many client call frames are between this call and the DB call).
+# Such is life.
+#
+sub backtrace {
+ my $self = shift;
+ my $start = shift;
+ my($p,$f,$l,$s,$h,$w,$e,$r,$a, @a, @ret,$i);
+ $start = 1 unless $start;
+ for ($i = $start; ($p,$f,$l,$s,$h,$w,$e,$r) = caller($i); $i++) {
+ @a = @DB::args;
+ for (@a) {
+ s/'/\\'/g;
+ s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
+ s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
+ s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
+ }
+ $w = $w ? '@ = ' : '$ = ';
+ $a = $h ? '(' . join(', ', @a) . ')' : '';
+ $e =~ s/\n\s*\;\s*\Z// if $e;
+ $e =~ s/[\\\']/\\$1/g if $e;
+ if ($r) {
+ $s = "require '$e'";
+ } elsif (defined $r) {
+ $s = "eval '$e'";
+ } elsif ($s eq '(eval)') {
+ $s = "eval {...}";
+ }
+ $f = "file `$f'" unless $f eq '-e';
+ push @ret, "$w&$s$a from $f line $l";
+ last if $DB::signal;
+ }
+ return @ret;
+}
+
+sub _outputall {
+ my $c;
+ for $c (@clients) {
+ $c->output(@_);
+ }
+}
+
+sub trace_toggle {
+ my $s = shift;
+ $DB::trace = !$DB::trace;
+}
+
+
+####
+# without args: returns all defined subroutine names
+# with subname args: returns a listref [file, start, end]
+#
+sub subs {
+ my $s = shift;
+ if (@_) {
+ my(@ret) = ();
+ while (@_) {
+ my $name = shift;
+ push @ret, [$DB::sub{$name} =~ /^(.*)\:(\d+)-(\d+)$/]
+ if exists $DB::sub{$name};
+ }
+ return @ret;
+ }
+ return keys %DB::sub;
+}
+
+####
+# first argument is a filename whose subs will be returned
+# if a filename is not supplied, all subs in the current
+# filename are returned.
+#
+sub filesubs {
+ my $s = shift;
+ my $fname = shift;
+ $fname = $DB::filename unless $fname;
+ return grep { $DB::sub{$_} =~ /^$fname/ } keys %DB::sub;
+}
+
+####
+# returns a list of all filenames that DB knows about
+#
+sub files {
+ my $s = shift;
+ my(@f) = grep(m|^_<|, keys %main::);
+ return map { substr($_,2) } @f;
+}
+
+####
+# returns reference to an array holding the lines in currently
+# loaded file
+#
+sub lines {
+ my $s = shift;
+ return \@DB::dbline;
+}
+
+####
+# loadfile($file, $line)
+#
+sub loadfile {
+ my $s = shift;
+ my($file, $line) = @_;
+ if (!defined $main::{'_<' . $file}) {
+ my $try;
+ if (($try) = grep(m|^_<.*$file|, keys %main::)) {
+ $file = substr($try,2);
+ }
+ }
+ if (defined($main::{'_<' . $file})) {
+ my $c;
+# _outputall("Loading file $file..");
+ *DB::dbline = "::_<$file";
+ $DB::filename = $file;
+ for $c (@clients) {
+# print "2 ", $file, '|', $line, "\n";
+ $c->showfile($file, $line);
+ }
+ return $file;
+ }
+ return undef;
+}
+
+sub lineevents {
+ my $s = shift;
+ my $fname = shift;
+ my(%ret) = ();
+ my $i;
+ $fname = $DB::filename unless $fname;
+ local(*DB::dbline) = "::_<$fname";
+ for ($i = 1; $i <= $#DB::dbline; $i++) {
+ $ret{$i} = [$DB::dbline[$i], split(/\0/, $DB::dbline{$i})]
+ if defined $DB::dbline{$i};
+ }
+ return %ret;
+}
+
+sub set_break {
+ my $s = shift;
+ my $i = shift;
+ my $cond = shift;
+ $i ||= $DB::lineno;
+ $cond ||= '1';
+ $i = _find_subline($i) if ($i =~ /\D/);
+ $s->output("Subroutine not found.\n") unless $i;
+ if ($i) {
+ if ($DB::dbline[$i] == 0) {
+ $s->output("Line $i not breakable.\n");
+ }
+ else {
+ $DB::dbline{$i} =~ s/^[^\0]*/$cond/;
+ }
+ }
+}
+
+sub set_tbreak {
+ my $s = shift;
+ my $i = shift;
+ $i = _find_subline($i) if ($i =~ /\D/);
+ $s->output("Subroutine not found.\n") unless $i;
+ if ($i) {
+ if ($DB::dbline[$i] == 0) {
+ $s->output("Line $i not breakable.\n");
+ }
+ else {
+ $DB::dbline{$i} =~ s/($|\0)/;9$1/; # add one-time-only b.p.
+ }
+ }
+}
+
+sub _find_subline {
+ my $name = shift;
+ $name =~ s/\'/::/;
+ $name = "${DB::package}\:\:" . $name if $name !~ /::/;
+ $name = "main" . $name if substr($name,0,2) eq "::";
+ my($fname, $from, $to) = ($DB::sub{$name} =~ /^(.*):(\d+)-(\d+)$/);
+ if ($from) {
+ # XXX this needs local()-ization of some sort
+ *DB::dbline = "::_<$fname";
+ ++$from while $DB::dbline[$from] == 0 && $from < $to;
+ return $from;
+ }
+ return undef;
+}
+
+sub clr_breaks {
+ my $s = shift;
+ my $i;
+ if (@_) {
+ while (@_) {
+ $i = shift;
+ $i = _find_subline($i) if ($i =~ /\D/);
+ $s->output("Subroutine not found.\n") unless $i;
+ if (defined $DB::dbline{$i}) {
+ $DB::dbline{$i} =~ s/^[^\0]+//;
+ if ($DB::dbline{$i} =~ s/^\0?$//) {
+ delete $DB::dbline{$i};
+ }
+ }
+ }
+ }
+ else {
+ for ($i = 1; $i <= $#DB::dbline ; $i++) {
+ if (defined $DB::dbline{$i}) {
+ $DB::dbline{$i} =~ s/^[^\0]+//;
+ if ($DB::dbline{$i} =~ s/^\0?$//) {
+ delete $DB::dbline{$i};
+ }
+ }
+ }
+ }
+}
+
+sub set_action {
+ my $s = shift;
+ my $i = shift;
+ my $act = shift;
+ $i = _find_subline($i) if ($i =~ /\D/);
+ $s->output("Subroutine not found.\n") unless $i;
+ if ($i) {
+ if ($DB::dbline[$i] == 0) {
+ $s->output("Line $i not actionable.\n");
+ }
+ else {
+ $DB::dbline{$i} =~ s/\0[^\0]*//;
+ $DB::dbline{$i} .= "\0" . $act;
+ }
+ }
+}
+
+sub clr_actions {
+ my $s = shift;
+ my $i;
+ if (@_) {
+ while (@_) {
+ my $i = shift;
+ $i = _find_subline($i) if ($i =~ /\D/);
+ $s->output("Subroutine not found.\n") unless $i;
+ if ($i && $DB::dbline[$i] != 0) {
+ $DB::dbline{$i} =~ s/\0[^\0]*//;
+ delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
+ }
+ }
+ }
+ else {
+ for ($i = 1; $i <= $#DB::dbline ; $i++) {
+ if (defined $DB::dbline{$i}) {
+ $DB::dbline{$i} =~ s/\0[^\0]*//;
+ delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
+ }
+ }
+ }
+}
+
+sub prestop {
+ my ($client, $val) = @_;
+ return defined($val) ? $preeval->{$client} = $val : $preeval->{$client};
+}
+
+sub poststop {
+ my ($client, $val) = @_;
+ return defined($val) ? $posteval->{$client} = $val : $posteval->{$client};
+}
+
+#
+# "pure virtual" methods
+#
+
+# client-specific pre/post-stop actions.
+sub cprestop {}
+sub cpoststop {}
+
+# client complete startup
+sub awaken {}
+
+sub skippkg {
+ my $s = shift;
+ push @skippkg, @_ if @_;
+}
+
+sub evalcode {
+ my ($client, $val) = @_;
+ if (defined $val) {
+ $running = 2; # hand over to DB() to evaluate in its context
+ $ineval->{$client} = $val;
+ }
+ return $ineval->{$client};
+}
+
+sub ready {
+ my $s = shift;
+ return $ready = 1;
+}
+
+# stubs
+
+sub init {}
+sub stop {}
+sub idle {}
+sub cleanup {}
+sub output {}
+
+#
+# client init
+#
+for (@clients) { $_->init }
+
+$SIG{'INT'} = \&DB::catch;
+
+# disable this if stepping through END blocks is desired
+# (looks scary and deconstructivist with Swat)
+END { $ready = 0 }
+
+1;
+__END__
+
+=head1 NAME
+
+DB - programmatic interface to the Perl debugging API (draft, subject to
+change)
+
+=head1 SYNOPSIS
+
+ package CLIENT;
+ use DB;
+ @ISA = qw(DB);
+
+ # these (inherited) methods can be called by the client
+
+ CLIENT->register() # register a client package name
+ CLIENT->done() # de-register from the debugging API
+ CLIENT->skippkg('hide::hide') # ask DB not to stop in this package
+ CLIENT->cont([WHERE]) # run some more (until BREAK or another breakpt)
+ CLIENT->step() # single step
+ CLIENT->next() # step over
+ CLIENT->ret() # return from current subroutine
+ CLIENT->backtrace() # return the call stack description
+ CLIENT->ready() # call when client setup is done
+ CLIENT->trace_toggle() # toggle subroutine call trace mode
+ CLIENT->subs([SUBS]) # return subroutine information
+ CLIENT->files() # return list of all files known to DB
+ CLIENT->lines() # return lines in currently loaded file
+ CLIENT->loadfile(FILE,LINE) # load a file and let other clients know
+ CLIENT->lineevents() # return info on lines with actions
+ CLIENT->set_break([WHERE],[COND])
+ CLIENT->set_tbreak([WHERE])
+ CLIENT->clr_breaks([LIST])
+ CLIENT->set_action(WHERE,ACTION)
+ CLIENT->clr_actions([LIST])
+ CLIENT->evalcode(STRING) # eval STRING in executing code's context
+ CLIENT->prestop([STRING]) # execute in code context before stopping
+ CLIENT->poststop([STRING])# execute in code context before resuming
+
+ # These methods will be called at the appropriate times.
+ # Stub versions provided do nothing.
+ # None of these can block.
+
+ CLIENT->init() # called when debug API inits itself
+ CLIENT->stop(FILE,LINE) # when execution stops
+ CLIENT->idle() # while stopped (can be a client event loop)
+ CLIENT->cleanup() # just before exit
+ CLIENT->output(LIST) # called to print any output that API must show
+
+=head1 DESCRIPTION
+
+Perl debug information is frequently required not just by debuggers,
+but also by modules that need some "special" information to do their
+job properly, like profilers.
+
+This module abstracts and provides all of the hooks into Perl internal
+debugging functionality, so that various implementations of Perl debuggers
+(or packages that want to simply get at the "privileged" debugging data)
+can all benefit from the development of this common code. Currently used
+by Swat, the perl/Tk GUI debugger.
+
+Note that multiple "front-ends" can latch into this debugging API
+simultaneously. This is intended to facilitate things like
+debugging with a command line and GUI at the same time, debugging
+debuggers etc. [Sounds nice, but this needs some serious support -- GSAR]
+
+In particular, this API does B<not> provide the following functions:
+
+=over 4
+
+=item *
+
+data display
+
+=item *
+
+command processing
+
+=item *
+
+command alias management
+
+=item *
+
+user interface (tty or graphical)
+
+=back
+
+These are intended to be services performed by the clients of this API.
+
+This module attempts to be squeaky clean w.r.t C<use strict;> and when
+warnings are enabled.
+
+
+=head2 Global Variables
+
+The following "public" global names can be read by clients of this API.
+Beware that these should be considered "readonly".
+
+=over 8
+
+=item $DB::sub
+
+Name of current executing subroutine.
+
+=item %DB::sub
+
+The keys of this hash are the names of all the known subroutines. Each value
+is an encoded string that has the sprintf(3) format
+C<("%s:%d-%d", filename, fromline, toline)>.
+
+=item $DB::single
+
+Single-step flag. Will be true if the API will stop at the next statement.
+
+=item $DB::signal
+
+Signal flag. Will be set to a true value if a signal was caught. Clients may
+check for this flag to abort time-consuming operations.
+
+=item $DB::trace
+
+This flag is set to true if the API is tracing through subroutine calls.
+
+=item @DB::args
+
+Contains the arguments of current subroutine, or the C<@ARGV> array if in the
+toplevel context.
+
+=item @DB::dbline
+
+List of lines in currently loaded file.
+
+=item %DB::dbline
+
+Actions in current file (keys are line numbers). The values are strings that
+have the sprintf(3) format C<("%s\000%s", breakcondition, actioncode)>.
+
+=item $DB::package
+
+Package namespace of currently executing code.
+
+=item $DB::filename
+
+Currently loaded filename.
+
+=item $DB::subname
+
+Fully qualified name of currently executing subroutine.
+
+=item $DB::lineno
+
+Line number that will be executed next.
+
+=back
+
+=head2 API Methods
+
+The following are methods in the DB base class. A client must
+access these methods by inheritance (*not* by calling them directly),
+since the API keeps track of clients through the inheritance
+mechanism.
+
+=over 8
+
+=item CLIENT->register()
+
+register a client object/package
+
+=item CLIENT->evalcode(STRING)
+
+eval STRING in executing code context
+
+=item CLIENT->skippkg('D::hide')
+
+ask DB not to stop in these packages
+
+=item CLIENT->run()
+
+run some more (until a breakpt is reached)
+
+=item CLIENT->step()
+
+single step
+
+=item CLIENT->next()
+
+step over
+
+=item CLIENT->done()
+
+de-register from the debugging API
+
+=back
+
+=head2 Client Callback Methods
+
+The following "virtual" methods can be defined by the client. They will
+be called by the API at appropriate points. Note that unless specified
+otherwise, the debug API only defines empty, non-functional default versions
+of these methods.
+
+=over 8
+
+=item CLIENT->init()
+
+Called after debug API inits itself.
+
+=item CLIENT->prestop([STRING])
+
+Usually inherited from DB package. If no arguments are passed,
+returns the prestop action string.
+
+=item CLIENT->stop()
+
+Called when execution stops (w/ args file, line).
+
+=item CLIENT->idle()
+
+Called while stopped (can be a client event loop).
+
+=item CLIENT->poststop([STRING])
+
+Usually inherited from DB package. If no arguments are passed,
+returns the poststop action string.
+
+=item CLIENT->evalcode(STRING)
+
+Usually inherited from DB package. Ask for a STRING to be C<eval>-ed
+in executing code context.
+
+=item CLIENT->cleanup()
+
+Called just before exit.
+
+=item CLIENT->output(LIST)
+
+Called when API must show a message (warnings, errors etc.).
+
+
+=back
+
+
+=head1 BUGS
+
+The interface defined by this module is missing some of the later additions
+to perl's debugging functionality. As such, this interface should be considered
+highly experimental and subject to change.
+
+=head1 AUTHOR
+
+Gurusamy Sarathy gsar@activestate.com
+
+This code heavily adapted from an early version of perl5db.pl attributable
+to Larry Wall and the Perl Porters.
+
+=cut
diff --git a/contrib/perl5/lib/Dumpvalue.pm b/contrib/perl5/lib/Dumpvalue.pm
index 5bcd58f..475f4ff 100644
--- a/contrib/perl5/lib/Dumpvalue.pm
+++ b/contrib/perl5/lib/Dumpvalue.pm
@@ -1,7 +1,7 @@
-require 5.005; # For (defined ref) and $#$v
+use 5.005_64; # for (defined ref) and $#$v and our
package Dumpvalue;
use strict;
-use vars qw(%address *stab %subs);
+our(%address, $stab, @stab, %stab, %subs);
# translate control chars to ^X - Randal Schwartz
# Modifications to print types by Peter Gordon v1.0
@@ -91,7 +91,7 @@ sub stringify {
{ no strict 'refs';
$_ = &{'overload::StrVal'}($_)
if $self->{bareStringify} and ref $_
- and defined %overload:: and defined &{'overload::StrVal'};
+ and %overload:: and defined &{'overload::StrVal'};
}
if ($tick eq 'auto') {
@@ -162,7 +162,7 @@ sub unwrap {
my $val = $v;
{ no strict 'refs';
$val = &{'overload::StrVal'}($v)
- if defined %overload:: and defined &{'overload::StrVal'};
+ if %overload:: and defined &{'overload::StrVal'};
}
($address) = $val =~ /(0x[0-9a-f]+)\)$/ ;
if (!$self->{dumpReused} && defined $address) {
@@ -181,6 +181,13 @@ sub unwrap {
}
}
+ if (ref $v eq 'Regexp') {
+ my $re = "$v";
+ $re =~ s,/,\\/,g;
+ print "$sp-> qr/$re/\n";
+ return;
+ }
+
if ( UNIVERSAL::isa($v, 'HASH') ) {
my @sortKeys = sort keys(%$v) ;
my $more;
@@ -220,9 +227,9 @@ sub unwrap {
if ($self->{compactDump} && !grep(ref $_, @{$v})) {
if ($#$v >= 0) {
$short = $sp . "0..$#{$v} " .
- join(" ",
- map {$self->stringify($_)} @{$v}[0..$tArrayDepth])
- . "$shortmore";
+ join(" ",
+ map {exists $v->[$_] ? $self->stringify($v->[$_]) : "empty"} ($[..$tArrayDepth)
+ ) . "$shortmore";
} else {
$short = $sp . "empty array";
}
@@ -231,7 +238,11 @@ sub unwrap {
for my $num ($[ .. $tArrayDepth) {
return if $DB::signal and $self->{stopDbSignal};
print "$sp$num ";
- $self->DumpElem($v->[$num], $s);
+ if (exists $v->[$num]) {
+ $self->DumpElem($v->[$num], $s);
+ } else {
+ print "empty slot\n";
+ }
}
print "$sp empty array\n" unless @$v;
print "$sp$more" if defined $more ;
@@ -317,12 +328,12 @@ sub dumpglob {
print( (' ' x $off) . "\$", &unctrl($key), " = " );
$self->DumpElem($stab, 3+$off);
}
- if (($key !~ /^_</ or $self->{dumpDBFiles}) and defined @stab) {
+ if (($key !~ /^_</ or $self->{dumpDBFiles}) and @stab) {
print( (' ' x $off) . "\@$key = (\n" );
$self->unwrap(\@stab,3+$off) ;
print( (' ' x $off) . ")\n" );
}
- if ($key ne "main::" && $key ne "DB::" && defined %stab
+ if ($key ne "main::" && $key ne "DB::" && %stab
&& ($self->{dumpPackages} or $key !~ /::$/)
&& ($key !~ /^_</ or $self->{dumpDBFiles})
&& !($package eq "Dumpvalue" and $key eq "stab")) {
@@ -340,21 +351,35 @@ sub dumpglob {
}
}
+sub CvGV_name {
+ my $self = shift;
+ my $in = shift;
+ return if $self->{skipCvGV}; # Backdoor to avoid problems if XS broken...
+ $in = \&$in; # Hard reference...
+ eval {require Devel::Peek; 1} or return;
+ my $gv = Devel::Peek::CvGV($in) or return;
+ *$gv{PACKAGE} . '::' . *$gv{NAME};
+}
+
sub dumpsub {
my $self = shift;
my ($off,$sub) = @_;
+ my $ini = $sub;
+ my $s;
$sub = $1 if $sub =~ /^\{\*(.*)\}$/;
- my $subref = \&$sub;
- my $place = $DB::sub{$sub} || (($sub = $subs{"$subref"}) && $DB::sub{$sub})
- || ($self->{subdump} && ($sub = $self->findsubs("$subref"))
- && $DB::sub{$sub});
+ my $subref = defined $1 ? \&$sub : \&$ini;
+ my $place = $DB::sub{$sub} || (($s = $subs{"$subref"}) && $DB::sub{$s})
+ || (($s = $self->CvGV_name($subref)) && $DB::sub{$s})
+ || ($self->{subdump} && ($s = $self->findsubs("$subref"))
+ && $DB::sub{$s});
+ $s = $sub unless defined $s;
$place = '???' unless defined $place;
- print( (' ' x $off) . "&$sub in $place\n" );
+ print( (' ' x $off) . "&$s in $place\n" );
}
sub findsubs {
my $self = shift;
- return undef unless defined %DB::sub;
+ return undef unless %DB::sub;
my ($addr, $name, $loc);
while (($name, $loc) = each %DB::sub) {
$addr = \&$name;
@@ -383,7 +408,8 @@ sub dumpvars {
next if @vars && !grep( matchvar($key, $_), @vars );
if ($self->{usageOnly}) {
$self->globUsage(\$val, $key)
- unless $package eq 'Dumpvalue' and $key eq 'stab';
+ if ($package ne 'Dumpvalue' or $key ne 'stab')
+ and ref(\$val) eq 'GLOB';
} else {
$self->dumpglob($package, 0,$key, $val);
}
@@ -437,9 +463,9 @@ sub globUsage { # glob ref, name
local *stab = *{$_[0]};
my $total = 0;
$total += $self->scalarUsage($stab) if defined $stab;
- $total += $self->arrayUsage(\@stab, $_[1]) if defined @stab;
+ $total += $self->arrayUsage(\@stab, $_[1]) if @stab;
$total += $self->hashUsage(\%stab, $_[1])
- if defined %stab and $_[1] ne "main::" and $_[1] ne "DB::";
+ if %stab and $_[1] ne "main::" and $_[1] ne "DB::";
#and !($package eq "Dumpvalue" and $key eq "stab"));
$total;
}
@@ -450,7 +476,7 @@ sub globUsage { # glob ref, name
Dumpvalue - provides screen dump of Perl data.
-=head1 SYNOPSYS
+=head1 SYNOPSIS
use Dumpvalue;
my $dumper = new Dumpvalue;
diff --git a/contrib/perl5/lib/English.pm b/contrib/perl5/lib/English.pm
index 9f29a48..f6e3ec0 100644
--- a/contrib/perl5/lib/English.pm
+++ b/contrib/perl5/lib/English.pm
@@ -15,14 +15,6 @@ English - use nice English (or awk) names for ugly punctuation variables
=head1 DESCRIPTION
-You should I<not> use this module in programs intended to be portable
-among Perl versions, programs that must perform regular expression
-matching operations efficiently, or libraries intended for use with
-such programs. In a sense, this module is deprecated. The reasons
-for this have to do with implementation details of the Perl
-interpreter which are too thorny to go into here. Perhaps someday
-they will be fixed to make "C<use English>" more practical.
-
This module provides aliases for the built-in variables whose
names no one seems to like to read. Variables with side-effects
which get triggered just by accessing them (like $0) will still
@@ -35,9 +27,15 @@ $INPUT_RECORD_SEPARATOR if you are using the English module.
See L<perlvar> for a complete list of these.
+=head1 BUGS
+
+This module provokes sizeable inefficiencies for regular expressions,
+due to unfortunate implementation details. If performance matters,
+consider avoiding English.
+
=cut
-local $^W = 0;
+no warnings;
# Grandfather $NAME import
sub import {
@@ -98,6 +96,8 @@ sub import {
*WARNING
*EXECUTABLE_NAME
*OSNAME
+ *LAST_REGEXP_CODE_RESULT
+ *EXCEPTIONS_BEING_CAUGHT
);
# The ground of all being. @ARG is deprecated (5.005 makes @_ lexical)
@@ -166,13 +166,15 @@ sub import {
# Internals.
- *PERL_VERSION = *] ;
+ *PERL_VERSION = *^V ;
*ACCUMULATOR = *^A ;
*COMPILING = *^C ;
*DEBUGGING = *^D ;
*SYSTEM_FD_MAX = *^F ;
*INPLACE_EDIT = *^I ;
*PERLDB = *^P ;
+ *LAST_REGEXP_CODE_RESULT = *^R ;
+ *EXCEPTIONS_BEING_CAUGHT = *^S ;
*BASETIME = *^T ;
*WARNING = *^W ;
*EXECUTABLE_NAME = *^X ;
@@ -183,5 +185,6 @@ sub import {
# *ARRAY_BASE = *[ ;
# *OFMT = *# ;
# *MULTILINE_MATCHING = ** ;
+# *OLD_PERL_VERSION = *] ;
1;
diff --git a/contrib/perl5/lib/Env.pm b/contrib/perl5/lib/Env.pm
index b0afc3b..d1ee071 100644
--- a/contrib/perl5/lib/Env.pm
+++ b/contrib/perl5/lib/Env.pm
@@ -2,57 +2,96 @@ package Env;
=head1 NAME
-Env - perl module that imports environment variables
+Env - perl module that imports environment variables as scalars or arrays
=head1 SYNOPSIS
use Env;
use Env qw(PATH HOME TERM);
+ use Env qw($SHELL @LD_LIBRARY_PATH);
=head1 DESCRIPTION
-Perl maintains environment variables in a pseudo-hash named %ENV. For
+Perl maintains environment variables in a special hash named C<%ENV>. For
when this access method is inconvenient, the Perl module C<Env> allows
-environment variables to be treated as simple variables.
+environment variables to be treated as scalar or array variables.
-The Env::import() function ties environment variables with suitable
+The C<Env::import()> function ties environment variables with suitable
names to global Perl variables with the same names. By default it
-does so with all existing environment variables (C<keys %ENV>). If
-the import function receives arguments, it takes them to be a list of
-environment variables to tie; it's okay if they don't yet exist.
+ties all existing environment variables (C<keys %ENV>) to scalars. If
+the C<import> function receives arguments, it takes them to be a list of
+variables to tie; it's okay if they don't yet exist. The scalar type
+prefix '$' is inferred for any element of this list not prefixed by '$'
+or '@'. Arrays are implemented in terms of C<split> and C<join>, using
+C<$Config::Config{path_sep}> as the delimiter.
After an environment variable is tied, merely use it like a normal variable.
You may access its value
@path = split(/:/, $PATH);
+ print join("\n", @LD_LIBRARY_PATH), "\n";
or modify it
$PATH .= ":.";
+ push @LD_LIBRARY_PATH, $dir;
+
+however you'd like. Bear in mind, however, that each access to a tied array
+variable requires splitting the environment variable's string anew.
+
+The code:
+
+ use Env qw(@PATH);
+ push @PATH, '.';
+
+is equivalent to:
+
+ use Env qw(PATH);
+ $PATH .= ":.";
+
+except that if C<$ENV{PATH}> started out empty, the second approach leaves
+it with the (odd) value "C<:.>", but the first approach leaves it with "C<.>".
-however you'd like.
To remove a tied environment variable from
the environment, assign it the undefined value
undef $PATH;
+ undef @LD_LIBRARY_PATH;
+
+=head1 LIMITATIONS
+
+On VMS systems, arrays tied to environment variables are read-only. Attempting
+to change anything will cause a warning.
=head1 AUTHOR
Chip Salzenberg E<lt>F<chip@fin.uucp>E<gt>
+and
+Gregor N. Purdy E<lt>F<gregor@focusresearch.com>E<gt>
=cut
sub import {
my ($callpack) = caller(0);
my $pack = shift;
- my @vars = grep /^[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
+ my @vars = grep /^[\$\@]?[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
return unless @vars;
- eval "package $callpack; use vars qw("
- . join(' ', map { '$'.$_ } @vars) . ")";
+ @vars = map { m/^[\$\@]/ ? $_ : '$'.$_ } @vars;
+
+ eval "package $callpack; use vars qw(" . join(' ', @vars) . ")";
die $@ if $@;
foreach (@vars) {
- tie ${"${callpack}::$_"}, Env, $_;
+ my ($type, $name) = m/^([\$\@])(.*)$/;
+ if ($type eq '$') {
+ tie ${"${callpack}::$name"}, Env, $name;
+ } else {
+ if ($^O eq 'VMS') {
+ tie @{"${callpack}::$name"}, Env::Array::VMS, $name;
+ } else {
+ tie @{"${callpack}::$name"}, Env::Array, $name;
+ }
+ }
}
}
@@ -74,4 +113,121 @@ sub STORE {
}
}
+######################################################################
+
+package Env::Array;
+
+use Config;
+use Tie::Array;
+
+@ISA = qw(Tie::Array);
+
+my $sep = $Config::Config{path_sep};
+
+sub TIEARRAY {
+ bless \($_[1]);
+}
+
+sub FETCHSIZE {
+ my ($self) = @_;
+ my @temp = split($sep, $ENV{$$self});
+ return scalar(@temp);
+}
+
+sub STORESIZE {
+ my ($self, $size) = @_;
+ my @temp = split($sep, $ENV{$$self});
+ $#temp = $size - 1;
+ $ENV{$$self} = join($sep, @temp);
+}
+
+sub CLEAR {
+ my ($self) = @_;
+ $ENV{$$self} = '';
+}
+
+sub FETCH {
+ my ($self, $index) = @_;
+ return (split($sep, $ENV{$$self}))[$index];
+}
+
+sub STORE {
+ my ($self, $index, $value) = @_;
+ my @temp = split($sep, $ENV{$$self});
+ $temp[$index] = $value;
+ $ENV{$$self} = join($sep, @temp);
+ return $value;
+}
+
+sub PUSH {
+ my $self = shift;
+ my @temp = split($sep, $ENV{$$self});
+ push @temp, @_;
+ $ENV{$$self} = join($sep, @temp);
+ return scalar(@temp);
+}
+
+sub POP {
+ my ($self) = @_;
+ my @temp = split($sep, $ENV{$$self});
+ my $result = pop @temp;
+ $ENV{$$self} = join($sep, @temp);
+ return $result;
+}
+
+sub UNSHIFT {
+ my $self = shift;
+ my @temp = split($sep, $ENV{$$self});
+ my $result = unshift @temp, @_;
+ $ENV{$$self} = join($sep, @temp);
+ return $result;
+}
+
+sub SHIFT {
+ my ($self) = @_;
+ my @temp = split($sep, $ENV{$$self});
+ my $result = shift @temp;
+ $ENV{$$self} = join($sep, @temp);
+ return $result;
+}
+
+sub SPLICE {
+ my $self = shift;
+ my $offset = shift;
+ my $length = shift;
+ my @temp = split($sep, $ENV{$$self});
+ if (wantarray) {
+ my @result = splice @temp, $self, $offset, $length, @_;
+ $ENV{$$self} = join($sep, @temp);
+ return @result;
+ } else {
+ my $result = scalar splice @temp, $offset, $length, @_;
+ $ENV{$$self} = join($sep, @temp);
+ return $result;
+ }
+}
+
+######################################################################
+
+package Env::Array::VMS;
+use Tie::Array;
+
+@ISA = qw(Tie::Array);
+
+sub TIEARRAY {
+ bless \($_[1]);
+}
+
+sub FETCHSIZE {
+ my ($self) = @_;
+ my $i = 0;
+ while ($i < 127 and defined $ENV{$$self . ';' . $i}) { $i++; };
+ return $i;
+}
+
+sub FETCH {
+ my ($self, $index) = @_;
+ return $ENV{$$self . ';' . $index};
+}
+
1;
diff --git a/contrib/perl5/lib/Exporter.pm b/contrib/perl5/lib/Exporter.pm
index 3f42e40..585109e 100644
--- a/contrib/perl5/lib/Exporter.pm
+++ b/contrib/perl5/lib/Exporter.pm
@@ -2,227 +2,60 @@ package Exporter;
require 5.001;
-#
-# We go to a lot of trouble not to 'require Carp' at file scope,
-# because Carp requires Exporter, and something has to give.
-#
-
$ExportLevel = 0;
-$Verbose = 0 unless $Verbose;
-
-sub export {
+$Verbose ||= 0;
+$VERSION = '5.562';
- # First make import warnings look like they're coming from the "use".
- local $SIG{__WARN__} = sub {
- my $text = shift;
- if ($text =~ s/ at \S*Exporter.pm line \d+.*\n//) {
- require Carp;
- local $Carp::CarpLevel = 1; # ignore package calling us too.
- Carp::carp($text);
- }
- else {
- warn $text;
- }
- };
- local $SIG{__DIE__} = sub {
- require Carp;
- local $Carp::CarpLevel = 1; # ignore package calling us too.
- Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")
- if $_[0] =~ /^Unable to create sub named "(.*?)::"/;
- };
-
- my($pkg, $callpkg, @imports) = @_;
- my($type, $sym, $oops);
- *exports = *{"${pkg}::EXPORT"};
-
- if (@imports) {
- if (!%exports) {
- grep(s/^&//, @exports);
- @exports{@exports} = (1) x @exports;
- my $ok = \@{"${pkg}::EXPORT_OK"};
- if (@$ok) {
- grep(s/^&//, @$ok);
- @exports{@$ok} = (1) x @$ok;
- }
- }
-
- if ($imports[0] =~ m#^[/!:]#){
- my $tagsref = \%{"${pkg}::EXPORT_TAGS"};
- my $tagdata;
- my %imports;
- my($remove, $spec, @names, @allexports);
- # negated first item implies starting with default set:
- unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/;
- foreach $spec (@imports){
- $remove = $spec =~ s/^!//;
-
- if ($spec =~ s/^://){
- if ($spec eq 'DEFAULT'){
- @names = @exports;
- }
- elsif ($tagdata = $tagsref->{$spec}) {
- @names = @$tagdata;
- }
- else {
- warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];
- ++$oops;
- next;
- }
- }
- elsif ($spec =~ m:^/(.*)/$:){
- my $patn = $1;
- @allexports = keys %exports unless @allexports; # only do keys once
- @names = grep(/$patn/, @allexports); # not anchored by default
- }
- else {
- @names = ($spec); # is a normal symbol name
- }
-
- warn "Import ".($remove ? "del":"add").": @names "
- if $Verbose;
-
- if ($remove) {
- foreach $sym (@names) { delete $imports{$sym} }
- }
- else {
- @imports{@names} = (1) x @names;
- }
- }
- @imports = keys %imports;
- }
-
- foreach $sym (@imports) {
- if (!$exports{$sym}) {
- if ($sym =~ m/^\d/) {
- $pkg->require_version($sym);
- # If the version number was the only thing specified
- # then we should act as if nothing was specified:
- if (@imports == 1) {
- @imports = @exports;
- last;
- }
- # We need a way to emulate 'use Foo ()' but still
- # allow an easy version check: "use Foo 1.23, ''";
- if (@imports == 2 and !$imports[1]) {
- @imports = ();
- last;
- }
- } elsif ($sym !~ s/^&// || !$exports{$sym}) {
- require Carp;
- Carp::carp(qq["$sym" is not exported by the $pkg module]);
- $oops++;
- }
- }
- }
- if ($oops) {
- require Carp;
- Carp::croak("Can't continue after import errors");
- }
- }
- else {
- @imports = @exports;
- }
-
- *fail = *{"${pkg}::EXPORT_FAIL"};
- if (@fail) {
- if (!%fail) {
- # Build cache of symbols. Optimise the lookup by adding
- # barewords twice... both with and without a leading &.
- # (Technique could be applied to %exports cache at cost of memory)
- my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @fail;
- warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
- @fail{@expanded} = (1) x @expanded;
- }
- my @failed;
- foreach $sym (@imports) { push(@failed, $sym) if $fail{$sym} }
- if (@failed) {
- @failed = $pkg->export_fail(@failed);
- foreach $sym (@failed) {
- require Carp;
- Carp::carp(qq["$sym" is not implemented by the $pkg module ],
- "on this architecture");
- }
- if (@failed) {
- require Carp;
- Carp::croak("Can't continue after import errors");
- }
- }
- }
-
- warn "Importing into $callpkg from $pkg: ",
- join(", ",sort @imports) if $Verbose;
-
- foreach $sym (@imports) {
- # shortcut for the common case of no type character
- (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
- unless $sym =~ s/^(\W)//;
- $type = $1;
- *{"${callpkg}::$sym"} =
- $type eq '&' ? \&{"${pkg}::$sym"} :
- $type eq '$' ? \${"${pkg}::$sym"} :
- $type eq '@' ? \@{"${pkg}::$sym"} :
- $type eq '%' ? \%{"${pkg}::$sym"} :
- $type eq '*' ? *{"${pkg}::$sym"} :
- do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
- }
-}
-
-sub export_to_level
-{
- my $pkg = shift;
- my ($level, $junk) = (shift, shift); # need to get rid of first arg
- # we know it already.
- my $callpkg = caller($level);
- $pkg->export($callpkg, @_);
+sub export_to_level {
+ require Exporter::Heavy;
+ goto &heavy_export_to_level;
}
-sub import {
- my $pkg = shift;
- my $callpkg = caller($ExportLevel);
- export $pkg, $callpkg, @_;
+sub export {
+ require Exporter::Heavy;
+ goto &heavy_export;
}
-
-
-# Utility functions
-
-sub _push_tags {
- my($pkg, $var, $syms) = @_;
- my $nontag;
- *export_tags = \%{"${pkg}::EXPORT_TAGS"};
- push(@{"${pkg}::$var"},
- map { $export_tags{$_} ? @{$export_tags{$_}} : scalar(++$nontag,$_) }
- (@$syms) ? @$syms : keys %export_tags);
- if ($nontag and $^W) {
- # This may change to a die one day
- require Carp;
- Carp::carp("Some names are not tags");
- }
+sub export_tags {
+ require Exporter::Heavy;
+ _push_tags((caller)[0], "EXPORT", \@_);
}
-sub export_tags { _push_tags((caller)[0], "EXPORT", \@_) }
-sub export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_) }
-
-
-# Default methods
-
-sub export_fail {
- my $self = shift;
- @_;
+sub export_ok_tags {
+ require Exporter::Heavy;
+ _push_tags((caller)[0], "EXPORT_OK", \@_);
}
-sub require_version {
- my($self, $wanted) = @_;
- my $pkg = ref $self || $self;
- my $version = ${"${pkg}::VERSION"};
- if (!$version or $version < $wanted) {
- $version ||= "(undef)";
- my $file = $INC{"$pkg.pm"};
- $file &&= " ($file)";
- require Carp;
- Carp::croak("$pkg $wanted required--this is only version $version$file")
+sub import {
+ my $pkg = shift;
+ my $callpkg = caller($ExportLevel);
+ *exports = *{"$pkg\::EXPORT"};
+ # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
+ *fail = *{"$pkg\::EXPORT_FAIL"};
+ return export $pkg, $callpkg, @_
+ if $Verbose or $Debug or @fail > 1;
+ my $args = @_ or @_ = @exports;
+
+ if ($args and not %exports) {
+ foreach my $sym (@exports, @{"$pkg\::EXPORT_OK"}) {
+ $sym =~ s/^&//;
+ $exports{$sym} = 1;
}
- $version;
+ }
+ if ($Verbose or $Debug
+ or grep {/\W/ or $args and not exists $exports{$_}
+ or @fail and $_ eq $fail[0]
+ or (@{"$pkg\::EXPORT_OK"}
+ and $_ eq ${"$pkg\::EXPORT_OK"}[0])} @_) {
+ return export $pkg, $callpkg, ($args ? @_ : ());
+ }
+ #local $SIG{__WARN__} = sub {require Carp; goto &Carp::carp};
+ local $SIG{__WARN__} =
+ sub {require Carp; local $Carp::CarpLevel = 1; &Carp::carp};
+ foreach $sym (@_) {
+ # shortcut for the common case of no type character
+ *{"$callpkg\::$sym"} = \&{"$pkg\::$sym"};
+ }
}
1;
@@ -286,6 +119,18 @@ in L<perlfunc> and L<perlmod>. Understanding the concept of
modules and how the C<use> statement operates is important to
understanding the Exporter.
+=head2 How to Export
+
+The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of
+symbols that are going to be exported into the users name space by
+default, or which they can request to be exported, respectively. The
+symbols can represent functions, scalars, arrays, hashes, or typeglobs.
+The symbols must be given by full name with the exception that the
+ampersand in front of a function is optional, e.g.
+
+ @EXPORT = qw(afunc $scalar @array); # afunc is a function
+ @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
+
=head2 Selecting What To Export
Do B<not> export method names!
@@ -364,11 +209,12 @@ Exporter has a special method, 'export_to_level' which is used in situations
where you can't directly call Export's import method. The export_to_level
method looks like:
-MyPackage->export_to_level($where_to_export, @what_to_export);
+MyPackage->export_to_level($where_to_export, $package, @what_to_export);
where $where_to_export is an integer telling how far up the calling stack
to export your symbols, and @what_to_export is an array telling what
-symbols *to* export (usually this is @_).
+symbols *to* export (usually this is @_). The $package argument is
+currently unused.
For example, suppose that you have a module, A, which already has an
import function:
diff --git a/contrib/perl5/lib/Exporter/Heavy.pm b/contrib/perl5/lib/Exporter/Heavy.pm
new file mode 100644
index 0000000..6647f70
--- /dev/null
+++ b/contrib/perl5/lib/Exporter/Heavy.pm
@@ -0,0 +1,225 @@
+package Exporter;
+
+=head1 NAME
+
+Exporter::Heavy - Exporter guts
+
+=head1 SYNOPIS
+
+(internal use only)
+
+=head1 DESCRIPTION
+
+No user-serviceable parts inside.
+
+=cut
+#
+# We go to a lot of trouble not to 'require Carp' at file scope,
+# because Carp requires Exporter, and something has to give.
+#
+
+sub heavy_export {
+
+ # First make import warnings look like they're coming from the "use".
+ local $SIG{__WARN__} = sub {
+ my $text = shift;
+ if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) {
+ require Carp;
+ local $Carp::CarpLevel = 1; # ignore package calling us too.
+ Carp::carp($text);
+ }
+ else {
+ warn $text;
+ }
+ };
+ local $SIG{__DIE__} = sub {
+ require Carp;
+ local $Carp::CarpLevel = 1; # ignore package calling us too.
+ Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")
+ if $_[0] =~ /^Unable to create sub named "(.*?)::"/;
+ };
+
+ my($pkg, $callpkg, @imports) = @_;
+ my($type, $sym, $oops);
+ *exports = *{"${pkg}::EXPORT"};
+
+ if (@imports) {
+ if (!%exports) {
+ grep(s/^&//, @exports);
+ @exports{@exports} = (1) x @exports;
+ my $ok = \@{"${pkg}::EXPORT_OK"};
+ if (@$ok) {
+ grep(s/^&//, @$ok);
+ @exports{@$ok} = (1) x @$ok;
+ }
+ }
+
+ if ($imports[0] =~ m#^[/!:]#){
+ my $tagsref = \%{"${pkg}::EXPORT_TAGS"};
+ my $tagdata;
+ my %imports;
+ my($remove, $spec, @names, @allexports);
+ # negated first item implies starting with default set:
+ unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/;
+ foreach $spec (@imports){
+ $remove = $spec =~ s/^!//;
+
+ if ($spec =~ s/^://){
+ if ($spec eq 'DEFAULT'){
+ @names = @exports;
+ }
+ elsif ($tagdata = $tagsref->{$spec}) {
+ @names = @$tagdata;
+ }
+ else {
+ warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];
+ ++$oops;
+ next;
+ }
+ }
+ elsif ($spec =~ m:^/(.*)/$:){
+ my $patn = $1;
+ @allexports = keys %exports unless @allexports; # only do keys once
+ @names = grep(/$patn/, @allexports); # not anchored by default
+ }
+ else {
+ @names = ($spec); # is a normal symbol name
+ }
+
+ warn "Import ".($remove ? "del":"add").": @names "
+ if $Verbose;
+
+ if ($remove) {
+ foreach $sym (@names) { delete $imports{$sym} }
+ }
+ else {
+ @imports{@names} = (1) x @names;
+ }
+ }
+ @imports = keys %imports;
+ }
+
+ foreach $sym (@imports) {
+ if (!$exports{$sym}) {
+ if ($sym =~ m/^\d/) {
+ $pkg->require_version($sym);
+ # If the version number was the only thing specified
+ # then we should act as if nothing was specified:
+ if (@imports == 1) {
+ @imports = @exports;
+ last;
+ }
+ # We need a way to emulate 'use Foo ()' but still
+ # allow an easy version check: "use Foo 1.23, ''";
+ if (@imports == 2 and !$imports[1]) {
+ @imports = ();
+ last;
+ }
+ } elsif ($sym !~ s/^&// || !$exports{$sym}) {
+ require Carp;
+ Carp::carp(qq["$sym" is not exported by the $pkg module]);
+ $oops++;
+ }
+ }
+ }
+ if ($oops) {
+ require Carp;
+ Carp::croak("Can't continue after import errors");
+ }
+ }
+ else {
+ @imports = @exports;
+ }
+
+ *fail = *{"${pkg}::EXPORT_FAIL"};
+ if (@fail) {
+ if (!%fail) {
+ # Build cache of symbols. Optimise the lookup by adding
+ # barewords twice... both with and without a leading &.
+ # (Technique could be applied to %exports cache at cost of memory)
+ my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @fail;
+ warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
+ @fail{@expanded} = (1) x @expanded;
+ }
+ my @failed;
+ foreach $sym (@imports) { push(@failed, $sym) if $fail{$sym} }
+ if (@failed) {
+ @failed = $pkg->export_fail(@failed);
+ foreach $sym (@failed) {
+ require Carp;
+ Carp::carp(qq["$sym" is not implemented by the $pkg module ],
+ "on this architecture");
+ }
+ if (@failed) {
+ require Carp;
+ Carp::croak("Can't continue after import errors");
+ }
+ }
+ }
+
+ warn "Importing into $callpkg from $pkg: ",
+ join(", ",sort @imports) if $Verbose;
+
+ foreach $sym (@imports) {
+ # shortcut for the common case of no type character
+ (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
+ unless $sym =~ s/^(\W)//;
+ $type = $1;
+ *{"${callpkg}::$sym"} =
+ $type eq '&' ? \&{"${pkg}::$sym"} :
+ $type eq '$' ? \${"${pkg}::$sym"} :
+ $type eq '@' ? \@{"${pkg}::$sym"} :
+ $type eq '%' ? \%{"${pkg}::$sym"} :
+ $type eq '*' ? *{"${pkg}::$sym"} :
+ do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
+ }
+}
+
+sub heavy_export_to_level
+{
+ my $pkg = shift;
+ my $level = shift;
+ (undef) = shift; # XXX redundant arg
+ my $callpkg = caller($level);
+ $pkg->export($callpkg, @_);
+}
+
+# Utility functions
+
+sub _push_tags {
+ my($pkg, $var, $syms) = @_;
+ my $nontag;
+ *export_tags = \%{"${pkg}::EXPORT_TAGS"};
+ push(@{"${pkg}::$var"},
+ map { $export_tags{$_} ? @{$export_tags{$_}} : scalar(++$nontag,$_) }
+ (@$syms) ? @$syms : keys %export_tags);
+ if ($nontag and $^W) {
+ # This may change to a die one day
+ require Carp;
+ Carp::carp("Some names are not tags");
+ }
+}
+
+# Default methods
+
+sub export_fail {
+ my $self = shift;
+ @_;
+}
+
+sub require_version {
+ my($self, $wanted) = @_;
+ my $pkg = ref $self || $self;
+ my $version = ${"${pkg}::VERSION"};
+ if (!$version or $version < $wanted) {
+ $version ||= "(undef)";
+ # %INC contains slashes, but $pkg contains double-colons.
+ my $file = (map {s,::,/,g; $INC{$_}} "$pkg.pm")[0];
+ $file &&= " ($file)";
+ require Carp;
+ Carp::croak("$pkg $wanted required--this is only version $version$file")
+ }
+ $version;
+}
+
+1;
diff --git a/contrib/perl5/lib/ExtUtils/Command.pm b/contrib/perl5/lib/ExtUtils/Command.pm
index e900e51..bccc76c 100644
--- a/contrib/perl5/lib/ExtUtils/Command.pm
+++ b/contrib/perl5/lib/ExtUtils/Command.pm
@@ -1,4 +1,6 @@
package ExtUtils::Command;
+
+use 5.005_64;
use strict;
# use AutoLoader;
use Carp;
@@ -7,7 +9,7 @@ use File::Compare;
use File::Basename;
use File::Path qw(rmtree);
require Exporter;
-use vars qw(@ISA @EXPORT $VERSION);
+our(@ISA, @EXPORT, $VERSION);
@ISA = qw(Exporter);
@EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f);
$VERSION = '1.01';
diff --git a/contrib/perl5/lib/ExtUtils/Embed.pm b/contrib/perl5/lib/ExtUtils/Embed.pm
index 4b56e88..b649b6b 100644
--- a/contrib/perl5/lib/ExtUtils/Embed.pm
+++ b/contrib/perl5/lib/ExtUtils/Embed.pm
@@ -51,7 +51,7 @@ sub xsinit {
my($file, $std, $mods) = @_;
my($fh,@mods,%seen);
$file ||= "perlxsi.c";
- my $xsinit_proto = is_perl_object() ? "CPERLarg" : "void";
+ my $xsinit_proto = "pTHXo";
if (@_) {
@mods = @$mods if $mods;
@@ -75,7 +75,7 @@ sub xsinit {
@mods = grep(!$seen{$_}++, @mods);
print $fh &xsi_header();
- print $fh "EXTERN_C void xs_init _(($xsinit_proto));\n\n";
+ print $fh "EXTERN_C void xs_init ($xsinit_proto);\n\n";
print $fh &xsi_protos(@mods);
print $fh "\nEXTERN_C void\nxs_init($xsinit_proto)\n{\n";
@@ -120,14 +120,13 @@ EOF
sub xsi_protos {
my(@exts) = @_;
my(@retval,%seen);
- my $boot_proto = is_perl_object() ?
- "CV* cv _CPERLarg" : "CV* cv";
+ my $boot_proto = "pTHXo_ CV* cv";
foreach $_ (@exts){
my($pname) = canon('/', $_);
my($mname, $cname);
($mname = $pname) =~ s!/!::!g;
($cname = $pname) =~ s!/!__!g;
- my($ccode) = "EXTERN_C void boot_${cname} _(($boot_proto));\n";
+ my($ccode) = "EXTERN_C void boot_${cname} ($boot_proto);\n";
next if $seen{$ccode}++;
push(@retval, $ccode);
}
@@ -333,7 +332,7 @@ B<[@modules]> is an array ref, same as additional arguments mentioned above.
This will generate code with an B<xs_init> function that glues the perl B<Socket::bootstrap> function
-to the C B<boot_Socket> function and writes it to a file named "xsinit.c".
+to the C B<boot_Socket> function and writes it to a file named F<xsinit.c>.
Note that B<DynaLoader> is a special case where it must call B<boot_DynaLoader> directly.
@@ -379,7 +378,7 @@ we should find B<auto/Socket/Socket.a>
When looking for B<DBD::Oracle> relative to a search path,
we should find B<auto/DBD/Oracle/Oracle.a>
-Keep in mind, you can always supply B</my/own/path/ModuleName.a>
+Keep in mind that you can always supply B</my/own/path/ModuleName.a>
as an additional linker argument.
B<--> E<lt>list of linker argsE<gt>
@@ -393,7 +392,7 @@ When invoked with parameters the following are accepted and optional:
C<ldopts($std,[@modules],[@link_args],$path)>
-Where,
+Where:
B<$std> is boolean, equivalent to the B<-std> option.
diff --git a/contrib/perl5/lib/ExtUtils/Install.pm b/contrib/perl5/lib/ExtUtils/Install.pm
index f75aa55..36c7221 100644
--- a/contrib/perl5/lib/ExtUtils/Install.pm
+++ b/contrib/perl5/lib/ExtUtils/Install.pm
@@ -1,12 +1,13 @@
package ExtUtils::Install;
+use 5.005_64;
+our(@ISA, @EXPORT, $VERSION);
$VERSION = substr q$Revision: 1.28 $, 10;
# $Date: 1998/01/25 07:08:24 $
use Exporter;
use Carp ();
use Config qw(%Config);
-use vars qw(@ISA @EXPORT $VERSION);
@ISA = ('Exporter');
@EXPORT = ('install','uninstall','pm_to_blib', 'install_default');
$Is_VMS = $^O eq 'VMS';
@@ -15,7 +16,7 @@ my $splitchar = $^O eq 'VMS' ? '|' : ($^O eq 'os2' || $^O eq 'dos') ? ';' : ':';
my @PERL_ENV_LIB = split $splitchar, defined $ENV{'PERL5LIB'} ? $ENV{'PERL5LIB'} : $ENV{'PERLLIB'} || '';
my $Inc_uninstall_warn_handler;
-#use vars qw( @EXPORT @ISA $Is_VMS );
+#our(@EXPORT, @ISA, $Is_VMS);
#use strict;
sub forceunlink {
@@ -67,7 +68,6 @@ sub install {
}
$packlist->read($pack{"read"}) if (-f $pack{"read"});
my $cwd = cwd();
- my $umask = umask 0 unless $Is_VMS;
my($source);
MOD_INSTALL: foreach $source (sort keys %hash) {
@@ -85,9 +85,7 @@ sub install {
exists $hash{"blib/arch"} and
directory_not_empty("blib/arch")) {
$targetroot = $hash{"blib/arch"};
- print "Files found in blib/arch --> Installing files in "
- . "blib/lib into architecture dependend library tree!\n"
- ; #if $verbose>1;
+ print "Files found in blib/arch: installing files in blib/lib into architecture dependent library tree\n";
}
chdir($source) or next;
find(sub {
@@ -136,7 +134,6 @@ sub install {
}, ".");
chdir($cwd) or Carp::croak("Couldn't chdir to $cwd: $!");
}
- umask $umask unless $Is_VMS;
if ($pack{'write'}) {
$dir = dirname($pack{'write'});
mkpath($dir,0,0755);
@@ -195,7 +192,6 @@ sub uninstall {
forceunlink($_) unless $nonono;
}
print "unlink $fil\n" if $verbose;
- close P;
forceunlink($fil) unless $nonono;
}
@@ -228,7 +224,7 @@ sub inc_uninstall {
if ($nonono) {
if ($verbose) {
$Inc_uninstall_warn_handler ||= new ExtUtils::Install::Warn;
- $libdir =~ s|^\./|| ; # That's just cosmetics, no need to port. It looks prettier.
+ $libdir =~ s|^\./||s ; # That's just cosmetics, no need to port. It looks prettier.
$Inc_uninstall_warn_handler->add("$libdir/$file",$targetfile);
}
# if not verbose, we just say nothing
@@ -261,7 +257,6 @@ sub pm_to_blib {
close(FROMTO);
}
- my $umask = umask 0022 unless $Is_VMS;
mkpath($autodir,0,0755);
foreach (keys %$fromto) {
next if -f $fromto->{$_} && -M $fromto->{$_} < -M $_;
@@ -279,10 +274,9 @@ sub pm_to_blib {
utime($atime,$mtime+$Is_VMS,$fromto->{$_});
chmod(0444 | ( $mode & 0111 ? 0111 : 0 ),$fromto->{$_});
print "cp $_ $fromto->{$_}\n";
- next unless /\.pm$/;
+ next unless /\.pm\z/;
autosplit($fromto->{$_},$autodir);
}
- umask $umask unless $Is_VMS;
}
package ExtUtils::Install::Warn;
@@ -345,7 +339,7 @@ There are two keys with a special meaning in the hash: "read" and
target files to the file named by C<$hashref-E<gt>{write}>. If there is
another file named by C<$hashref-E<gt>{read}>, the contents of this file will
be merged into the written file. The read and the written file may be
-identical, but on AFS it is quite likely, people are installing to a
+identical, but on AFS it is quite likely that people are installing to a
different directory than the one where the files later appear.
install_default() takes one or less arguments. If no arguments are
@@ -358,7 +352,7 @@ The argument-less form is convenient for install scripts like
perl -MExtUtils::Install -e install_default Tk/Canvas
-Assuming this command is executed in a directory with populated F<blib>
+Assuming this command is executed in a directory with a populated F<blib>
directory, it will proceed as if the F<blib> was build by MakeMaker on
this machine. This is useful for binary distributions.
diff --git a/contrib/perl5/lib/ExtUtils/Installed.pm b/contrib/perl5/lib/ExtUtils/Installed.pm
index dda594e..6961c6f 100644
--- a/contrib/perl5/lib/ExtUtils/Installed.pm
+++ b/contrib/perl5/lib/ExtUtils/Installed.pm
@@ -1,4 +1,6 @@
package ExtUtils::Installed;
+
+use 5.005_64;
use strict;
use Carp qw();
use ExtUtils::Packlist;
@@ -6,8 +8,7 @@ use ExtUtils::MakeMaker;
use Config;
use File::Find;
use File::Basename;
-use vars qw($VERSION);
-$VERSION = '0.02';
+our $VERSION = '0.02';
sub _is_type($$$)
{
@@ -56,7 +57,7 @@ my $self = {};
# Read the core packlist
$self->{Perl}{packlist} =
ExtUtils::Packlist->new("$Config{installarchlib}/.packlist");
-$self->{Perl}{version} = $];
+$self->{Perl}{version} = $Config{version};
# Read the module packlists
my $sub = sub
@@ -66,8 +67,8 @@ my $sub = sub
# Hack of the leading bits of the paths & convert to a module name
my $module = $File::Find::name;
- $module =~ s!$Config{archlib}/auto/(.*)/.packlist!$1!;
- $module =~ s!$Config{sitearch}/auto/(.*)/.packlist!$1!;
+ $module =~ s!$Config{archlib}/auto/(.*)/.packlist!$1!s;
+ $module =~ s!$Config{sitearch}/auto/(.*)/.packlist!$1!s;
my $modfile = "$module.pm";
$module =~ s!/!::!g;
diff --git a/contrib/perl5/lib/ExtUtils/Liblist.pm b/contrib/perl5/lib/ExtUtils/Liblist.pm
index dae3125..6029557 100644
--- a/contrib/perl5/lib/ExtUtils/Liblist.pm
+++ b/contrib/perl5/lib/ExtUtils/Liblist.pm
@@ -1,8 +1,9 @@
package ExtUtils::Liblist;
-use vars qw($VERSION);
+
+use 5.005_64;
# Broken out of MakeMaker from version 4.11
-$VERSION = substr q$Revision: 1.25 $, 10;
+our $VERSION = substr q$Revision: 1.25 $, 10;
use Config;
use Cwd 'cwd';
@@ -108,13 +109,14 @@ sub _unix_os2_ext {
} elsif (-f ($fullname="$thispth/lib$thislib.$so")
&& (($Config{'dlsrc'} ne "dl_dld.xs") || ($thislib eq "m"))){
} elsif (-f ($fullname="$thispth/lib${thislib}_s$Config_libext")
+ && (! $Config{'archname'} =~ /RM\d\d\d-svr4/)
&& ($thislib .= "_s") ){ # we must explicitly use _s version
} elsif (-f ($fullname="$thispth/lib$thislib$Config_libext")){
} elsif (-f ($fullname="$thispth/$thislib$Config_libext")){
} elsif (-f ($fullname="$thispth/Slib$thislib$Config_libext")){
} elsif ($^O eq 'dgux'
&& -l ($fullname="$thispth/lib$thislib$Config_libext")
- && readlink($fullname) =~ /^elink:/) {
+ && readlink($fullname) =~ /^elink:/s) {
# Some of DG's libraries look like misconnected symbolic
# links, but development tools can follow them. (They
# look like this:
@@ -136,7 +138,7 @@ sub _unix_os2_ext {
# Now update library lists
# what do we know about this library...
- my $is_dyna = ($fullname !~ /\Q$Config_libext\E$/);
+ my $is_dyna = ($fullname !~ /\Q$Config_libext\E\z/);
my $in_perl = ($libs =~ /\B-l\Q$ {thislib}\E\b/s);
# Do not add it into the list if it is already linked in
@@ -362,7 +364,7 @@ sub _vms_ext {
return ('', '', $crtlstr, '');
}
- my(@dirs,@libs,$dir,$lib,%sh,%olb,%obj,$ldlib);
+ my(@dirs,@libs,$dir,$lib,%found,@fndlibs,$ldlib);
my $cwd = cwd();
my($so,$lib_ext,$obj_ext) = @Config{'so','lib_ext','obj_ext'};
# List of common Unix library names and there VMS equivalents
@@ -430,28 +432,28 @@ sub _vms_ext {
warn "\tChecking $name\n" if $verbose > 2;
if (-f ($test = VMS::Filespec::rmsexpand($name))) {
# It's got its own suffix, so we'll have to figure out the type
- if ($test =~ /(?:$so|exe)$/i) { $type = 'sh'; }
- elsif ($test =~ /(?:$lib_ext|olb)$/i) { $type = 'olb'; }
+ if ($test =~ /(?:$so|exe)$/i) { $type = 'SHR'; }
+ elsif ($test =~ /(?:$lib_ext|olb)$/i) { $type = 'OLB'; }
elsif ($test =~ /(?:$obj_ext|obj)$/i) {
warn "Note (probably harmless): "
."Plain object file $test found in library list\n";
- $type = 'obj';
+ $type = 'OBJ';
}
else {
warn "Note (probably harmless): "
."Unknown library type for $test; assuming shared\n";
- $type = 'sh';
+ $type = 'SHR';
}
}
elsif (-f ($test = VMS::Filespec::rmsexpand($name,$so)) or
-f ($test = VMS::Filespec::rmsexpand($name,'.exe'))) {
- $type = 'sh';
+ $type = 'SHR';
$name = $test unless $test =~ /exe;?\d*$/i;
}
elsif (not length($ctype) and # If we've got a lib already, don't bother
( -f ($test = VMS::Filespec::rmsexpand($name,$lib_ext)) or
-f ($test = VMS::Filespec::rmsexpand($name,'.olb')))) {
- $type = 'olb';
+ $type = 'OLB';
$name = $test unless $test =~ /olb;?\d*$/i;
}
elsif (not length($ctype) and # If we've got a lib already, don't bother
@@ -459,17 +461,18 @@ sub _vms_ext {
-f ($test = VMS::Filespec::rmsexpand($name,'.obj')))) {
warn "Note (probably harmless): "
."Plain object file $test found in library list\n";
- $type = 'obj';
+ $type = 'OBJ';
$name = $test unless $test =~ /obj;?\d*$/i;
}
if (defined $type) {
$ctype = $type; $cand = $name;
- last if $ctype eq 'sh';
+ last if $ctype eq 'SHR';
}
}
if ($ctype) {
- eval '$' . $ctype . "{'$cand'}++";
- die "Error recording library: $@" if $@;
+ # This has to precede any other CRTLs, so just make it first
+ if ($cand eq 'VAXCCURSE') { unshift @{$found{$ctype}}, $cand; }
+ else { push @{$found{$ctype}}, $cand; }
warn "\tFound as $cand (really $test), type $ctype\n" if $verbose > 1;
next LIB;
}
@@ -478,15 +481,10 @@ sub _vms_ext {
."No library found for $lib\n";
}
- @libs = sort keys %obj;
- # This has to precede any other CRTLs, so just make it first
- if ($olb{VAXCCURSE}) {
- push(@libs,"$olb{VAXCCURSE}/Library");
- delete $olb{VAXCCURSE};
- }
- push(@libs, map { "$_/Library" } sort keys %olb);
- push(@libs, map { "$_/Share" } sort keys %sh);
- $lib = join(' ',@libs);
+ push @fndlibs, @{$found{OBJ}} if exists $found{OBJ};
+ push @fndlibs, map { "$_/Library" } @{$found{OLB}} if exists $found{OLB};
+ push @fndlibs, map { "$_/Share" } @{$found{SHR}} if exists $found{SHR};
+ $lib = join(' ',@fndlibs);
$ldlib = $crtlstr ? "$lib $crtlstr" : $lib;
warn "Result:\n\tEXTRALIBS: $lib\n\tLDLOADLIBS: $ldlib\n" if $verbose;
@@ -544,7 +542,7 @@ below.
=head2 EXTRALIBS
List of libraries that need to be linked with when linking a perl
-binary which includes this extension Only those libraries that
+binary which includes this extension. Only those libraries that
actually exist are included. These are written to a file and used
when linking perl.
@@ -566,7 +564,7 @@ object file. This list is used to create a .bs (bootstrap) file.
=head1 PORTABILITY
This module deals with a lot of system dependencies and has quite a
-few architecture specific B<if>s in the code.
+few architecture specific C<if>s in the code.
=head2 VMS implementation
@@ -686,7 +684,7 @@ enable searching for default libraries specified by C<$Config{libs}>.
The libraries specified may be a mixture of static libraries and
import libraries (to link with DLLs). Since both kinds are used
-pretty transparently on the win32 platform, we do not attempt to
+pretty transparently on the Win32 platform, we do not attempt to
distinguish between them.
=item *
diff --git a/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm b/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
new file mode 100644
index 0000000..a5ba410
--- /dev/null
+++ b/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
@@ -0,0 +1,121 @@
+package ExtUtils::MM_Cygwin;
+
+use Config;
+#use Cwd;
+#use File::Basename;
+require Exporter;
+
+Exporter::import('ExtUtils::MakeMaker',
+ qw( $Verbose &neatvalue));
+
+unshift @MM::ISA, 'ExtUtils::MM_Cygwin';
+
+sub canonpath {
+ my($self,$path) = @_;
+ $path =~ s|\\|/|g;
+ return $self->ExtUtils::MM_Unix::canonpath($path);
+}
+
+sub cflags {
+ my($self,$libperl)=@_;
+ return $self->{CFLAGS} if $self->{CFLAGS};
+ my $base =$self->ExtUtils::MM_Unix::cflags($libperl);
+ foreach (split /\n/, $base) {
+ / *= */ and $self->{$`} = $';
+ };
+ $self->{CCFLAGS} .= " -DUSEIMPORTLIB" if ($Config{useshrplib} eq 'true');
+
+ return $self->{CFLAGS} = qq{
+CCFLAGS = $self->{CCFLAGS}
+OPTIMIZE = $self->{OPTIMIZE}
+PERLTYPE = $self->{PERLTYPE}
+LARGE = $self->{LARGE}
+SPLIT = $self->{SPLIT}
+};
+
+}
+
+sub manifypods {
+ my($self, %attribs) = @_;
+ return "\nmanifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
+ %{$self->{MAN3PODS}} or %{$self->{MAN1PODS}};
+ my($dist);
+ my($pod2man_exe);
+ if (defined $self->{PERL_SRC}) {
+ $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
+ } else {
+ $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
+ }
+ unless ($self->perl_script($pod2man_exe)) {
+ # No pod2man but some MAN3PODS to be installed
+ print <<END;
+
+Warning: I could not locate your pod2man program. Please make sure,
+ your pod2man program is in your PATH before you execute 'make'
+
+END
+ $pod2man_exe = "-S pod2man";
+ }
+ my(@m);
+ push @m,
+qq[POD2MAN_EXE = $pod2man_exe\n],
+qq[POD2MAN = \$(PERL) -we '%m=\@ARGV;for (keys %m){' \\\n],
+q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "],
+ $self->{MAKEFILE}, q[";' \\
+-e 'print "Manifying $$m{$$_}\n"; $$m{$$_} =~ s/::/./g;' \\
+-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
+-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+];
+ push @m, "\nmanifypods : pure_all ";
+ push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}};
+
+ push(@m,"\n");
+ if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
+ push @m, "\t$self->{NOECHO}\$(POD2MAN) \\\n\t";
+ push @m, join " \\\n\t", %{$self->{MAN1PODS}}, %{$self->{MAN3PODS}};
+ }
+ join('', @m);
+}
+
+sub perl_archive
+{
+ return '$(PERL_INC)' .'/'. ("$Config{libperl}" or "libperl.a");
+}
+
+1;
+__END__
+
+=head1 NAME
+
+ExtUtils::MM_Cygwin - methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=head1 SYNOPSIS
+
+ use ExtUtils::MM_Cygwin; # Done internally by ExtUtils::MakeMaker if needed
+
+=head1 DESCRIPTION
+
+See ExtUtils::MM_Unix for a documentation of the methods provided there.
+
+=over
+
+=item canonpath
+
+replaces backslashes with forward ones. then acts as *nixish.
+
+=item cflags
+
+if configured for dynamic loading, triggers #define EXT in EXTERN.h
+
+=item manifypods
+
+replaces strings '::' with '.' in man page names
+
+=item perl_archive
+
+points to libperl.a
+
+=back
+
+=cut
+
diff --git a/contrib/perl5/lib/ExtUtils/MM_OS2.pm b/contrib/perl5/lib/ExtUtils/MM_OS2.pm
index 5d6034c..430235a 100644
--- a/contrib/perl5/lib/ExtUtils/MM_OS2.pm
+++ b/contrib/perl5/lib/ExtUtils/MM_OS2.pm
@@ -25,13 +25,13 @@ sub dlsyms {
$self->{BASEEXT}.def: Makefile.PL
",
' $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e \'use ExtUtils::Mksymlists; \\
- Mksymlists("NAME" => "', $self->{NAME},
- '", "DLBASE" => "',$self->{DLBASE},
- '", "DL_FUNCS" => ',neatvalue($funcs),
+ Mksymlists("NAME" => "$(NAME)", "DLBASE" => "$(DLBASE)", ',
+ '"VERSION" => "$(VERSION)", "DISTNAME" => "$(DISTNAME)", ',
+ '"INSTALLDIRS" => "$(INSTALLDIRS)", ',
+ '"DL_FUNCS" => ',neatvalue($funcs),
', "FUNCLIST" => ',neatvalue($funclist),
', "IMPORTS" => ',neatvalue($imports),
- ', "VERSION" => "',$self->{VERSION},
- '", "DL_VARS" => ', neatvalue($vars), ');\'
+ ', "DL_VARS" => ', neatvalue($vars), ');\'
');
}
if (%{$self->{IMPORTS}}) {
diff --git a/contrib/perl5/lib/ExtUtils/MM_Unix.pm b/contrib/perl5/lib/ExtUtils/MM_Unix.pm
index 38bb061..4c8da33 100644
--- a/contrib/perl5/lib/ExtUtils/MM_Unix.pm
+++ b/contrib/perl5/lib/ExtUtils/MM_Unix.pm
@@ -8,11 +8,10 @@ use strict;
use vars qw($VERSION $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos $Is_PERL_OBJECT
$Verbose %pm %static $Xsubpp_Version);
-$VERSION = substr q$Revision: 1.12602 $, 10;
+$VERSION = substr q$Revision: 1.12603 $, 10;
# $Id: MM_Unix.pm,v 1.126 1998/06/28 21:32:49 k Exp k $
-Exporter::import('ExtUtils::MakeMaker',
- qw( $Verbose &neatvalue));
+Exporter::import('ExtUtils::MakeMaker', qw($Verbose &neatvalue));
$Is_OS2 = $^O eq 'os2';
$Is_Mac = $^O eq 'MacOS';
@@ -81,13 +80,13 @@ path. On UNIX eliminated successive slashes and successive "/.".
sub canonpath {
my($self,$path) = @_;
my $node = '';
- if ( $^O eq 'qnx' && $path =~ s|^(//\d+)/|/| ) {
+ if ( $^O eq 'qnx' && $path =~ s|^(//\d+)/|/|s ) {
$node = $1;
}
$path =~ s|(?<=[^/])/+|/|g ; # xx////xx -> xx/xx
$path =~ s|(/\.)+/|/|g ; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+|| unless $path eq "./"; # ./xx -> xx
- $path =~ s|(?<=[^/])/$|| ; # xx/ -> xx
+ $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
+ $path =~ s|(?<=[^/])/\z|| ; # xx/ -> xx
"$node$path";
}
@@ -188,6 +187,7 @@ sub ExtUtils::MM_Unix::fixin ;
sub ExtUtils::MM_Unix::force ;
sub ExtUtils::MM_Unix::guess_name ;
sub ExtUtils::MM_Unix::has_link_code ;
+sub ExtUtils::MM_Unix::htmlifypods ;
sub ExtUtils::MM_Unix::init_dirscan ;
sub ExtUtils::MM_Unix::init_main ;
sub ExtUtils::MM_Unix::init_others ;
@@ -375,21 +375,45 @@ sub cflags {
$self->{uc $_} ||= $cflags{$_}
}
- if ($self->{CAPI} && $Is_PERL_OBJECT) {
- $self->{CCFLAGS} =~ s/-DPERL_OBJECT(\s|$)//;
- $self->{CCFLAGS} .= ' -DPERL_CAPI ';
- if ($Is_Win32 && $Config{'cc'} =~ /^cl.exe/i) {
- # Turn off C++ mode of the MSC compiler
- $self->{CCFLAGS} =~ s/-TP(\s|$)//;
- $self->{OPTIMIZE} =~ s/-TP(\s|$)//;
+ if ($Is_PERL_OBJECT) {
+ $self->{CCFLAGS} =~ s/-DPERL_OBJECT(\b|$)/-DPERL_CAPI/g;
+ if ($Is_Win32) {
+ if ($Config{'cc'} =~ /^cl/i) {
+ # Turn off C++ mode of the MSC compiler
+ $self->{CCFLAGS} =~ s/-TP(\s|$)//g;
+ $self->{OPTIMIZE} =~ s/-TP(\s|$)//g;
+ }
+ elsif ($Config{'cc'} =~ /^bcc32/i) {
+ # Turn off C++ mode of the Borland compiler
+ $self->{CCFLAGS} =~ s/-P(\s|$)//g;
+ $self->{OPTIMIZE} =~ s/-P(\s|$)//g;
+ }
+ elsif ($Config{'cc'} =~ /^gcc/i) {
+ # Turn off C++ mode of the GCC compiler
+ $self->{CCFLAGS} =~ s/-xc\+\+(\s|$)//g;
+ $self->{OPTIMIZE} =~ s/-xc\+\+(\s|$)//g;
+ }
}
}
+
+ if ($self->{POLLUTE}) {
+ $self->{CCFLAGS} .= ' -DPERL_POLLUTE ';
+ }
+
+ my $pollute = '';
+ if ($Config{usemymalloc} and not $Config{bincompat5005}
+ and not $Config{ccflags} =~ /-DPERL_POLLUTE_MALLOC\b/
+ and $self->{PERL_MALLOC_OK}) {
+ $pollute = '$(PERL_MALLOC_DEF)';
+ }
+
return $self->{CFLAGS} = qq{
CCFLAGS = $self->{CCFLAGS}
OPTIMIZE = $self->{OPTIMIZE}
PERLTYPE = $self->{PERLTYPE}
LARGE = $self->{LARGE}
SPLIT = $self->{SPLIT}
+MPOLLUTE = $pollute
};
}
@@ -413,13 +437,26 @@ clean ::
');
# clean subdirectories first
for $dir (@{$self->{DIR}}) {
- push @m, "\t-cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean\n";
+ if ($Is_Win32 && Win32::IsWin95()) {
+ push @m, <<EOT;
+ cd $dir
+ \$(TEST_F) $self->{MAKEFILE}
+ \$(MAKE) clean
+ cd ..
+EOT
+ }
+ else {
+ push @m, <<EOT;
+ -cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean
+EOT
+ }
}
my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files
push(@otherfiles, $attribs{FILES}) if $attribs{FILES};
push(@otherfiles, qw[./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all
- perlmain.c mon.out core so_locations pm_to_blib
+ perlmain.c mon.out core core.*perl.*.?
+ *perl.core so_locations pm_to_blib
*~ */*~ */*/*~ *$(OBJ_EXT) *$(LIB_EXT) perl.exe
$(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def
$(BASEEXT).exp
@@ -446,7 +483,7 @@ sub const_cccmd {
return '' unless $self->needs_linking();
return $self->{CONST_CCCMD} =
q{CCCMD = $(CC) -c $(INC) $(CCFLAGS) $(OPTIMIZE) \\
- $(PERLTYPE) $(LARGE) $(SPLIT) $(DEFINE_VERSION) \\
+ $(PERLTYPE) $(LARGE) $(SPLIT) $(MPOLLUTE) $(DEFINE_VERSION) \\
$(XS_DEFINE_VERSION)};
}
@@ -519,7 +556,7 @@ sub constants {
INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC
- PERL_INC PERL FULLPERL
+ PERL_INC PERL FULLPERL FULL_AR
/ ) {
next unless defined $self->{$tmp};
@@ -531,6 +568,7 @@ VERSION_MACRO = VERSION
DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
};
push @m, qq{
@@ -560,12 +598,19 @@ XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
C_FILES = ".join(" \\\n\t", @{$self->{C}})."
O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
H_FILES = ".join(" \\\n\t", @{$self->{H}})."
+HTMLLIBPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
+HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
";
for $tmp (qw/
- INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
+ INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
+ INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
+ INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
+ INST_HTMLLIBDIR HTMLEXT
+ INST_MAN1DIR INSTALLMAN1DIR MAN1EXT
+ INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
/) {
next unless defined $self->{$tmp};
push @m, "$tmp = $self->{$tmp}\n";
@@ -693,7 +738,7 @@ sub dir_target {
my($targ) = $self->catfile($dir,'.exists');
# catfile may have adapted syntax of $dir to target OS, so...
if ($Is_VMS) { # Just remove file name; dirspec is often in macro
- ($targdir = $targ) =~ s:/?\.exists$::;
+ ($targdir = $targ) =~ s:/?\.exists\z::;
}
else { # while elsewhere we expect to see the dir separator in $targ
$targdir = dirname($targ);
@@ -1079,10 +1124,10 @@ Takes as argument a path and returns true, if it is an absolute path.
sub file_name_is_absolute {
my($self,$file) = @_;
if ($Is_Dos){
- $file =~ m{^([a-z]:)?[\\/]}i ;
+ $file =~ m{^([a-z]:)?[\\/]}is ;
}
else {
- $file =~ m:^/: ;
+ $file =~ m:^/:s ;
}
}
@@ -1265,7 +1310,7 @@ sub guess_name {
my($self) = @_;
use Cwd 'cwd';
my $name = basename(cwd());
- $name =~ s|[\-_][\d\.\-]+$||; # this is new with MM 5.00, we
+ $name =~ s|[\-_][\d\.\-]+\z||; # this is new with MM 5.00, we
# strip minus or underline
# followed by a float or some such
print "Warning: Guessing NAME [$name] from current directory name.\n";
@@ -1290,9 +1335,60 @@ sub has_link_code {
return $self->{HAS_LINK_CODE} = 0;
}
+=item htmlifypods (o)
+
+Defines targets and routines to translate the pods into HTML manpages
+and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
+directories.
+
+=cut
+
+sub htmlifypods {
+ my($self, %attribs) = @_;
+ return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
+ %{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
+ my($dist);
+ my($pod2html_exe);
+ if (defined $self->{PERL_SRC}) {
+ $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
+ } else {
+ $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
+ }
+ unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
+ # No pod2html but some HTMLxxxPODS to be installed
+ print <<END;
+
+Warning: I could not locate your pod2html program. Please make sure,
+ your pod2html program is in your PATH before you execute 'make'
+
+END
+ $pod2html_exe = "-S pod2html";
+ }
+ my(@m);
+ push @m,
+qq[POD2HTML_EXE = $pod2html_exe\n],
+qq[POD2HTML = \$(PERL) -we 'use File::Basename; use File::Path qw(mkpath); %m=\@ARGV;for (keys %m){' \\\n],
+q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "],
+ $self->{MAKEFILE}, q[";' \\
+-e 'print "Htmlifying $$m{$$_}\n";' \\
+-e '$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;' \\
+-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
+-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+];
+ push @m, "\nhtmlifypods : pure_all ";
+ push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
+
+ push(@m,"\n");
+ if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
+ push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
+ push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
+ }
+ join('', @m);
+}
+
=item init_dirscan
-Initializes DIR, XS, PM, C, O_FILES, H, PL_FILES, MAN*PODS, EXE_FILES.
+Initializes DIR, XS, PM, C, O_FILES, H, PL_FILES, HTML*PODS, MAN*PODS, EXE_FILES.
=cut
@@ -1309,24 +1405,26 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
if (-d $name){
next if -l $name; # We do not support symlinks at all
$dir{$name} = $name if (-f $self->catfile($name,"Makefile.PL"));
- } elsif ($name =~ /\.xs$/){
- my($c); ($c = $name) =~ s/\.xs$/.c/;
+ } elsif ($name =~ /\.xs\z/){
+ my($c); ($c = $name) =~ s/\.xs\z/.c/;
$xs{$name} = $c;
$c{$c} = 1;
- } elsif ($name =~ /\.c(pp|xx|c)?$/i){ # .c .C .cpp .cxx .cc
+ } elsif ($name =~ /\.c(pp|xx|c)?\z/i){ # .c .C .cpp .cxx .cc
$c{$name} = 1
unless $name =~ m/perlmain\.c/; # See MAP_TARGET
- } elsif ($name =~ /\.h$/i){
+ } elsif ($name =~ /\.h\z/i){
$h{$name} = 1;
- } elsif ($name =~ /\.PL$/) {
- ($pl_files{$name} = $name) =~ s/\.PL$// ;
- } elsif ($Is_VMS && $name =~ /\.pl$/) { # case-insensitive filesystem
+ } elsif ($name =~ /\.PL\z/) {
+ ($pl_files{$name} = $name) =~ s/\.PL\z// ;
+ } elsif (($Is_VMS || $Is_Dos) && $name =~ /[._]pl$/i) {
+ # case-insensitive filesystem, one dot per name, so foo.h.PL
+ # under Unix appears as foo.h_pl under VMS or fooh.pl on Dos
local($/); open(PL,$name); my $txt = <PL>; close PL;
if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
- ($pl_files{$name} = $name) =~ s/\.pl$// ;
+ ($pl_files{$name} = $name) =~ s/[._]pl\z//i ;
}
else { $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name); }
- } elsif ($name =~ /\.(p[ml]|pod)$/){
+ } elsif ($name =~ /\.(p[ml]|pod)\z/){
$pm{$name} = $self->catfile('$(INST_LIBDIR)',$name);
}
}
@@ -1401,70 +1499,64 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
$self->{PM} = \%pm unless $self->{PM};
$self->{C} = [sort keys %c] unless $self->{C};
my(@o_files) = @{$self->{C}};
- $self->{O_FILES} = [grep s/\.c(pp|xx|c)?$/$self->{OBJ_EXT}/i, @o_files] ;
+ $self->{O_FILES} = [grep s/\.c(pp|xx|c)?\z/$self->{OBJ_EXT}/i, @o_files] ;
$self->{H} = [sort keys %h] unless $self->{H};
$self->{PL_FILES} = \%pl_files unless $self->{PL_FILES};
# Set up names of manual pages to generate from pods
- if ($self->{MAN1PODS}) {
- } elsif ( $self->{INST_MAN1DIR} =~ /^(none|\s*)$/ ) {
- $self->{MAN1PODS} = {};
- } else {
- my %manifypods = ();
+ my %pods;
+ foreach my $man (qw(MAN1 MAN3 HTMLLIB HTMLSCRIPT)) {
+ unless ($self->{"${man}PODS"}) {
+ $self->{"${man}PODS"} = {};
+ $pods{$man} = 1 unless $self->{"INST_${man}DIR"} =~ /^(none|\s*)$/;
+ }
+ }
+
+ if ($pods{MAN1} || $pods{HTMLSCRIPT}) {
if ( exists $self->{EXE_FILES} ) {
foreach $name (@{$self->{EXE_FILES}}) {
-# use FileHandle ();
-# my $fh = new FileHandle;
local *FH;
my($ispod)=0;
-# if ($fh->open("<$name")) {
if (open(FH,"<$name")) {
-# while (<$fh>) {
while (<FH>) {
if (/^=head1\s+\w+/) {
$ispod=1;
last;
}
}
-# $fh->close;
close FH;
} else {
# If it doesn't exist yet, we assume, it has pods in it
$ispod = 1;
}
- if( $ispod ) {
- $manifypods{$name} =
- $self->catfile('$(INST_MAN1DIR)',
- basename($name).'.$(MAN1EXT)');
+ next unless $ispod;
+ if ($pods{HTMLSCRIPT}) {
+ $self->{HTMLSCRIPTPODS}->{$name} =
+ $self->catfile("\$(INST_HTMLSCRIPTDIR)", basename($name).".\$(HTMLEXT)");
+ }
+ if ($pods{MAN1}) {
+ $self->{MAN1PODS}->{$name} =
+ $self->catfile("\$(INST_MAN1DIR)", basename($name).".\$(MAN1EXT)");
}
}
}
- $self->{MAN1PODS} = \%manifypods;
}
- if ($self->{MAN3PODS}) {
- } elsif ( $self->{INST_MAN3DIR} =~ /^(none|\s*)$/ ) {
- $self->{MAN3PODS} = {};
- } else {
+ if ($pods{MAN3} || $pods{HTMLLIB}) {
my %manifypods = (); # we collect the keys first, i.e. the files
# we have to convert to pod
foreach $name (keys %{$self->{PM}}) {
- if ($name =~ /\.pod$/ ) {
+ if ($name =~ /\.pod\z/ ) {
$manifypods{$name} = $self->{PM}{$name};
- } elsif ($name =~ /\.p[ml]$/ ) {
-# use FileHandle ();
-# my $fh = new FileHandle;
+ } elsif ($name =~ /\.p[ml]\z/ ) {
local *FH;
my($ispod)=0;
-# $fh->open("<$name");
if (open(FH,"<$name")) {
- # while (<$fh>) {
while (<FH>) {
if (/^=head1\s+\w+/) {
$ispod=1;
last;
}
}
- # $fh->close;
close FH;
} else {
$ispod = 1;
@@ -1478,19 +1570,25 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
# Remove "Configure.pm" and similar, if it's not the only pod listed
# To force inclusion, just name it "Configure.pod", or override MAN3PODS
foreach $name (keys %manifypods) {
- if ($name =~ /(config|setup).*\.pm/i) {
+ if ($name =~ /(config|setup).*\.pm/is) {
delete $manifypods{$name};
next;
}
my($manpagename) = $name;
- unless ($manpagename =~ s!^\W*lib\W+!!) { # everything below lib is ok
+ $manpagename =~ s/\.p(od|m|l)\z//;
+ if ($pods{HTMLLIB}) {
+ $self->{HTMLLIBPODS}->{$name} =
+ $self->catfile("\$(INST_HTMLLIBDIR)", "$manpagename.\$(HTMLEXT)");
+ }
+ unless ($manpagename =~ s!^\W*lib\W+!!s) { # everything below lib is ok
$manpagename = $self->catfile(split(/::/,$self->{PARENT_NAME}),$manpagename);
}
- $manpagename =~ s/\.p(od|m|l)$//;
- $manpagename = $self->replace_manpage_separator($manpagename);
- $manifypods{$name} = $self->catfile("\$(INST_MAN3DIR)","$manpagename.\$(MAN3EXT)");
+ if ($pods{MAN3}) {
+ $manpagename = $self->replace_manpage_separator($manpagename);
+ $self->{MAN3PODS}->{$name} =
+ $self->catfile("\$(INST_MAN3DIR)", "$manpagename.\$(MAN3EXT)");
+ }
}
- $self->{MAN3PODS} = \%manifypods;
}
}
@@ -1531,7 +1629,7 @@ sub init_main {
$modfname = &DynaLoader::mod2fname(\@modparts);
}
- ($self->{PARENT_NAME}, $self->{BASEEXT}) = $self->{NAME} =~ m!(?:([\w:]+)::)?(\w+)$! ;
+ ($self->{PARENT_NAME}, $self->{BASEEXT}) = $self->{NAME} =~ m!(?:([\w:]+)::)?(\w+)\z! ;
if (defined &DynaLoader::mod2fname) {
# As of 5.001m, dl_os2 appends '_'
@@ -1601,10 +1699,34 @@ from the perl source tree.
}
} else {
# we should also consider $ENV{PERL5LIB} here
+ my $old = $self->{PERL_LIB} || $self->{PERL_ARCHLIB} || $self->{PERL_INC};
$self->{PERL_LIB} ||= $Config::Config{privlibexp};
$self->{PERL_ARCHLIB} ||= $Config::Config{archlibexp};
$self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
my $perl_h;
+
+ if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
+ and not $old){
+ # Maybe somebody tries to build an extension with an
+ # uninstalled Perl outside of Perl build tree
+ my $found;
+ for my $dir (@INC) {
+ $found = $dir, last if -e $self->catdir($dir, "Config.pm");
+ }
+ if ($found) {
+ my $inc = dirname $found;
+ if (-e $self->catdir($inc, "perl.h")) {
+ $self->{PERL_LIB} = $found;
+ $self->{PERL_ARCHLIB} = $found;
+ $self->{PERL_INC} = $inc;
+ $self->{UNINSTALLED_PERL} = 1;
+ print STDOUT <<EOP;
+... Detected uninstalled Perl. Trying to continue.
+EOP
+ }
+ }
+ }
+
unless (-f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))){
die qq{
Error: Unable to locate installed Perl libraries or Perl source code.
@@ -1695,8 +1817,7 @@ usually solves this kind of problem.
my($install_variable,$search_prefix,$replace_prefix);
- # The rule, taken from Configure, is that if prefix contains perl,
- # we shape the tree
+ # If the prefix contains perl, Configure shapes the tree as follows:
# perlprefix/lib/ INSTALLPRIVLIB
# perlprefix/lib/pod/
# perlprefix/lib/site_perl/ INSTALLSITELIB
@@ -1708,6 +1829,11 @@ usually solves this kind of problem.
# prefix/lib/perl5/site_perl/ INSTALLSITELIB
# prefix/bin/ INSTALLBIN
# prefix/lib/perl5/man/ INSTALLMAN1DIR
+ #
+ # The above results in various kinds of breakage on various
+ # platforms, so we cope with it as follows: if prefix/lib/perl5
+ # or prefix/lib/perl5/man exist, we'll replace those instead
+ # of /prefix/{lib,man}
$replace_prefix = qq[\$\(PREFIX\)];
for $install_variable (qw/
@@ -1716,36 +1842,45 @@ usually solves this kind of problem.
/) {
$self->prefixify($install_variable,$configure_prefix,$replace_prefix);
}
- $search_prefix = $configure_prefix =~ /perl/ ?
- $self->catdir($configure_prefix,"lib") :
- $self->catdir($configure_prefix,"lib","perl5");
+ my $funkylibdir = $self->catdir($configure_prefix,"lib","perl5");
+ $funkylibdir = '' unless -d $funkylibdir;
+ $search_prefix = $funkylibdir || $self->catdir($configure_prefix,"lib");
if ($self->{LIB}) {
$self->{INSTALLPRIVLIB} = $self->{INSTALLSITELIB} = $self->{LIB};
$self->{INSTALLARCHLIB} = $self->{INSTALLSITEARCH} =
$self->catdir($self->{LIB},$Config{'archname'});
- } else {
- $replace_prefix = $self->{PREFIX} =~ /perl/ ?
- $self->catdir(qq[\$\(PREFIX\)],"lib") :
- $self->catdir(qq[\$\(PREFIX\)],"lib","perl5");
+ }
+ else {
+ if (-d $self->catdir($self->{PREFIX},"lib","perl5")) {
+ $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5");
+ }
+ else {
+ $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib");
+ }
for $install_variable (qw/
INSTALLPRIVLIB
INSTALLARCHLIB
INSTALLSITELIB
INSTALLSITEARCH
- /) {
+ /)
+ {
$self->prefixify($install_variable,$search_prefix,$replace_prefix);
}
}
- $search_prefix = $configure_prefix =~ /perl/ ?
- $self->catdir($configure_prefix,"man") :
- $self->catdir($configure_prefix,"lib","perl5","man");
- $replace_prefix = $self->{PREFIX} =~ /perl/ ?
- $self->catdir(qq[\$\(PREFIX\)],"man") :
- $self->catdir(qq[\$\(PREFIX\)],"lib","perl5","man");
+ my $funkymandir = $self->catdir($configure_prefix,"lib","perl5","man");
+ $funkymandir = '' unless -d $funkymandir;
+ $search_prefix = $funkymandir || $self->catdir($configure_prefix,"man");
+ if (-d $self->catdir($self->{PREFIX},"lib","perl5", "man")) {
+ $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man");
+ }
+ else {
+ $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"man");
+ }
for $install_variable (qw/
INSTALLMAN1DIR
INSTALLMAN3DIR
- /) {
+ /)
+ {
$self->prefixify($install_variable,$search_prefix,$replace_prefix);
}
@@ -1773,6 +1908,30 @@ usually solves this kind of problem.
}
$self->{MAN3EXT} ||= $Config::Config{man3ext};
+ $self->{INSTALLHTMLPRIVLIBDIR} = $Config::Config{installhtmlprivlibdir}
+ unless defined $self->{INSTALLHTMLPRIVLIBDIR};
+ $self->{INSTALLHTMLSITELIBDIR} = $Config::Config{installhtmlsitelibdir}
+ unless defined $self->{INSTALLHTMLSITELIBDIR};
+
+ unless (defined $self->{INST_HTMLLIBDIR}){
+ if ($self->{INSTALLHTMLSITELIBDIR} =~ /^(none|\s*)$/){
+ $self->{INST_HTMLLIBDIR} = $self->{INSTALLHTMLSITELIBDIR};
+ } else {
+ $self->{INST_HTMLLIBDIR} = $self->catdir($self->curdir,'blib','html','lib');
+ }
+ }
+
+ $self->{INSTALLHTMLSCRIPTDIR} = $Config::Config{installhtmlscriptdir}
+ unless defined $self->{INSTALLHTMLSCRIPTDIR};
+ unless (defined $self->{INST_HTMLSCRIPTDIR}){
+ if ($self->{INSTALLHTMLSCRIPTDIR} =~ /^(none|\s*)$/){
+ $self->{INST_HTMLSCRIPTDIR} = $self->{INSTALLHTMLSCRIPTDIR};
+ } else {
+ $self->{INST_HTMLSCRIPTDIR} = $self->catdir($self->curdir,'blib','html','bin');
+ }
+ }
+ $self->{HTMLEXT} ||= $Config::Config{htmlext} || 'html';
+
# Get some stuff out of %Config if we haven't yet done so
print STDOUT "CONFIG must be an array ref\n"
@@ -1846,7 +2005,8 @@ usually solves this kind of problem.
push @defpath, $component if defined $component;
}
$self->{PERL} ||=
- $self->find_perl(5.0, [ $^X, 'miniperl','perl','perl5',"perl$]" ],
+ $self->find_perl(5.0, [ $self->canonpath($^X), 'miniperl',
+ 'perl','perl5',"perl$Config{version}" ],
\@defpath, $Verbose );
# don't check if perl is executable, maybe they have decided to
# supply switches with perl
@@ -1965,6 +2125,8 @@ pure_perl_install ::
$(INST_ARCHLIB) $(INSTALLARCHLIB) \
$(INST_BIN) $(INSTALLBIN) \
$(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_HTMLLIBDIR) $(INSTALLHTMLPRIVLIBDIR) \
+ $(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
$(INST_MAN3DIR) $(INSTALLMAN3DIR)
}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
@@ -1979,12 +2141,15 @@ pure_site_install ::
$(INST_ARCHLIB) $(INSTALLSITEARCH) \
$(INST_BIN) $(INSTALLBIN) \
$(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_HTMLLIBDIR) $(INSTALLHTMLSITELIBDIR) \
+ $(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
$(INST_MAN3DIR) $(INSTALLMAN3DIR)
}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
doc_perl_install ::
+ -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
"Module" "$(NAME)" \
"installed into" "$(INSTALLPRIVLIB)" \
@@ -1994,6 +2159,7 @@ doc_perl_install ::
>> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
doc_site_install ::
+ -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
"Module" "$(NAME)" \
"installed into" "$(INSTALLSITELIB)" \
@@ -2219,7 +2385,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
my $incl;
my $xx;
- ($xx = $File::Find::name) =~ s,.*?/auto/,,;
+ ($xx = $File::Find::name) =~ s,.*?/auto/,,s;
$xx =~ s,/?$_,,;
$xx =~ s,/,::,g;
@@ -2237,7 +2403,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
my $excl;
my $xx;
- ($xx = $File::Find::name) =~ s,.*?/auto/,,;
+ ($xx = $File::Find::name) =~ s,.*?/auto/,,s;
$xx =~ s,/?$_,,;
$xx =~ s,/,::,g;
@@ -2254,7 +2420,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
# Once the patch to minimod.PL is in the distribution, I can
# drop it
- return if $File::Find::name =~ m:auto/$self->{FULLEXT}/$self->{BASEEXT}$self->{LIB_EXT}$:;
+ return if $File::Find::name =~ m:auto/$self->{FULLEXT}/$self->{BASEEXT}$self->{LIB_EXT}\z:;
use Cwd 'cwd';
$static{cwd() . "/" . $_}++;
}, grep( -d $_, @{$searchdirs || []}) );
@@ -2265,7 +2431,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
$extra = [] unless $extra && ref $extra eq 'ARRAY';
for (sort keys %static) {
- next unless /\Q$self->{LIB_EXT}\E$/;
+ next unless /\Q$self->{LIB_EXT}\E\z/;
$_ = dirname($_) . "/extralibs.ld";
push @$extra, $_;
}
@@ -2350,7 +2516,7 @@ $tmp/perlmain\$(OBJ_EXT): $tmp/perlmain.c
$tmp/perlmain.c: $makefilename}, q{
}.$self->{NOECHO}.q{echo Writing $@
}.$self->{NOECHO}.q{$(PERL) $(MAP_PERLINC) -MExtUtils::Miniperl \\
- -e "writemain(grep s#.*/auto/##, split(q| |, q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
+ -e "writemain(grep s#.*/auto/##s, split(q| |, q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
};
push @m, "\t",$self->{NOECHO}.q{$(PERL) $(INSTALLSCRIPT)/fixpmain
@@ -2360,6 +2526,7 @@ $tmp/perlmain.c: $makefilename}, q{
push @m, q{
doc_inst_perl:
}.$self->{NOECHO}.q{echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
+ -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
"Perl binary" "$(MAP_TARGET)" \
MAP_STATIC "$(MAP_STATIC)" \
@@ -2441,7 +2608,11 @@ sub manifypods {
} else {
$pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
}
- unless ($self->perl_script($pod2man_exe)) {
+ unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
+ # Maybe a build by uninstalled Perl?
+ $pod2man_exe = $self->catfile($self->{PERL_INC}, "pod", "pod2man");
+ }
+ unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
# No pod2man but some MAN3PODS to be installed
print <<END;
@@ -2568,7 +2739,9 @@ sub nicetext {
=item parse_version
-parse a file and return what you think is $VERSION in this file set to
+parse a file and return what you think is $VERSION in this file set to.
+It will return the string "undef" if it can't figure out what $VERSION
+is.
=cut
@@ -2594,9 +2767,9 @@ sub parse_version {
$_
}; \$$2
};
- local($^W) = 0;
+ no warnings;
$result = eval($eval);
- die "Could not eval '$eval' in $parsefile: $@" if $@;
+ warn "Could not eval '$eval' in $parsefile: $@" if $@;
$result = "undef" unless defined $result;
last;
}
@@ -2618,7 +2791,7 @@ sub parse_abstract {
open(FH,$parsefile) or die "Could not open '$parsefile': $!";
my $inpod = 0;
my $package = $self->{DISTNAME};
- $package =~ s/-/::/;
+ $package =~ s/-/::/g;
while (<FH>) {
$inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
next if !$inpod;
@@ -2710,16 +2883,53 @@ $(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
push @m, q{
PERL_HDRS = \
-$(PERL_INC)/EXTERN.h $(PERL_INC)/gv.h $(PERL_INC)/pp.h \
-$(PERL_INC)/INTERN.h $(PERL_INC)/handy.h $(PERL_INC)/proto.h \
-$(PERL_INC)/XSUB.h $(PERL_INC)/hv.h $(PERL_INC)/regcomp.h \
-$(PERL_INC)/av.h $(PERL_INC)/keywords.h $(PERL_INC)/regexp.h \
-$(PERL_INC)/config.h $(PERL_INC)/mg.h $(PERL_INC)/scope.h \
-$(PERL_INC)/cop.h $(PERL_INC)/op.h $(PERL_INC)/sv.h \
-$(PERL_INC)/cv.h $(PERL_INC)/opcode.h $(PERL_INC)/unixish.h \
-$(PERL_INC)/dosish.h $(PERL_INC)/patchlevel.h $(PERL_INC)/util.h \
-$(PERL_INC)/embed.h $(PERL_INC)/perl.h $(PERL_INC)/iperlsys.h \
-$(PERL_INC)/form.h $(PERL_INC)/perly.h
+ $(PERL_INC)/EXTERN.h \
+ $(PERL_INC)/INTERN.h \
+ $(PERL_INC)/XSUB.h \
+ $(PERL_INC)/av.h \
+ $(PERL_INC)/cc_runtime.h \
+ $(PERL_INC)/config.h \
+ $(PERL_INC)/cop.h \
+ $(PERL_INC)/cv.h \
+ $(PERL_INC)/dosish.h \
+ $(PERL_INC)/embed.h \
+ $(PERL_INC)/embedvar.h \
+ $(PERL_INC)/fakethr.h \
+ $(PERL_INC)/form.h \
+ $(PERL_INC)/gv.h \
+ $(PERL_INC)/handy.h \
+ $(PERL_INC)/hv.h \
+ $(PERL_INC)/intrpvar.h \
+ $(PERL_INC)/iperlsys.h \
+ $(PERL_INC)/keywords.h \
+ $(PERL_INC)/mg.h \
+ $(PERL_INC)/nostdio.h \
+ $(PERL_INC)/objXSUB.h \
+ $(PERL_INC)/op.h \
+ $(PERL_INC)/opcode.h \
+ $(PERL_INC)/opnames.h \
+ $(PERL_INC)/patchlevel.h \
+ $(PERL_INC)/perl.h \
+ $(PERL_INC)/perlapi.h \
+ $(PERL_INC)/perlio.h \
+ $(PERL_INC)/perlsdio.h \
+ $(PERL_INC)/perlsfio.h \
+ $(PERL_INC)/perlvars.h \
+ $(PERL_INC)/perly.h \
+ $(PERL_INC)/pp.h \
+ $(PERL_INC)/pp_proto.h \
+ $(PERL_INC)/proto.h \
+ $(PERL_INC)/regcomp.h \
+ $(PERL_INC)/regexp.h \
+ $(PERL_INC)/regnodes.h \
+ $(PERL_INC)/scope.h \
+ $(PERL_INC)/sv.h \
+ $(PERL_INC)/thrdvar.h \
+ $(PERL_INC)/thread.h \
+ $(PERL_INC)/unixish.h \
+ $(PERL_INC)/utf8.h \
+ $(PERL_INC)/util.h \
+ $(PERL_INC)/warnings.h
$(OBJECT) : $(PERL_HDRS)
} if $self->{OBJECT};
@@ -2883,7 +3093,7 @@ sub prefixify {
my($self,$var,$sprefix,$rprefix) = @_;
$self->{uc $var} ||= $Config{lc $var};
$self->{uc $var} = VMS::Filespec::unixpath($self->{uc $var}) if $Is_VMS;
- $self->{uc $var} =~ s/\Q$sprefix\E/$rprefix/;
+ $self->{uc $var} =~ s/\Q$sprefix\E/$rprefix/s;
}
=item processPL (o)
@@ -2927,7 +3137,9 @@ sub realclean {
realclean purge :: clean
');
# realclean subdirectories first (already cleaned)
- my $sub = "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n";
+ my $sub = ($Is_Win32 && Win32::IsWin95()) ?
+ "\tcd %s\n\t\$(TEST_F) %s\n\t\$(MAKE) %s realclean\n\tcd ..\n" :
+ "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n";
foreach(@{$self->{DIR}}){
push(@m, sprintf($sub,$_,"$self->{MAKEFILE}.old","-f $self->{MAKEFILE}.old"));
push(@m, sprintf($sub,$_,"$self->{MAKEFILE}",''));
@@ -3005,9 +3217,18 @@ END
# then copy that to $(INST_STATIC) and add $(OBJECT) into it.
push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
+ my $ar;
+ if (exists $self->{FULL_AR} && -x $self->{FULL_AR}) {
+ # Prefer the absolute pathed ar if available so that PATH
+ # doesn't confuse us. Perl itself is built with the full_ar.
+ $ar = 'FULL_AR';
+ } else {
+ $ar = 'AR';
+ }
push @m,
-q{ $(AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
- $(CHMOD) $(PERM_RWX) $@
+ "\t\$($ar) ".'$(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@'."\n";
+ push @m,
+q{ $(CHMOD) $(PERM_RWX) $@
}.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
};
# Old mechanism - still available:
@@ -3071,12 +3292,25 @@ Helper subroutine for subdirs
sub subdir_x {
my($self, $subdir) = @_;
my(@m);
- qq{
+ if ($Is_Win32 && Win32::IsWin95()) {
+ # XXX: dmake-specific, like rest of Win95 port
+ return <<EOT;
+subdirs ::
+@[
+ cd $subdir
+ \$(MAKE) all \$(PASTHRU)
+ cd ..
+]
+EOT
+ }
+ else {
+ return <<EOT;
subdirs ::
$self->{NOECHO}cd $subdir && \$(MAKE) all \$(PASTHRU)
-};
+EOT
+ }
}
=item subdirs (o)
@@ -3321,13 +3555,13 @@ sub tool_xsubpp {
}
}
- my $xsubpp = $self->{CAPI} ? "xsubpp -object_capi" : "xsubpp";
+ my $xsubpp = "xsubpp";
return qq{
XSUBPPDIR = $xsdir
XSUBPP = \$(XSUBPPDIR)/$xsubpp
XSPROTOARG = $self->{XSPROTOARG}
-XSUBPPDEPS = @tmdeps
+XSUBPPDEPS = @tmdeps \$(XSUBPP)
XSUBPPARGS = @tmargs
};
};
@@ -3403,7 +3637,7 @@ sub top_targets {
';
push @m, '
-all :: pure_all manifypods
+all :: pure_all htmlifypods manifypods
'.$self->{NOECHO}.'$(NOOP)
'
unless $self->{SKIPHASH}{'all'};
@@ -3425,13 +3659,25 @@ config :: $(INST_AUTODIR)/.exists
'.$self->{NOECHO}.'$(NOOP)
';
- push @m, qq{
-config :: Version_check
+ push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
+
+ if (%{$self->{HTMLLIBPODS}}) {
+ push @m, qq[
+config :: \$(INST_HTMLLIBDIR)/.exists
$self->{NOECHO}\$(NOOP)
-} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
+];
+ push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
+ }
- push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
+ if (%{$self->{HTMLSCRIPTPODS}}) {
+ push @m, qq[
+config :: \$(INST_HTMLSCRIPTDIR)/.exists
+ $self->{NOECHO}\$(NOOP)
+
+];
+ push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
+ }
if (%{$self->{MAN1PODS}}) {
push @m, qq[
@@ -3495,7 +3741,7 @@ sub xs_c {
return '' unless $self->needs_linking();
'
.xs.c:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
';
}
@@ -3510,7 +3756,7 @@ sub xs_cpp {
return '' unless $self->needs_linking();
'
.xs.cpp:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.cpp
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.cpp
';
}
@@ -3526,7 +3772,7 @@ sub xs_o { # many makes are too dumb to use xs_c then c_o
return '' unless $self->needs_linking();
'
.xs$(OBJ_EXT):
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
$(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
';
}
diff --git a/contrib/perl5/lib/ExtUtils/MM_VMS.pm b/contrib/perl5/lib/ExtUtils/MM_VMS.pm
index 8f8ac17..57a8146 100644
--- a/contrib/perl5/lib/ExtUtils/MM_VMS.pm
+++ b/contrib/perl5/lib/ExtUtils/MM_VMS.pm
@@ -12,10 +12,11 @@ use Config;
require Exporter;
use VMS::Filespec;
use File::Basename;
+use File::Spec;
+our($Revision, @ISA);
+$Revision = '5.56 (27-Apr-1999)';
-use vars qw($Revision);
-$Revision = '5.52 (12-Sep-1998)';
-
+@ISA = qw( File::Spec );
unshift @MM::ISA, 'ExtUtils::MM_VMS';
Exporter::import('ExtUtils::MakeMaker', '$Verbose', '&neatvalue');
@@ -38,156 +39,6 @@ the semantics.
=over
-=item eliminate_macros
-
-Expands MM[KS]/Make macros in a text string, using the contents of
-identically named elements of C<%$self>, and returns the result
-as a file specification in Unix syntax.
-
-=cut
-
-sub eliminate_macros {
- my($self,$path) = @_;
- unless ($path) {
- print "eliminate_macros('') = ||\n" if $Verbose >= 3;
- return '';
- }
- my($npath) = unixify($path);
- my($complex) = 0;
- my($head,$macro,$tail);
-
- # perform m##g in scalar context so it acts as an iterator
- while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#g) {
- if ($self->{$2}) {
- ($head,$macro,$tail) = ($1,$2,$3);
- if (ref $self->{$macro}) {
- if (ref $self->{$macro} eq 'ARRAY') {
- print "Note: expanded array macro \$($macro) in $path\n" if $Verbose;
- $macro = join ' ', @{$self->{$macro}};
- }
- else {
- print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}),
- "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n";
- $macro = "\cB$macro\cB";
- $complex = 1;
- }
- }
- else { ($macro = unixify($self->{$macro})) =~ s#/$##; }
- $npath = "$head$macro$tail";
- }
- }
- if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#g; }
- print "eliminate_macros($path) = |$npath|\n" if $Verbose >= 3;
- $npath;
-}
-
-=item fixpath
-
-Catchall routine to clean up problem MM[SK]/Make macros. Expands macros
-in any directory specification, in order to avoid juxtaposing two
-VMS-syntax directories when MM[SK] is run. Also expands expressions which
-are all macro, so that we can tell how long the expansion is, and avoid
-overrunning DCL's command buffer when MM[KS] is running.
-
-If optional second argument has a TRUE value, then the return string is
-a VMS-syntax directory specification, if it is FALSE, the return string
-is a VMS-syntax file specification, and if it is not specified, fixpath()
-checks to see whether it matches the name of a directory in the current
-default directory, and returns a directory or file specification accordingly.
-
-=cut
-
-sub fixpath {
- my($self,$path,$force_path) = @_;
- unless ($path) {
- print "eliminate_macros('') = ||\n" if $Verbose >= 3;
- return '';
- }
- my($fixedpath,$prefix,$name);
-
- if ($path =~ m#^\$\([^\)]+\)$# || $path =~ m#[/:>\]]#) {
- if ($force_path or $path =~ /(?:DIR\)|\])$/) {
- $fixedpath = vmspath($self->eliminate_macros($path));
- }
- else {
- $fixedpath = vmsify($self->eliminate_macros($path));
- }
- }
- elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#)) && $self->{$prefix}) {
- my($vmspre) = $self->eliminate_macros("\$($prefix)");
- # is it a dir or just a name?
- $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR$/) ? vmspath($vmspre) : '';
- $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name;
- $fixedpath = vmspath($fixedpath) if $force_path;
- }
- else {
- $fixedpath = $path;
- $fixedpath = vmspath($fixedpath) if $force_path;
- }
- # No hints, so we try to guess
- if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) {
- $fixedpath = vmspath($fixedpath) if -d $fixedpath;
- }
- # Trim off root dirname if it's had other dirs inserted in front of it.
- $fixedpath =~ s/\.000000([\]>])/$1/;
- print "fixpath($path) = |$fixedpath|\n" if $Verbose >= 3;
- $fixedpath;
-}
-
-=item catdir
-
-Concatenates a list of file specifications, and returns the result as a
-VMS-syntax directory specification.
-
-=cut
-
-sub catdir {
- my($self,@dirs) = @_;
- my($dir) = pop @dirs;
- @dirs = grep($_,@dirs);
- my($rslt);
- if (@dirs) {
- my($path) = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
- my($spath,$sdir) = ($path,$dir);
- $spath =~ s/.dir$//; $sdir =~ s/.dir$//;
- $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+$/;
- $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
- }
- else {
- if ($dir =~ /^\$\([^\)]+\)$/) { $rslt = $dir; }
- else { $rslt = vmspath($dir); }
- }
- print "catdir(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
- $rslt;
-}
-
-=item catfile
-
-Concatenates a list of file specifications, and returns the result as a
-VMS-syntax directory specification.
-
-=cut
-
-sub catfile {
- my($self,@files) = @_;
- my($file) = pop @files;
- @files = grep($_,@files);
- my($rslt);
- if (@files) {
- my($path) = (@files == 1 ? $files[0] : $self->catdir(@files));
- my($spath) = $path;
- $spath =~ s/.dir$//;
- if ( $spath =~ /^[^\)\]\/:>]+\)$/ && basename($file) eq $file) { $rslt = "$spath$file"; }
- else {
- $rslt = $self->eliminate_macros($spath);
- $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
- }
- }
- else { $rslt = vmsify($file); }
- print "catfile(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
- $rslt;
-}
-
=item wraplist
Converts a list into a string wrapped at approximately 80 columns.
@@ -212,16 +63,6 @@ sub wraplist {
$line;
}
-=item curdir (override)
-
-Returns a string representing of the current directory.
-
-=cut
-
-sub curdir {
- return '[]';
-}
-
=item rootdir (override)
Returns a string representing of the root directory.
@@ -232,16 +73,6 @@ sub rootdir {
return '';
}
-=item updir (override)
-
-Returns a string representing of the parent directory.
-
-=cut
-
-sub updir {
- return '[-]';
-}
-
package ExtUtils::MM_VMS;
sub ExtUtils::MM_VMS::ext;
@@ -447,14 +278,14 @@ sub find_perl {
print "Checking $name\n" if ($trace >= 2);
# If it looks like a potential command, try it without the MCR
if ($name =~ /^[\w\-\$]+$/ &&
- `$name -e "require $ver; print ""VER_OK\n"""` =~ /VER_OK/) {
+ `$name -e "require $ver; print ""VER_OK\\n"""` =~ /VER_OK/) {
print "Using PERL=$name\n" if $trace;
return $name;
}
next unless $vmsfile = $self->maybe_command($name);
$vmsfile =~ s/;[\d\-]*$//; # Clip off version number; we can use a newer version as well
print "Executing $vmsfile\n" if ($trace >= 2);
- if (`MCR $vmsfile -e "require $ver; print ""VER_OK\n"""` =~ /VER_OK/) {
+ if (`MCR $vmsfile -e "require $ver; print ""VER_OK\\n"""` =~ /VER_OK/) {
print "Using PERL=MCR $vmsfile\n" if $trace;
return "MCR $vmsfile";
}
@@ -625,11 +456,17 @@ sub constants {
my($self) = @_;
my(@m,$def,$macro);
+ # Be kind about case for pollution
+ for (@ARGV) { $_ = uc($_) if /POLLUTE/i; }
+
if ($self->{DEFINE} ne '') {
- my(@defs) = split(/\s+/,$self->{DEFINE});
- foreach $def (@defs) {
+ my(@terms) = split(/\s+/,$self->{DEFINE});
+ my(@defs,@udefs);
+ foreach $def (@terms) {
next unless $def;
- if ($def =~ s/^-D//) { # If it was a Unix-style definition
+ my $targ = \@defs;
+ if ($def =~ s/^-([DU])//) { # If it was a Unix-style definition
+ if ($1 eq 'U') { $targ = \@udefs; }
$def =~ s/='(.*)'$/=$1/; # then remove shell-protection ''
$def =~ s/^'(.*)'$/$1/; # from entire term or argument
}
@@ -637,8 +474,11 @@ sub constants {
$def =~ s/"/""/g; # Protect existing " from DCL
$def = qq["$def"]; # and quote to prevent parsing of =
}
+ push @$targ, $def;
}
- $self->{DEFINE} = join ',',@defs;
+ $self->{DEFINE} = '';
+ if (@defs) { $self->{DEFINE} = '/Define=(' . join(',',@defs) . ')'; }
+ if (@udefs) { $self->{DEFINE} .= '/Undef=(' . join(',',@udefs) . ')'; }
}
if ($self->{OBJECT} =~ /\s/) {
@@ -837,32 +677,31 @@ sub cflags {
warn "MM_VMS: Ignoring unrecognized CCFLAGS elements \"$quals\"\n";
$quals = '';
}
+ $definestr .= q["PERL_POLLUTE",] if $self->{POLLUTE};
if (length $definestr) { chop($definestr); $quals .= "/Define=($definestr)"; }
if (length $undefstr) { chop($undefstr); $quals .= "/Undef=($undefstr)"; }
# Deal with $self->{DEFINE} here since some C compilers pay attention
# to only one /Define clause on command line, so we have to
# conflate the ones from $Config{'ccflags'} and $self->{DEFINE}
- if ($quals =~ m:(.*)/define=\(?([^\(\/\)\s]+)\)?(.*)?:i) {
- $quals = "$1/Define=($2," . ($self->{DEFINE} ? "$self->{DEFINE}," : '') .
- "\$(DEFINE_VERSION),\$(XS_DEFINE_VERSION))$3";
- }
- else {
- $quals .= '/Define=(' . ($self->{DEFINE} ? "$self->{DEFINE}," : '') .
- '$(DEFINE_VERSION),$(XS_DEFINE_VERSION))';
+ # ($self->{DEFINE} has already been VMSified in constants() above)
+ if ($self->{DEFINE}) { $quals .= $self->{DEFINE}; }
+ for $type (qw(Def Undef)) {
+ my(@terms);
+ while ($quals =~ m:/${type}i?n?e?=([^/]+):ig) {
+ my $term = $1;
+ $term =~ s:^\((.+)\)$:$1:;
+ push @terms, $term;
+ }
+ if ($type eq 'Def') {
+ push @terms, qw[ $(DEFINE_VERSION) $(XS_DEFINE_VERSION) ];
+ }
+ if (@terms) {
+ $quals =~ s:/${type}i?n?e?=[^/]+::ig;
+ $quals .= "/${type}ine=(" . join(',',@terms) . ')';
+ }
}
$libperl or $libperl = $self->{LIBPERL_A} || "libperl.olb";
-# This whole section is commented out, since I don't think it's necessary (or applicable)
-# if ($libperl =~ s/^$Config{'dbgprefix'}//) { $libperl =~ s/perl([^Dd]*)\./perld$1./; }
-# if ($libperl =~ /libperl(\w+)\./i) {
-# my($type) = uc $1;
-# my(%map) = ( 'D' => 'DEBUGGING', 'E' => 'EMBED', 'M' => 'MULTIPLICITY',
-# 'DE' => 'DEBUGGING,EMBED', 'DM' => 'DEBUGGING,MULTIPLICITY',
-# 'EM' => 'EMBED,MULTIPLICITY', 'DEM' => 'DEBUGGING,EMBED,MULTIPLICITY' );
-# my($add) = join(',', grep { $quals !~ /\b$_\b/ } split(/,/,$map{$type}));
-# $quals =~ s:/define=\(([^\)]+)\):/Define=($1,$add):i if $add;
-# $self->{PERLTYPE} ||= $type;
-# }
# Likewise with $self->{INC} and /Include
if ($self->{'INC'}) {
@@ -873,11 +712,12 @@ sub cflags {
}
}
$quals .= "$incstr)";
+# $quals =~ s/,,/,/g; $quals =~ s/\(,/(/g;
$self->{CCFLAGS} = $quals;
$self->{OPTIMIZE} ||= $flagoptstr || $Config{'optimize'};
if ($self->{OPTIMIZE} !~ m!/!) {
- if ($self->{OPTIMIZE} =~ m!\b-g\b!) { $self->{OPTIMIZE} = '/Debug/NoOptimize' }
+ if ($self->{OPTIMIZE} =~ m!-g!) { $self->{OPTIMIZE} = '/Debug/NoOptimize' }
elsif ($self->{OPTIMIZE} =~ /-O(\d*)/) {
$self->{OPTIMIZE} = '/Optimize' . (defined($1) ? "=$1" : '');
}
@@ -1266,13 +1106,6 @@ config :: $(INST_AUTODIR).exists
$(NOECHO) $(NOOP)
';
- push @m, q{
-config :: Version_check
- $(NOECHO) $(NOOP)
-
-} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
-
-
push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
if (%{$self->{MAN1PODS}}) {
push @m, q[
@@ -1337,7 +1170,7 @@ static :: $(INST_ARCHAUTODIR)$(BASEEXT).opt
$(NOECHO) $(NOOP)
') unless $self->{SKIPHASH}{'static'};
- push(@m,'
+ push @m,'
$(INST_ARCHAUTODIR)$(BASEEXT).opt : $(BASEEXT).opt
$(CP) $(MMS$SOURCE) $(MMS$TARGET)
@@ -1345,9 +1178,32 @@ $(BASEEXT).opt : Makefile.PL
$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Mksymlists;" -
',qq[-e "Mksymlists('NAME' => '$self->{NAME}', 'DL_FUNCS' => ],
neatvalue($funcs),q[, 'DL_VARS' => ],neatvalue($vars),
- q[, 'FUNCLIST' => ],neatvalue($funclist),')"
- $(PERL) -e "print ""$(INST_STATIC)/Include=$(BASEEXT)\n$(INST_STATIC)/Library\n"";" >>$(MMS$TARGET)
-');
+ q[, 'FUNCLIST' => ],neatvalue($funclist),qq[)"\n];
+
+ push @m, ' $(PERL) -e "print ""$(INST_STATIC)/Include=';
+ if ($self->{OBJECT} =~ /\bBASEEXT\b/ or
+ $self->{OBJECT} =~ /\b$self->{BASEEXT}\b/i) {
+ push @m, ($Config{d_vms_case_sensitive_symbols}
+ ? uc($self->{BASEEXT}) :'$(BASEEXT)');
+ }
+ else { # We don't have a "main" object file, so pull 'em all in
+ # Upcase module names if linker is being case-sensitive
+ my($upcase) = $Config{d_vms_case_sensitive_symbols};
+ my(@omods) = map { s/\.[^.]*$//; # Trim off file type
+ s[\$\(\w+_EXT\)][]; # even as a macro
+ s/.*[:>\/\]]//; # Trim off dir spec
+ $upcase ? uc($_) : $_;
+ } split ' ', $self->eliminate_macros($self->{OBJECT});
+ my($tmp,@lines,$elt) = '';
+ my $tmp = shift @omods;
+ foreach $elt (@omods) {
+ $tmp .= ",$elt";
+ if (length($tmp) > 80) { push @lines, $tmp; $tmp = ''; }
+ }
+ push @lines, $tmp;
+ push @m, '(', join( qq[, -\\n\\t"";" >>\$(MMS\$TARGET)\n\t\$(PERL) -e "print ""], @lines),')';
+ }
+ push @m, '\n$(INST_STATIC)/Library\n"";" >>$(MMS$TARGET)',"\n";
if (length $self->{LDLOADLIBS}) {
my($lib); my($line) = '';
@@ -1465,8 +1321,8 @@ $(INST_STATIC) : $(OBJECT) $(MYEXTLIB)
push(@m,"\t",'Library/Object/Replace $(MMS$TARGET) $(MMS$SOURCE_LIST)',"\n");
}
- foreach $lib (split $self->{EXTRALIBS}) {
- $lib = '""' if $lib eq '"';
+ push @m, "\t\$(NOECHO) \$(PERL) -e 1 >\$(INST_ARCHAUTODIR)extralibs.ld\n";
+ foreach $lib (split ' ', $self->{EXTRALIBS}) {
push(@m,"\t",'$(NOECHO) $(PERL) -e "print qq{',$lib,'\n}" >>$(INST_ARCHAUTODIR)extralibs.ld',"\n");
}
push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
@@ -2186,12 +2042,13 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
$(NOECHO) $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
Makefile.PL DIR=}, $dir, q{ \
MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
- MAKEAPERL=1 NORECURS=1
+ MAKEAPERL=1 NORECURS=1 };
+
+ push @m, map(q[ \\\n\t\t"$_"], @ARGV),q{
$(MAP_TARGET) :: $(MAKE_APERL_FILE)
$(MMS)$(MMSQUALIFIERS)$(USEMAKEFILE)$(MAKE_APERL_FILE) static $(MMS$TARGET)
};
- push @m, map( " \\\n\t\t$_", @ARGV );
push @m, "\n";
return join '', @m;
@@ -2312,9 +2169,9 @@ $(MAP_TARGET) :: $(MAKE_APERL_FILE)
$tmp = $self->fixpath($tmp,1);
if (@optlibs) { $extralist = join(' ',@optlibs); }
else { $extralist = ''; }
- # Let ExtUtils::Liblist find the necessary for us (but skip PerlShr;
+ # Let ExtUtils::Liblist find the necessary libs for us (but skip PerlShr)
# that's what we're building here).
- push @optlibs, grep { !/PerlShr/i } split +($self->ext())[2];
+ push @optlibs, grep { !/PerlShr/i } split ' ', +($self->ext())[2];
if ($libperl) {
unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) {
print STDOUT "Warning: $libperl not found\n";
diff --git a/contrib/perl5/lib/ExtUtils/MM_Win32.pm b/contrib/perl5/lib/ExtUtils/MM_Win32.pm
index 4070b2e..e08c679 100644
--- a/contrib/perl5/lib/ExtUtils/MM_Win32.pm
+++ b/contrib/perl5/lib/ExtUtils/MM_Win32.pm
@@ -36,6 +36,49 @@ $NMAKE = 1 if $Config{'make'} =~ /^nmake/i;
$PERLMAKE = 1 if $Config{'make'} =~ /^pmake/i;
$OBJ = 1 if $Config{'ccflags'} =~ /PERL_OBJECT/i;
+# a few workarounds for command.com (very basic)
+{
+ package ExtUtils::MM_Win95;
+
+ # the $^O test may be overkill, but we want to be sure Win32::IsWin95()
+ # exists before we try it
+
+ unshift @MM::ISA, 'ExtUtils::MM_Win95'
+ if ($^O =~ /Win32/ && Win32::IsWin95());
+
+ sub xs_c {
+ my($self) = shift;
+ return '' unless $self->needs_linking();
+ '
+.xs.c:
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
+ $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
+ '
+ }
+
+ sub xs_cpp {
+ my($self) = shift;
+ return '' unless $self->needs_linking();
+ '
+.xs.cpp:
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
+ $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.cpp
+ ';
+ }
+
+ # many makes are too dumb to use xs_c then c_o
+ sub xs_o {
+ my($self) = shift;
+ return '' unless $self->needs_linking();
+ '
+.xs$(OBJ_EXT):
+ $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
+ $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
+ $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
+ ';
+ }
+} # end of command.com workarounds
+
sub dlsyms {
my($self,%attribs) = @_;
@@ -250,12 +293,19 @@ XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
C_FILES = ".join(" \\\n\t", @{$self->{C}})."
O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
H_FILES = ".join(" \\\n\t", @{$self->{H}})."
+HTMLLIBPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
+HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
";
for $tmp (qw/
- INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
+ INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
+ INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
+ INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
+ INST_HTMLLIBDIR HTMLEXT
+ INST_MAN1DIR INSTALLMAN1DIR MAN1EXT
+ INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
/) {
next unless defined $self->{$tmp};
push @m, "$tmp = $self->{$tmp}\n";
@@ -338,7 +388,6 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
sub path {
- local $^W = 1;
my($self) = @_;
my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
my @path = split(';',$path);
@@ -434,6 +483,18 @@ sub dynamic_lib {
my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
my($ldfrom) = '$(LDFROM)';
my(@m);
+
+# one thing for GCC/Mingw32:
+# we try to overcome non-relocateable-DLL problems by generating
+# a (hopefully unique) image-base from the dll's name
+# -- BKS, 10-19-1999
+ if ($GCC) {
+ my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
+ $dllname =~ /(....)(.{0,4})/;
+ my $baseaddr = unpack("n", $1 ^ $2);
+ $otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
+ }
+
push(@m,'
# This section creates the dynamically loadable $(INST_DYNAMIC)
# from $(OBJECT) and possibly $(MYEXTLIB).
@@ -472,11 +533,6 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists
sub perl_archive
{
my ($self) = @_;
- if($OBJ) {
- if ($self->{CAPI}) {
- return '$(PERL_INC)\perlCAPI$(LIB_EXT)';
- }
- }
return '$(PERL_INC)\\'.$Config{'libperl'};
}
@@ -516,7 +572,9 @@ any ordinary, readable file.
sub perl_script {
my($self,$file) = @_;
+ return $file if -r $file && -f _;
return "$file.pl" if -r "$file.pl" && -f _;
+ return "$file.bat" if -r "$file.bat" && -f _;
return;
}
@@ -668,7 +726,7 @@ sub top_targets {
';
push @m, '
-all :: pure_all manifypods
+all :: pure_all htmlifypods manifypods
'.$self->{NOECHO}.'$(NOOP)
'
unless $self->{SKIPHASH}{'all'};
@@ -690,13 +748,25 @@ config :: $(INST_AUTODIR)\.exists
'.$self->{NOECHO}.'$(NOOP)
';
- push @m, qq{
-config :: Version_check
+ push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
+
+ if (%{$self->{HTMLLIBPODS}}) {
+ push @m, qq[
+config :: \$(INST_HTMLLIBDIR)/.exists
$self->{NOECHO}\$(NOOP)
-} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
+];
+ push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
+ }
- push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
+ if (%{$self->{HTMLSCRIPTPODS}}) {
+ push @m, qq[
+config :: \$(INST_HTMLSCRIPTDIR)/.exists
+ $self->{NOECHO}\$(NOOP)
+
+];
+ push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
+ }
if (%{$self->{MAN1PODS}}) {
push @m, qq[
@@ -734,9 +804,62 @@ Version_check:
join('',@m);
}
+=item htmlifypods (o)
+
+Defines targets and routines to translate the pods into HTML manpages
+and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
+directories.
+
+Same as MM_Unix version (changes command-line quoting).
+
+=cut
+
+sub htmlifypods {
+ my($self, %attribs) = @_;
+ return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
+ %{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
+ my($dist);
+ my($pod2html_exe);
+ if (defined $self->{PERL_SRC}) {
+ $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
+ } else {
+ $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
+ }
+ unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
+ # No pod2html but some HTMLxxxPODS to be installed
+ print <<END;
+
+Warning: I could not locate your pod2html program. Please make sure,
+ your pod2html program is in your PATH before you execute 'make'
+
+END
+ $pod2html_exe = "-S pod2html";
+ }
+ my(@m);
+ push @m,
+qq[POD2HTML_EXE = $pod2html_exe\n],
+qq[POD2HTML = \$(PERL) -we "use File::Basename; use File::Path qw(mkpath); %m=\@ARGV;for (keys %m){" \\\n],
+q[-e "next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M '],
+ $self->{MAKEFILE}, q[';" \\
+-e "print qq(Htmlifying $$m{$$_}\n);" \\
+-e "$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;" \\
+-e "system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn qq(Couldn\\047t install $$m{$$_}\n);" \\
+-e "chmod(oct($(PERM_RW))), $$m{$$_} or warn qq(chmod $(PERM_RW) $$m{$$_}: $$!\n);}"
+];
+ push @m, "\nhtmlifypods : pure_all ";
+ push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
+
+ push(@m,"\n");
+ if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
+ push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
+ push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
+ }
+ join('', @m);
+}
+
=item manifypods (o)
-We don't want manpage process. XXX add pod2html support later.
+We don't want manpage process.
=cut
diff --git a/contrib/perl5/lib/ExtUtils/MakeMaker.pm b/contrib/perl5/lib/ExtUtils/MakeMaker.pm
index 08a1c66..38cb216 100644
--- a/contrib/perl5/lib/ExtUtils/MakeMaker.pm
+++ b/contrib/perl5/lib/ExtUtils/MakeMaker.pm
@@ -2,7 +2,7 @@ BEGIN {require 5.002;} # MakeMaker 5.17 was the last MakeMaker that was compatib
package ExtUtils::MakeMaker;
-$VERSION = "5.4302";
+$VERSION = "5.45";
$Version_OK = "5.17"; # Makefiles older than $Version_OK will die
# (Will be checked from MakeMaker version 4.13 onwards)
($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//;
@@ -17,7 +17,7 @@ use Carp ();
use vars qw(
@ISA @EXPORT @EXPORT_OK $AUTOLOAD
- $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision $Setup_done
+ $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision
$VERSION $Verbose $Version_OK %Config %Keep_after_flush
%MM_Sections %Prepend_dot_dot %Recognized_Att_Keys
@Get_from_Config @MM_Sections @Overridable @Parent
@@ -70,6 +70,7 @@ $Is_VMS = $^O eq 'VMS';
$Is_OS2 = $^O eq 'os2';
$Is_Mac = $^O eq 'MacOS';
$Is_Win32 = $^O eq 'MSWin32';
+$Is_Cygwin= $^O eq 'cygwin';
require ExtUtils::MM_Unix;
@@ -86,36 +87,15 @@ if ($Is_Mac) {
if ($Is_Win32) {
require ExtUtils::MM_Win32;
}
-
-# The SelfLoader would bring a lot of overhead for MakeMaker, because
-# we know for sure we will use most of the autoloaded functions once
-# we have to use one of them. So we write our own loader
-
-sub AUTOLOAD {
- my $code;
- if (defined fileno(DATA)) {
- my $fh = select DATA;
- my $o = $/; # For future reads from the file.
- $/ = "\n__END__\n";
- $code = <DATA>;
- $/ = $o;
- select $fh;
- close DATA;
- eval $code;
- if ($@) {
- $@ =~ s/ at .*\n//;
- Carp::croak $@;
- }
- } else {
- warn "AUTOLOAD called unexpectedly for $AUTOLOAD";
- }
- defined(&$AUTOLOAD) or die "Myloader inconsistency error";
- goto &$AUTOLOAD;
+if ($Is_Cygwin) {
+ require ExtUtils::MM_Cygwin;
}
-# The only subroutine we do not SelfLoad is Version_Check because it's
-# called so often. Loading this minimum still requires 1.2 secs on my
-# Indy :-(
+full_setup();
+
+# The use of the Version_check target has been dropped between perl
+# 5.5.63 and 5.5.64. We must keep the subroutine for a while so that
+# old Makefiles can satisfy the Version_check target.
sub Version_check {
my($checkversion) = @_;
@@ -136,38 +116,10 @@ sub warnhandler {
warn @_;
}
-sub ExtUtils::MakeMaker::eval_in_subdirs ;
-sub ExtUtils::MakeMaker::eval_in_x ;
-sub ExtUtils::MakeMaker::full_setup ;
-sub ExtUtils::MakeMaker::writeMakefile ;
-sub ExtUtils::MakeMaker::new ;
-sub ExtUtils::MakeMaker::check_manifest ;
-sub ExtUtils::MakeMaker::parse_args ;
-sub ExtUtils::MakeMaker::check_hints ;
-sub ExtUtils::MakeMaker::mv_all_methods ;
-sub ExtUtils::MakeMaker::skipcheck ;
-sub ExtUtils::MakeMaker::flush ;
-sub ExtUtils::MakeMaker::mkbootstrap ;
-sub ExtUtils::MakeMaker::mksymlists ;
-sub ExtUtils::MakeMaker::neatvalue ;
-sub ExtUtils::MakeMaker::selfdocument ;
-sub ExtUtils::MakeMaker::WriteMakefile ;
-sub ExtUtils::MakeMaker::prompt ($;$) ;
-
-1;
-
-__DATA__
-
-package ExtUtils::MakeMaker;
-
sub WriteMakefile {
Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
local $SIG{__WARN__} = \&warnhandler;
- unless ($Setup_done++){
- full_setup();
- undef &ExtUtils::MakeMaker::full_setup; #safe memory
- }
my %att = @_;
MM->new(\%att)->flush;
}
@@ -228,7 +180,6 @@ sub eval_in_x {
sub full_setup {
$Verbose ||= 0;
- $^W=1;
# package name for the classes into which the first object will be blessed
$PACKNAME = "PACK000";
@@ -237,15 +188,19 @@ sub full_setup {
AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DL_FUNCS DL_VARS
- EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FUNCLIST H IMPORTS
- INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS INSTALLMAN1DIR
+ EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FUNCLIST H
+ HTMLLIBPODS HTMLSCRIPTPOD IMPORTS
+ INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS INSTALLHTMLPRIVLIBDIR
+ INSTALLHTMLSCRIPTDIR INSTALLHTMLSITELIBDIR INSTALLMAN1DIR
INSTALLMAN3DIR INSTALLPRIVLIB INSTALLSCRIPT INSTALLSITEARCH
INSTALLSITELIB INST_ARCHLIB INST_BIN INST_EXE INST_LIB
+ INST_HTMLLIBDIR INST_HTMLSCRIPTDIR
INST_MAN1DIR INST_MAN3DIR INST_SCRIPT LDFROM LIB LIBPERL_A LIBS
LINKTYPE MAKEAPERL MAKEFILE MAN1PODS MAN3PODS MAP_TARGET MYEXTLIB
+ PERL_MALLOC_OK
NAME NEEDS_LINKING NOECHO NORECURS NO_VC OBJECT OPTIMIZE PERL PERLMAINCC
PERL_ARCHLIB PERL_LIB PERL_SRC PERM_RW PERM_RWX
- PL_FILES PM PMLIBDIRS PPM_INSTALL_EXEC PPM_INSTALL_SCRIPT PREFIX
+ PL_FILES PM PMLIBDIRS POLLUTE PPM_INSTALL_EXEC PPM_INSTALL_SCRIPT PREFIX
PREREQ_PM SKIP TYPEMAPS VERSION VERSION_FROM XS XSOPT XSPROTOARG
XS_VERSION clean depend dist dynamic_lib linkext macro realclean
tool_autosplit
@@ -272,7 +227,8 @@ sub full_setup {
pasthru
c_o xs_c xs_o top_targets linkext dlsyms dynamic dynamic_bs
- dynamic_lib static static_lib manifypods processPL installbin subdirs
+ dynamic_lib static static_lib htmlifypods manifypods processPL
+ installbin subdirs
clean realclean dist_basics dist_core dist_dir dist_test dist_ci
install force perldepend makefile staticmake test ppd
@@ -303,7 +259,8 @@ sub full_setup {
@Get_from_Config =
qw(
ar cc cccdlflags ccdlflags dlext dlsrc ld lddlflags ldflags libc
- lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so exe_ext
+ lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so
+ exe_ext full_ar
);
my $item;
@@ -324,9 +281,9 @@ sub full_setup {
%Prepend_dot_dot =
qw(
- INST_BIN 1 INST_EXE 1 INST_LIB 1 INST_ARCHLIB 1 INST_SCRIPT
- 1 MAP_TARGET 1 INST_MAN1DIR 1 INST_MAN3DIR 1 PERL_SRC 1
- PERL 1 FULLPERL 1
+ INST_BIN 1 INST_EXE 1 INST_LIB 1 INST_ARCHLIB 1 INST_SCRIPT 1
+ MAP_TARGET 1 INST_HTMLLIBDIR 1 INST_HTMLSCRIPTDIR 1
+ INST_MAN1DIR 1 INST_MAN3DIR 1 PERL_SRC 1 PERL 1 FULLPERL 1
);
@@ -373,9 +330,13 @@ sub ExtUtils::MakeMaker::new {
my($prereq);
foreach $prereq (sort keys %{$self->{PREREQ_PM}}) {
- my $eval = "use $prereq $self->{PREREQ_PM}->{$prereq}";
+ my $eval = "require $prereq";
eval $eval;
- if ($@){
+
+ if ($@) {
+ warn "Warning: prerequisite $prereq failed to load: $@";
+ }
+ elsif ($prereq->VERSION < $self->{PREREQ_PM}->{$prereq} ){
warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found";
# Why is/was this 'delete' here? We need PREREQ_PM later to make PPDs.
# } else {
@@ -441,11 +402,13 @@ sub ExtUtils::MakeMaker::new {
}
if ($self->{PARENT}) {
$self->{PARENT}->{CHILDREN}->{$newclass} = $self;
- if (exists $self->{PARENT}->{CAPI}
- and not exists $self->{CAPI})
- {
- # inherit, but only if already unspecified
- $self->{CAPI} = $self->{PARENT}->{CAPI};
+ foreach my $opt (qw(CAPI POLLUTE)) {
+ if (exists $self->{PARENT}->{$opt}
+ and not exists $self->{$opt})
+ {
+ # inherit, but only if already unspecified
+ $self->{$opt} = $self->{PARENT}->{$opt};
+ }
}
}
} else {
@@ -471,7 +434,7 @@ sub ExtUtils::MakeMaker::new {
else {
$pthinks =~ s!/Config\.pm$!!; $pthinks =~ s!.*/!!;
}
- print STDOUT <<END;
+ print STDOUT <<END unless $self->{UNINSTALLED_PERL};
Your perl and your Config.pm seem to have different ideas about the architecture
they are running on.
Perl thinks: [$pthinks]
@@ -973,26 +936,29 @@ want to specify some other option, set C<TESTDB_SW> variable:
=head2 make install
make alone puts all relevant files into directories that are named by
-the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_MAN1DIR, and
-INST_MAN3DIR. All these default to something below ./blib if you are
-I<not> building below the perl source directory. If you I<are>
-building below the perl source, INST_LIB and INST_ARCHLIB default to
- ../../lib, and INST_SCRIPT is not defined.
+the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_HTMLLIBDIR,
+INST_HTMLSCRIPTDIR, INST_MAN1DIR, and INST_MAN3DIR. All these default
+to something below ./blib if you are I<not> building below the perl
+source directory. If you I<are> building below the perl source,
+INST_LIB and INST_ARCHLIB default to ../../lib, and INST_SCRIPT is not
+defined.
The I<install> target of the generated Makefile copies the files found
below each of the INST_* directories to their INSTALL*
counterparts. Which counterparts are chosen depends on the setting of
INSTALLDIRS according to the following table:
- INSTALLDIRS set to
- perl site
+ INSTALLDIRS set to
+ perl site
- INST_ARCHLIB INSTALLARCHLIB INSTALLSITEARCH
- INST_LIB INSTALLPRIVLIB INSTALLSITELIB
- INST_BIN INSTALLBIN
- INST_SCRIPT INSTALLSCRIPT
- INST_MAN1DIR INSTALLMAN1DIR
- INST_MAN3DIR INSTALLMAN3DIR
+ INST_ARCHLIB INSTALLARCHLIB INSTALLSITEARCH
+ INST_LIB INSTALLPRIVLIB INSTALLSITELIB
+ INST_HTMLLIBDIR INSTALLHTMLPRIVLIBDIR INSTALLHTMLSITELIBDIR
+ INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
+ INST_BIN INSTALLBIN
+ INST_SCRIPT INSTALLSCRIPT
+ INST_MAN1DIR INSTALLMAN1DIR
+ INST_MAN3DIR INSTALLMAN3DIR
The INSTALL... macros in turn default to their %Config
($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts.
@@ -1169,7 +1135,7 @@ MakeMaker gives you much more freedom than needed to configure
internal variables and get different results. It is worth to mention,
that make(1) also lets you configure most of the variables that are
used in the Makefile. But in the majority of situations this will not
-be necessary, and should only be done, if the author of a package
+be necessary, and should only be done if the author of a package
recommends it (or you know what you're doing).
=head2 Using Attributes and Parameters
@@ -1213,6 +1179,9 @@ currently used by MakeMaker but may be handy in Makefile.PLs.
=item CAPI
+[This attribute is obsolete in Perl 5.6. PERL_OBJECT builds are C-compatible
+by default.]
+
Switch to force usage of the Perl C API even when compiling for PERL_OBJECT.
Note that this attribute is passed through to any recursive build,
@@ -1326,6 +1295,20 @@ names are passed through unaltered to the linker options file.
Ref to array of *.h file names. Similar to C.
+=item HTMLLIBPODS
+
+Hashref of .pm and .pod files. MakeMaker will default this to all
+ .pod and any .pm files that include POD directives. The files listed
+here will be converted to HTML format and installed as was requested
+at Configure time.
+
+=item HTMLSCRIPTPODS
+
+Hashref of pod-containing files. MakeMaker will default this to all
+EXE_FILES files that include POD directives. The files listed
+here will be converted to HTML format and installed as was requested
+at Configure time.
+
=item IMPORTS
This attribute is used to specify names to be imported into the
@@ -1366,6 +1349,22 @@ choose: installprivlib and installarchlib versus installsitelib and
installsitearch. The first pair is chosen with INSTALLDIRS=perl, the
second with INSTALLDIRS=site. Default is site.
+=item INSTALLHTMLPRIVLIBDIR
+
+This directory gets the HTML pages at 'make install' time. Defaults to
+$Config{installhtmlprivlibdir}.
+
+=item INSTALLHTMLSCRIPTDIR
+
+This directory gets the HTML pages at 'make install' time. Defaults to
+$Config{installhtmlscriptdir}.
+
+=item INSTALLHTMLSITELIBDIR
+
+This directory gets the HTML pages at 'make install' time. Defaults to
+$Config{installhtmlsitelibdir}.
+
+
=item INSTALLMAN1DIR
This directory gets the man pages at 'make install' time. Defaults to
@@ -1415,6 +1414,14 @@ need to use it.
Directory where we put library files of this extension while building
it.
+=item INST_HTMLLIBDIR
+
+Directory to hold the man pages in HTML format at 'make' time
+
+=item INST_HTMLSCRIPTDIR
+
+Directory to hold the man pages in HTML format at 'make' time
+
=item INST_MAN1DIR
Directory to hold the man pages at 'make' time
@@ -1426,10 +1433,38 @@ Directory to hold the man pages at 'make' time
=item INST_SCRIPT
Directory, where executable files should be installed during
-'make'. Defaults to "./blib/bin", just to have a dummy location during
+'make'. Defaults to "./blib/script", just to have a dummy location during
testing. make install will copy the files in INST_SCRIPT to
INSTALLSCRIPT.
+=item PERL_MALLOC_OK
+
+defaults to 0. Should be set to TRUE if the extension can work with
+the memory allocation routines substituted by the Perl malloc() subsystem.
+This should be applicable to most extensions with exceptions of those
+
+=over
+
+=item *
+
+with bugs in memory allocations which are caught by Perl's malloc();
+
+=item *
+
+which interact with the memory allocator in other ways than via
+malloc(), realloc(), free(), calloc(), sbrk() and brk();
+
+=item *
+
+which rely on special alignment which is not provided by Perl's malloc().
+
+=back
+
+B<NOTE.> Negligence to set this flag in I<any one> of loaded extension
+nullifies many advantages of Perl's malloc(), such as better usage of
+system resources, error detection, memory usage reporting, catchable failure
+of memory allocations, etc.
+
=item LDFROM
defaults to "$(OBJECT)" and is used in the ld command to specify
@@ -1515,9 +1550,9 @@ Makefile.PL.
=item NEEDS_LINKING
-MakeMaker will figure out, if an extension contains linkable code
+MakeMaker will figure out if an extension contains linkable code
anywhere down the directory tree, and will set this variable
-accordingly, but you can speed it up a very little bit, if you define
+accordingly, but you can speed it up a very little bit if you define
this boolean variable yourself.
=item NOECHO
@@ -1532,7 +1567,7 @@ Boolean. Attribute to inhibit descending into subdirectories.
=item NO_VC
-In general any generated Makefile checks for the current version of
+In general, any generated Makefile checks for the current version of
MakeMaker and the version the Makefile was built under. If NO_VC is
set, the version check is neglected. Do not write this into your
Makefile.PL, use it interactively instead.
@@ -1559,7 +1594,7 @@ to $(CC).
=item PERL_ARCHLIB
-Same as above for architecture dependent files
+Same as above for architecture dependent files.
=item PERL_LIB
@@ -1613,6 +1648,18 @@ they contain will be installed in the corresponding location in the
library. A libscan() method can be used to alter the behaviour.
Defining PM in the Makefile.PL will override PMLIBDIRS.
+=item POLLUTE
+
+Release 5.005 grandfathered old global symbol names by providing preprocessor
+macros for extension source compatibility. As of release 5.6, these
+preprocessor definitions are not available by default. The POLLUTE flag
+specifies that the old names should still be defined:
+
+ perl Makefile.PL POLLUTE=1
+
+Please inform the module author if this is necessary to successfully install
+a module under 5.6 or later.
+
=item PPM_INSTALL_EXEC
Name of the executable used to run C<PPM_INSTALL_SCRIPT> below. (e.g. perl)
@@ -1641,8 +1688,8 @@ only check if any version is installed already.
=item SKIP
Arryref. E.g. [qw(name1 name2)] skip (do not write) sections of the
-Makefile. Caution! Do not use the SKIP attribute for the neglectible
-speedup. It may seriously damage the resulting Makefile. Only use it,
+Makefile. Caution! Do not use the SKIP attribute for the negligible
+speedup. It may seriously damage the resulting Makefile. Only use it
if you really need it.
=item TYPEMAPS
@@ -1765,7 +1812,7 @@ NB: Extensions that have nothing but *.pm files had to say
{LINKTYPE => ''}
with Pre-5.0 MakeMakers. Since version 5.00 of MakeMaker such a line
-can be deleted safely. MakeMaker recognizes, when there's nothing to
+can be deleted safely. MakeMaker recognizes when there's nothing to
be linked.
=item macro
@@ -1776,9 +1823,13 @@ be linked.
{FILES => '$(INST_ARCHAUTODIR)/*.xyz'}
+=item test
+
+ {TESTS => 't/*.t'}
+
=item tool_autosplit
- {MAXLEN =E<gt> 8}
+ {MAXLEN => 8}
=back
@@ -1864,7 +1915,7 @@ details)
=item make distclean
does a realclean first and then the distcheck. Note that this is not
-needed to build a new distribution as long as you are sure, that the
+needed to build a new distribution as long as you are sure that the
MANIFEST file is ok.
=item make manifest
diff --git a/contrib/perl5/lib/ExtUtils/Manifest.pm b/contrib/perl5/lib/ExtUtils/Manifest.pm
index 1a6dde7..8bb3fc8 100644
--- a/contrib/perl5/lib/ExtUtils/Manifest.pm
+++ b/contrib/perl5/lib/ExtUtils/Manifest.pm
@@ -25,6 +25,7 @@ $MANIFEST = 'MANIFEST';
# Really cool fix from Ilya :)
unless (defined $Config{d_link}) {
+ no warnings;
*ln = \&cp;
}
@@ -186,7 +187,6 @@ sub manicopy {
require File::Basename;
my(%dirs,$file);
$target = VMS::Filespec::unixify($target) if $Is_VMS;
- umask 0 unless $Is_VMS;
File::Path::mkpath([ $target ],1,$Is_VMS ? undef : 0755);
foreach $file (keys %$read){
$file = VMS::Filespec::unixify($file) if $Is_VMS;
@@ -268,27 +268,27 @@ ExtUtils::Manifest - utilities to write and check a MANIFEST file
=head1 SYNOPSIS
-C<require ExtUtils::Manifest;>
+ require ExtUtils::Manifest;
-C<ExtUtils::Manifest::mkmanifest;>
+ ExtUtils::Manifest::mkmanifest;
-C<ExtUtils::Manifest::manicheck;>
+ ExtUtils::Manifest::manicheck;
-C<ExtUtils::Manifest::filecheck;>
+ ExtUtils::Manifest::filecheck;
-C<ExtUtils::Manifest::fullcheck;>
+ ExtUtils::Manifest::fullcheck;
-C<ExtUtils::Manifest::skipcheck;>
+ ExtUtils::Manifest::skipcheck;
-C<ExtUtild::Manifest::manifind();>
+ ExtUtils::Manifest::manifind();
-C<ExtUtils::Manifest::maniread($file);>
+ ExtUtils::Manifest::maniread($file);
-C<ExtUtils::Manifest::manicopy($read,$target,$how);>
+ ExtUtils::Manifest::manicopy($read,$target,$how);
=head1 DESCRIPTION
-Mkmanifest() writes all files in and below the current directory to a
+mkmanifest() writes all files in and below the current directory to a
file named in the global variable $ExtUtils::Manifest::MANIFEST (which
defaults to C<MANIFEST>) in the current directory. It works similar to
@@ -302,33 +302,33 @@ comments are separated by one or more TAB characters in the
output. All files that match any regular expression in a file
C<MANIFEST.SKIP> (if such a file exists) are ignored.
-Manicheck() checks if all the files within a C<MANIFEST> in the
+manicheck() checks if all the files within a C<MANIFEST> in the
current directory really do exist. It only reports discrepancies and
exits silently if MANIFEST and the tree below the current directory
are in sync.
-Filecheck() finds files below the current directory that are not
+filecheck() finds files below the current directory that are not
mentioned in the C<MANIFEST> file. An optional file C<MANIFEST.SKIP>
will be consulted. Any file matching a regular expression in such a
file will not be reported as missing in the C<MANIFEST> file.
-Fullcheck() does both a manicheck() and a filecheck().
+fullcheck() does both a manicheck() and a filecheck().
-Skipcheck() lists all the files that are skipped due to your
+skipcheck() lists all the files that are skipped due to your
C<MANIFEST.SKIP> file.
-Manifind() returns a hash reference. The keys of the hash are the
+manifind() returns a hash reference. The keys of the hash are the
files found below the current directory.
-Maniread($file) reads a named C<MANIFEST> file (defaults to
+maniread($file) reads a named C<MANIFEST> file (defaults to
C<MANIFEST> in the current directory) and returns a HASH reference
with files being the keys and comments being the values of the HASH.
Blank lines and lines which start with C<#> in the C<MANIFEST> file
are discarded.
-I<Manicopy($read,$target,$how)> copies the files that are the keys in
+C<manicopy($read,$target,$how)> copies the files that are the keys in
the HASH I<%$read> to the named target directory. The HASH reference
-I<$read> is typically returned by the maniread() function. This
+$read is typically returned by the maniread() function. This
function is useful for producing a directory tree identical to the
intended distribution tree. The third parameter $how can be used to
specify a different methods of "copying". Valid values are C<cp>,
diff --git a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm b/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
index 25c374c..323c3ab 100644
--- a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
+++ b/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
@@ -81,8 +81,8 @@ C<mkbootstrap>
Mkbootstrap typically gets called from an extension Makefile.
-There is no C<*.bs> file supplied with the extension. Instead a
-C<*_BS> file which has code for the special cases, like posix for
+There is no C<*.bs> file supplied with the extension. Instead, there may
+be a C<*_BS> file which has code for the special cases, like posix for
berkeley db on the NeXT.
This file will get parsed, and produce a maybe empty
diff --git a/contrib/perl5/lib/ExtUtils/Mksymlists.pm b/contrib/perl5/lib/ExtUtils/Mksymlists.pm
index 76535d9..c8f41c7 100644
--- a/contrib/perl5/lib/ExtUtils/Mksymlists.pm
+++ b/contrib/perl5/lib/ExtUtils/Mksymlists.pm
@@ -1,10 +1,12 @@
package ExtUtils::Mksymlists;
+
+use 5.005_64;
use strict qw[ subs refs ];
# no strict 'vars'; # until filehandles are exempted
use Carp;
use Exporter;
-use vars qw( @ISA @EXPORT $VERSION );
+our(@ISA, @EXPORT, $VERSION);
@ISA = 'Exporter';
@EXPORT = '&Mksymlists';
$VERSION = substr q$Revision: 1.17 $, 10;
@@ -76,12 +78,19 @@ sub _write_os2 {
($data->{DLBASE} = $data->{NAME}) =~ s/.*:://;
$data->{DLBASE} = substr($data->{DLBASE},0,7) . '_';
}
+ my $distname = $data->{DISTNAME} || $data->{NAME};
+ $distname = "Distribution $distname";
+ my $comment = "Perl (v$Config::Config{version}$threaded) module $data->{NAME}";
+ if ($data->{INSTALLDIRS} and $data->{INSTALLDIRS} eq 'perl') {
+ $distname = 'perl5-porters@perl.org';
+ $comment = "Core $comment";
+ }
rename "$data->{FILE}.def", "$data->{FILE}_def.old";
open(DEF,">$data->{FILE}.def")
or croak("Can't create $data->{FILE}.def: $!\n");
print DEF "LIBRARY '$data->{DLBASE}' INITINSTANCE TERMINSTANCE\n";
- print DEF "DESCRIPTION 'Perl (v$]$threaded) module $data->{NAME} v$data->{VERSION}'\n";
+ print DEF "DESCRIPTION '\@#$distname:$data->{VERSION}#\@ $comment'\n";
print DEF "CODE LOADONCALL\n";
print DEF "DATA LOADONCALL NONSHARED MULTIPLE\n";
print DEF "EXPORTS\n ";
@@ -148,7 +157,7 @@ sub _write_vms {
require Config; # a reminder for once we do $^O
require ExtUtils::XSSymSet;
- my($isvax) = $Config::Config{'arch'} =~ /VAX/i;
+ my($isvax) = $Config::Config{'archname'} =~ /VAX/i;
my($set) = new ExtUtils::XSSymSet;
my($sym);
@@ -164,6 +173,8 @@ sub _write_vms {
# We don't do anything to preserve order, so we won't relax
# the GSMATCH criteria for a dynamic extension
+ print OPT "case_sensitive=yes\n"
+ if $Config::Config{d_vms_case_sensitive_symbols};
foreach $sym (@{$data->{FUNCLIST}}) {
my $safe = $set->addsym($sym);
if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
diff --git a/contrib/perl5/lib/ExtUtils/Packlist.pm b/contrib/perl5/lib/ExtUtils/Packlist.pm
index eeb0a5b..88ea206 100644
--- a/contrib/perl5/lib/ExtUtils/Packlist.pm
+++ b/contrib/perl5/lib/ExtUtils/Packlist.pm
@@ -1,8 +1,9 @@
package ExtUtils::Packlist;
+
+use 5.005_64;
use strict;
use Carp qw();
-use vars qw($VERSION);
-$VERSION = '0.03';
+our $VERSION = '0.03';
# Used for generating filehandle globs. IO::File might not be available!
my $fhname = "FH1";
diff --git a/contrib/perl5/lib/ExtUtils/typemap b/contrib/perl5/lib/ExtUtils/typemap
index b1ec063..a34cd4f 100644
--- a/contrib/perl5/lib/ExtUtils/typemap
+++ b/contrib/perl5/lib/ExtUtils/typemap
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /home/rmb1/misc/CVS/perl5.005_61/lib/ExtUtils/typemap,v 1.3 1999/09/13 09:46:43 rmb1 Exp $
# basic C types
int T_IV
unsigned T_UV
@@ -29,6 +29,7 @@ HV * T_HVREF
CV * T_CVREF
IV T_IV
+UV T_UV
I32 T_IV
I16 T_IV
I8 T_IV
@@ -106,11 +107,11 @@ T_DOUBLE
T_PV
$var = ($type)SvPV($arg,PL_na)
T_PTR
- $var = ($type)SvIV($arg)
+ $var = INT2PTR($type,SvIV($arg))
T_PTRREF
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
+ $var = INT2PTR($type,tmp);
}
else
croak(\"$var is not a reference\")
@@ -131,7 +132,7 @@ T_REF_IV_PTR
T_PTROBJ
if (sv_derived_from($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
+ $var = INT2PTR($type,tmp);
}
else
croak(\"$var is not of type ${ntype}\")
@@ -146,14 +147,14 @@ T_PTRDESC
T_REFREF
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = *($type) tmp;
+ $var = *INT2PTR($type,tmp);
}
else
croak(\"$var is not a reference\")
T_REFOBJ
if (sv_isa($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = *($type) tmp;
+ $var = *INT2PTR($type,tmp);
}
else
croak(\"$var is not of type ${ntype}\")
@@ -250,7 +251,7 @@ T_REFOBJ
T_OPAQUE
sv_setpvn($arg, (char *)&$var, sizeof($var));
T_OPAQUEPTR
- sv_setpvn($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
+ sv_setpvn($arg, (char *)$var, sizeof(*$var));
T_PACKED
XS_pack_$ntype($arg, $var);
T_PACKEDARRAY
diff --git a/contrib/perl5/lib/ExtUtils/xsubpp b/contrib/perl5/lib/ExtUtils/xsubpp
index 1ee7b29..5a71e89 100755
--- a/contrib/perl5/lib/ExtUtils/xsubpp
+++ b/contrib/perl5/lib/ExtUtils/xsubpp
@@ -6,10 +6,12 @@ xsubpp - compiler to convert Perl XS code into C code
=head1 SYNOPSIS
-B<xsubpp> [B<-v>] [B<-C++>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-typemap typemap>] [B<-object_capi>]... file.xs
+B<xsubpp> [B<-v>] [B<-C++>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-nooptimize>] [B<-typemap typemap>] ... file.xs
=head1 DESCRIPTION
+This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
+
I<xsubpp> will compile XS code into C code by embedding the constructs
necessary to let C functions manipulate Perl values and creates the glue
necessary to let Perl access those functions. The compiler uses typemaps to
@@ -23,13 +25,15 @@ typemap taking precedence.
=head1 OPTIONS
+Note that the C<XSOPT> MakeMaker option may be used to add these options to
+any makefiles generated by MakeMaker.
+
=over 5
=item B<-C++>
Adds ``extern "C"'' to the C code.
-
=item B<-except>
Adds exception handling stubs to the C code.
@@ -59,11 +63,22 @@ number.
Prevents the inclusion of `#line' directives in the output.
-=item B<-object_capi>
+=item B<-nooptimize>
+
+Disables certain optimizations. The only optimization that is currently
+affected is the use of I<target>s by the output C code (see L<perlguts>).
+This may significantly slow down the generated code, but this is the way
+B<xsubpp> of 5.005 and earlier operated.
+
+=item B<-noinout>
-Compile code as C in a PERL_OBJECT environment.
+Disable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST> declarations.
-back
+=item B<-noargtypes>
+
+Disable recognition of ANSI-like descriptions of function signature.
+
+=back
=head1 ENVIRONMENT
@@ -107,7 +122,7 @@ if ($^O eq 'VMS') {
$FH = 'File0000' ;
-$usage = "Usage: xsubpp [-v] [-C++] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-s pattern] [-typemap typemap]... file.xs\n";
+$usage = "Usage: xsubpp [-v] [-C++] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";
$proto_re = "[" . quotemeta('\$%&*@;') . "]" ;
# mjn
@@ -118,6 +133,11 @@ $WantPrototypes = -1 ;
$WantVersionChk = 1 ;
$ProtoUsed = 0 ;
$WantLineNumbers = 1 ;
+$WantOptimize = 1 ;
+
+my $process_inout = 1;
+my $process_argtypes = 1;
+
SWITCH: while (@ARGV and $ARGV[0] =~ /^-./) {
$flag = shift @ARGV;
$flag =~ s/^-// ;
@@ -127,12 +147,19 @@ SWITCH: while (@ARGV and $ARGV[0] =~ /^-./) {
$WantPrototypes = 1, next SWITCH if $flag eq 'prototypes';
$WantVersionChk = 0, next SWITCH if $flag eq 'noversioncheck';
$WantVersionChk = 1, next SWITCH if $flag eq 'versioncheck';
+ # XXX left this in for compat
$WantCAPI = 1, next SWITCH if $flag eq 'object_capi';
$except = " TRY", next SWITCH if $flag eq 'except';
push(@tm,shift), next SWITCH if $flag eq 'typemap';
$WantLineNumbers = 0, next SWITCH if $flag eq 'nolinenumbers';
$WantLineNumbers = 1, next SWITCH if $flag eq 'linenumbers';
- (print "xsubpp version $XSUBPP_version\n"), exit
+ $WantOptimize = 0, next SWITCH if $flag eq 'nooptimize';
+ $WantOptimize = 1, next SWITCH if $flag eq 'optimize';
+ $process_inout = 0, next SWITCH if $flag eq 'noinout';
+ $process_inout = 1, next SWITCH if $flag eq 'inout';
+ $process_argtypes = 0, next SWITCH if $flag eq 'noargtypes';
+ $process_argtypes = 1, next SWITCH if $flag eq 'argtypes';
+ (print "xsubpp version $XSUBPP_version\n"), exit
if $flag eq 'v';
die $usage;
}
@@ -238,13 +265,31 @@ foreach $key (keys %input_expr) {
$input_expr{$key} =~ s/\n+$//;
}
+$bal = qr[(?:(?>[^()]+)|\((??{ $bal })\))*]; # ()-balanced
+$cast = qr[(?:\(\s*SV\s*\*\s*\)\s*)?]; # Optional (SV*) cast
+$size = qr[,\s* (??{ $bal }) ]x; # Third arg (to setpvn)
+
+foreach $key (keys %output_expr) {
+ use re 'eval';
+
+ my ($t, $with_size, $arg, $sarg) =
+ ($output_expr{$key} =~
+ m[^ \s+ sv_set ( [iunp] ) v (n)? # Type, is_setpvn
+ \s* \( \s* $cast \$arg \s* ,
+ \s* ( (??{ $bal }) ) # Set from
+ ( (??{ $size }) )? # Possible sizeof set-from
+ \) \s* ; \s* $
+ ]x);
+ $targetable{$key} = [$t, $with_size, $arg, $sarg] if $t;
+}
+
$END = "!End!\n\n"; # "impossible" keyword (multiple newline)
# Match an XS keyword
$BLOCK_re= '\s*(' . join('|', qw(
REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT
CLEANUP ALIAS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
- SCOPE INTERFACE INTERFACE_MACRO C_ARGS
+ SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL
)) . "|$END)\\s*:";
# Input: ($_, @line) == unparsed input.
@@ -255,6 +300,19 @@ sub check_keyword {
s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s && $2;
}
+my ($C_group_rex, $C_arg);
+# Group in C (no support for comments or literals)
+$C_group_rex = qr/ [({\[]
+ (?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
+ [)}\]] /x ;
+# Chunk in C without comma at toplevel (no comments):
+$C_arg = qr/ (?: (?> [^()\[\]{},"']+ )
+ | (??{ $C_group_rex })
+ | " (?: (?> [^\\"]+ )
+ | \\.
+ )* " # String literal
+ | ' (?: (?> [^\\']+ ) | \\. )* ' # Char literal
+ )* /xs;
if ($WantLineNumbers) {
{
@@ -365,12 +423,23 @@ sub INPUT_handler {
# Check for duplicate definitions
blurt ("Error: duplicate definition of argument '$var_name' ignored"), next
- if $arg_list{$var_name} ++ ;
+ if $arg_list{$var_name}++
+ or defined $arg_types{$var_name} and not $processing_arg_with_types;
$thisdone |= $var_name eq "THIS";
$retvaldone |= $var_name eq "RETVAL";
$var_types{$var_name} = $var_type;
- print "\t" . &map_type($var_type);
+ # XXXX This check is a safeguard against the unfinished conversion of
+ # generate_init(). When generate_init() is fixed,
+ # one can use 2-args map_type() unconditionally.
+ if ($var_type =~ / \( \s* \* \s* \) /x) {
+ # Function pointers are not yet supported with &output_init!
+ print "\t" . &map_type($var_type, $var_name);
+ $name_printed = 1;
+ } else {
+ print "\t" . &map_type($var_type);
+ $name_printed = 0;
+ }
$var_num = $args_match{$var_name};
$proto_arg[$var_num] = ProtoString($var_type)
@@ -379,13 +448,19 @@ sub INPUT_handler {
$var_addr{$var_name} = 1;
$func_args =~ s/\b($var_name)\b/&$1/;
}
- if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/) {
+ if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/
+ or $in_out{$var_name} and $in_out{$var_name} eq 'OUTLIST'
+ and $var_init !~ /\S/) {
+ if ($name_printed) {
+ print ";\n";
+ } else {
print "\t$var_name;\n";
+ }
} elsif ($var_init =~ /\S/) {
- &output_init($var_type, $var_num, $var_name, $var_init);
+ &output_init($var_type, $var_num, $var_name, $var_init, $name_printed);
} elsif ($var_num) {
# generate initialization code
- &generate_init($var_type, $var_num, $var_name);
+ &generate_init($var_type, $var_num, $var_name, $name_printed);
} else {
print ";\n";
}
@@ -460,6 +535,7 @@ EOF
sub CLEANUP_handler() { print_section() }
sub PREINIT_handler() { print_section() }
+sub POSTCALL_handler() { print_section() }
sub INIT_handler() { print_section() }
sub GetAliases
@@ -829,7 +905,7 @@ sub fetch_para {
my $tmp_line;
$lastline .= $tmp_line
while ($lastline =~ /\\$/ && defined($tmp_line = <$FH>));
-
+
chomp $lastline;
$lastline =~ s/^\s+$//;
}
@@ -896,15 +972,23 @@ while (fetch_para()) {
undef($static);
undef($elipsis);
undef($wantRETVAL) ;
+ undef($RETVAL_no_return) ;
undef(%arg_list) ;
undef(@proto_arg) ;
+ undef(@arg_with_types) ;
+ undef($processing_arg_with_types) ;
+ undef(%arg_types) ;
+ undef(@in_out) ;
+ undef(%in_out) ;
undef($proto_in_this_xsub) ;
undef($scope_in_this_xsub) ;
undef($interface);
+ undef($prepush_done);
$interface_macro = 'XSINTERFACE_FUNC' ;
$interface_macro_set = 'XSINTERFACE_FUNC_SET' ;
$ProtoThisXSUB = $WantPrototypes ;
$ScopeThisXSUB = 0;
+ $xsreturn = 0;
$_ = shift(@line);
while ($kwd = check_keyword("REQUIRE|PROTOTYPES|VERSIONCHECK|INCLUDE")) {
@@ -924,6 +1008,12 @@ while (fetch_para()) {
# extract return type, function name and arguments
($ret_type) = TidyType($_);
+ $RETVAL_no_return = 1 if $ret_type =~ s/^NO_OUTPUT\s+//;
+
+ # Allow one-line ANSI-like declaration
+ unshift @line, $2
+ if $process_argtypes
+ and $ret_type =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s;
# a function definition needs at least 2 lines
blurt ("Error: Function definition too short '$ret_type'"), next PARAGRAPH
@@ -933,7 +1023,7 @@ while (fetch_para()) {
$func_header = shift(@line);
blurt ("Error: Cannot parse function definition from '$func_header'"), next PARAGRAPH
- unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*$/s;
+ unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*(;\s*)?$/s;
($class, $func_name, $orig_args) = ($1, $2, $3) ;
$class = "$4 $class" if $4;
@@ -952,38 +1042,98 @@ while (fetch_para()) {
%XsubAliases = %XsubAliasValues = %Interfaces = ();
$DoSetMagic = 1;
- @args = split(/\s*,\s*/, $orig_args);
+ $orig_args =~ s/\\\s*/ /g; # process line continuations
+
+ my %out_vars;
+ if ($process_argtypes and $orig_args =~ /\S/) {
+ my $args = "$orig_args ,";
+ if ($args =~ /^( (??{ $C_arg }) , )* $ /x) {
+ @args = ($args =~ /\G ( (??{ $C_arg }) ) , /xg);
+ for ( @args ) {
+ s/^\s+//;
+ s/\s+$//;
+ my $arg = $_;
+ my $default;
+ ($arg, $default) = / ( [^=]* ) ( (?: = .* )? ) /x;
+ my ($pre, $name) = ($arg =~ /(.*?) \s* \b(\w+) \s* $ /x);
+ next unless length $pre;
+ my $out_type;
+ my $inout_var;
+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST)\s+//) {
+ my $type = $1;
+ $out_type = $type if $type ne 'IN';
+ $arg =~ s/^(IN|IN_OUTLIST|OUTLIST)\s+//;
+ }
+ if (/\W/) { # Has a type
+ push @arg_with_types, $arg;
+ # warn "pushing '$arg'\n";
+ $arg_types{$name} = $arg;
+ $_ = "$name$default";
+ }
+ $out_vars{$_} = 1 if $out_type eq 'OUTLIST';
+ push @in_out, $name if $out_type;
+ $in_out{$name} = $out_type if $out_type;
+ }
+ } else {
+ @args = split(/\s*,\s*/, $orig_args);
+ Warn("Warning: cannot parse argument list '$orig_args', fallback to split");
+ }
+ } else {
+ @args = split(/\s*,\s*/, $orig_args);
+ for (@args) {
+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST)\s+//) {
+ my $out_type = $1;
+ next if $out_type eq 'IN';
+ $out_vars{$_} = 1 if $out_type eq 'OUTLIST';
+ push @in_out, $name;
+ $in_out{$_} = $out_type;
+ }
+ }
+ }
if (defined($class)) {
my $arg0 = ((defined($static) or $func_name eq 'new')
? "CLASS" : "THIS");
unshift(@args, $arg0);
- ($orig_args = "$arg0, $orig_args") =~ s/^$arg0, $/$arg0/;
+ ($report_args = "$arg0, $report_args") =~ s/^\w+, $/$arg0/;
}
- $orig_args =~ s/"/\\"/g;
- $min_args = $num_args = @args;
- foreach $i (0..$num_args-1) {
+ my $extra_args = 0;
+ @args_num = ();
+ $num_args = 0;
+ my $report_args = '';
+ foreach $i (0 .. $#args) {
if ($args[$i] =~ s/\.\.\.//) {
$elipsis = 1;
- $min_args--;
- if ($args[$i] eq '' && $i == $num_args - 1) {
+ if ($args[$i] eq '' && $i == $#args) {
+ $report_args .= ", ...";
pop(@args);
last;
}
}
+ if ($out_vars{$args[$i]}) {
+ push @args_num, undef;
+ } else {
+ push @args_num, ++$num_args;
+ $report_args .= ", $args[$i]";
+ }
if ($args[$i] =~ /^([^=]*[^\s=])\s*=\s*(.*)/s) {
- $min_args--;
+ $extra_args++;
$args[$i] = $1;
$defaults{$args[$i]} = $2;
$defaults{$args[$i]} =~ s/"/\\"/g;
}
$proto_arg[$i+1] = "\$" ;
}
- if (defined($class)) {
- $func_args = join(", ", @args[1..$#args]);
- } else {
- $func_args = join(", ", @args);
+ $min_args = $num_args - $extra_args;
+ $report_args =~ s/"/\\"/g;
+ $report_args =~ s/^,\s+//;
+ my @func_args = @args;
+ shift @func_args if defined($class);
+
+ for (@func_args) {
+ s/^/&/ if $in_out{$_};
}
- @args_match{@args} = 1..@args;
+ $func_args = join(", ", @func_args);
+ @args_match{@args} = @args_num;
$PPCODE = grep(/^\s*PPCODE\s*:/, @line);
$CODE = grep(/^\s*CODE\s*:/, @line);
@@ -994,6 +1144,8 @@ while (fetch_para()) {
$ALIAS = grep(/^\s*ALIAS\s*:/, @line);
$INTERFACE = grep(/^\s*INTERFACE\s*:/, @line);
+ $xsreturn = 1 if $EXPLICIT_RETURN;
+
# print function header
print Q<<"EOF";
#XS(XS_${Full_func_name})
@@ -1024,12 +1176,12 @@ EOF
if ($ALIAS)
{ print Q<<"EOF" if $cond }
# if ($cond)
-# croak("Usage: %s($orig_args)", GvNAME(CvGV(cv)));
+# Perl_croak(aTHX_ "Usage: %s($report_args)", GvNAME(CvGV(cv)));
EOF
else
{ print Q<<"EOF" if $cond }
# if ($cond)
-# croak("Usage: $pname($orig_args)");
+# Perl_croak(aTHX_ "Usage: $pname($report_args)");
EOF
print Q<<"EOF" if $PPCODE;
@@ -1080,16 +1232,24 @@ EOF
# do code
if (/^\s*NOT_IMPLEMENTED_YET/) {
- print "\n\tcroak(\"$pname: not implemented yet\");\n";
+ print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
$_ = '' ;
} else {
if ($ret_type ne "void") {
- print "\t" . &map_type($ret_type) . "\tRETVAL;\n"
+ print "\t" . &map_type($ret_type, 'RETVAL') . ";\n"
if !$retvaldone;
$args_match{"RETVAL"} = 0;
$var_types{"RETVAL"} = $ret_type;
+ print "\tdXSTARG;\n"
+ if $WantOptimize and $targetable{$type_kind{$ret_type}};
}
+ if (@arg_with_types) {
+ unshift @line, @arg_with_types, $_;
+ $_ = "";
+ $processing_arg_with_types = 1;
+ INPUT_handler() ;
+ }
print $deferred;
process_keyword("INIT|ALIAS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS") ;
@@ -1131,19 +1291,55 @@ EOF
}
# do output variables
- $gotRETVAL = 0;
- undef $RETVAL_code ;
+ $gotRETVAL = 0; # 1 if RETVAL seen in OUTPUT section;
+ undef $RETVAL_code ; # code to set RETVAL (from OUTPUT section);
+ # $wantRETVAL set if 'RETVAL =' autogenerated
+ ($wantRETVAL, $ret_type) = (0, 'void') if $RETVAL_no_return;
undef %outargs ;
- process_keyword("OUTPUT|ALIAS|PROTOTYPE");
+ process_keyword("POSTCALL|OUTPUT|ALIAS|PROTOTYPE");
# all OUTPUT done, so now push the return value on the stack
if ($gotRETVAL && $RETVAL_code) {
print "\t$RETVAL_code\n";
} elsif ($gotRETVAL || $wantRETVAL) {
- # RETVAL almost never needs SvSETMAGIC()
- &generate_output($ret_type, 0, 'RETVAL', 0);
+ my $t = $WantOptimize && $targetable{$type_kind{$ret_type}};
+ my $var = 'RETVAL';
+ my $type = $ret_type;
+
+ # 0: type, 1: with_size, 2: how, 3: how_size
+ if ($t and not $t->[1] and $t->[0] eq 'p') {
+ # PUSHp corresponds to setpvn. Treate setpv directly
+ my $what = eval qq("$t->[2]");
+ warn $@ if $@;
+
+ print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
+ $prepush_done = 1;
+ }
+ elsif ($t) {
+ my $what = eval qq("$t->[2]");
+ warn $@ if $@;
+
+ my $size = $t->[3];
+ $size = '' unless defined $size;
+ $size = eval qq("$size");
+ warn $@ if $@;
+ print "\tXSprePUSH; PUSH$t->[0]($what$size);\n";
+ $prepush_done = 1;
+ }
+ else {
+ # RETVAL almost never needs SvSETMAGIC()
+ &generate_output($ret_type, 0, 'RETVAL', 0);
+ }
}
+ $xsreturn = 1 if $ret_type ne "void";
+ my $num = $xsreturn;
+ my $c = @in_out;
+ print "\tXSprePUSH;" if $c and not $prepush_done;
+ print "\tEXTEND(SP,$c);\n" if $c;
+ $xsreturn += $c;
+ generate_output($var_types{$_}, $num++, $_, 0, 1) for @in_out;
+
# do cleanup
process_keyword("CLEANUP|ALIAS|PROTOTYPE") ;
@@ -1176,12 +1372,12 @@ EOF
print Q<<EOF if $except;
# if (errbuf[0])
-# croak(errbuf);
+# Perl_croak(aTHX_ errbuf);
EOF
- if ($ret_type ne "void" or $EXPLICIT_RETURN) {
+ if ($xsreturn) {
print Q<<EOF unless $PPCODE;
-# XSRETURN(1);
+# XSRETURN($xsreturn);
EOF
} else {
print Q<<EOF unless $PPCODE;
@@ -1261,24 +1457,10 @@ print Q<<"EOF";
##endif
EOF
-if ($WantCAPI) {
-print Q<<"EOF";
-##ifdef PERL_CAPI
-#XS(boot__CAPI_entry)
-##else
-EOF
-}
-
print Q<<"EOF";
#XS(boot_$Module_cname)
EOF
-if ($WantCAPI) {
-print Q<<"EOF";
-##endif /* PERL_CAPI */
-EOF
-}
-
print Q<<"EOF";
#[[
# dXSARGS;
@@ -1317,37 +1499,27 @@ print Q<<"EOF";;
#
EOF
-if ($WantCAPI) {
-print Q<<"EOF";
-##ifdef PERL_CAPI
-##define XSCAPI(name) void name(CV* cv, void* pPerl)
-#
-##ifdef __cplusplus
-#extern "C"
-##endif
-#XSCAPI(boot_$Module_cname)
-#[[
-# SetCPerlObj(pPerl);
-# boot__CAPI_entry(cv);
-#]]
-##endif /* PERL_CAPI */
-EOF
-}
-
warn("Please specify prototyping behavior for $filename (see perlxs manual)\n")
unless $ProtoUsed ;
&Exit;
sub output_init {
- local($type, $num, $var, $init) = @_;
+ local($type, $num, $var, $init, $name_printed) = @_;
local($arg) = "ST(" . ($num - 1) . ")";
if( $init =~ /^=/ ) {
- eval qq/print "\\t$var $init\\n"/;
+ if ($name_printed) {
+ eval qq/print " $init\\n"/;
+ } else {
+ eval qq/print "\\t$var $init\\n"/;
+ }
warn $@ if $@;
} else {
if( $init =~ s/^\+// && $num ) {
- &generate_init($type, $num, $var);
+ &generate_init($type, $num, $var, $name_printed);
+ } elsif ($name_printed) {
+ print ";\n";
+ $init =~ s/^;//;
} else {
eval qq/print "\\t$var;\\n"/;
warn $@ if $@;
@@ -1394,13 +1566,13 @@ sub generate_init {
$tk = $type_kind{$type};
$tk =~ s/OBJ$/REF/ if $func_name =~ /DESTROY$/;
$type =~ tr/:/_/;
- blurt("Error: No INPUT definition for type '$type' found"), return
+ blurt("Error: No INPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
unless defined $input_expr{$tk} ;
$expr = $input_expr{$tk};
if ($expr =~ /DO_ARRAY_ELEM/) {
blurt("Error: '$subtype' not in typemap"), return
unless defined($type_kind{$subtype});
- blurt("Error: No INPUT definition for type '$subtype' found"), return
+ blurt("Error: No INPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
unless defined $input_expr{$type_kind{$subtype}} ;
$subexpr = $input_expr{$type_kind{$subtype}};
$subexpr =~ s/ntype/subtype/g;
@@ -1416,35 +1588,49 @@ sub generate_init {
if (defined($defaults{$var})) {
$expr =~ s/(\t+)/$1 /g;
$expr =~ s/ /\t/g;
- eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
- $deferred .= eval qq/"\\n\\tif (items < $num)\\n\\t $var = $defaults{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
+ if ($name_printed) {
+ print ";\n";
+ } else {
+ eval qq/print "\\t$var;\\n"/;
+ warn $@ if $@;
+ }
+ if ($defaults{$var} eq 'NO_INIT') {
+ $deferred .= eval qq/"\\n\\tif (items >= $num) {\\n$expr;\\n\\t}\\n"/;
+ } else {
+ $deferred .= eval qq/"\\n\\tif (items < $num)\\n\\t $var = $defaults{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
+ }
warn $@ if $@;
} elsif ($ScopeThisXSUB or $expr !~ /^\t\$var =/) {
- eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
+ if ($name_printed) {
+ print ";\n";
+ } else {
+ eval qq/print "\\t$var;\\n"/;
+ warn $@ if $@;
+ }
$deferred .= eval qq/"\\n$expr;\\n"/;
warn $@ if $@;
} else {
+ die "panic: do not know how to handle this branch for function pointers"
+ if $name_printed;
eval qq/print "$expr;\\n"/;
warn $@ if $@;
}
}
sub generate_output {
- local($type, $num, $var, $do_setmagic) = @_;
+ local($type, $num, $var, $do_setmagic, $do_push) = @_;
local($arg) = "ST(" . ($num - ($num != 0)) . ")";
local($argoff) = $num - 1;
local($ntype);
$type = TidyType($type) ;
if ($type =~ /^array\(([^,]*),(.*)\)/) {
- print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1)), XFree((char *)$var);\n";
+ print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1));\n";
print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
} else {
blurt("Error: '$type' not in typemap"), return
unless defined($type_kind{$type});
- blurt("Error: No OUTPUT definition for type '$type' found"), return
+ blurt("Error: No OUTPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
unless defined $output_expr{$type_kind{$type}} ;
($ntype = $type) =~ s/\s*\*/Ptr/g;
$ntype =~ s/\(\)//g;
@@ -1453,7 +1639,7 @@ sub generate_output {
if ($expr =~ /DO_ARRAY_ELEM/) {
blurt("Error: '$subtype' not in typemap"), return
unless defined($type_kind{$subtype});
- blurt("Error: No OUTPUT definition for type '$subtype' found"), return
+ blurt("Error: No OUTPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
unless defined $output_expr{$type_kind{$subtype}} ;
$subexpr = $output_expr{$type_kind{$subtype}};
$subexpr =~ s/ntype/subtype/g;
@@ -1471,8 +1657,8 @@ sub generate_output {
# mortalize it.
eval "print qq\a$expr\a";
warn $@ if $@;
- print "\tsv_2mortal(ST(0));\n";
- print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic;
+ print "\tsv_2mortal(ST($num));\n";
+ print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic;
}
elsif ($expr =~ /^\s*\$arg\s*=/) {
# We expect that $arg has refcnt >=1, so we need
@@ -1493,6 +1679,13 @@ sub generate_output {
# new mortals don't have set magic
}
}
+ elsif ($do_push) {
+ print "\tPUSHs(sv_newmortal());\n";
+ $arg = "ST($num)";
+ eval "print qq\a$expr\a";
+ warn $@ if $@;
+ print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
+ }
elsif ($arg =~ /^ST\(\d+\)$/) {
eval "print qq\a$expr\a";
warn $@ if $@;
@@ -1502,10 +1695,17 @@ sub generate_output {
}
sub map_type {
- my($type) = @_;
+ my($type, $varname) = @_;
$type =~ tr/:/_/;
$type =~ s/^array\(([^,]*),(.*)\).*/$1 */s;
+ if ($varname) {
+ if ($varname && $type =~ / \( \s* \* (?= \s* \) ) /xg) {
+ (substr $type, pos $type, 0) = " $varname ";
+ } else {
+ $type .= "\t$varname";
+ }
+ }
$type;
}
diff --git a/contrib/perl5/lib/Fatal.pm b/contrib/perl5/lib/Fatal.pm
index d1d95af..1496117 100644
--- a/contrib/perl5/lib/Fatal.pm
+++ b/contrib/perl5/lib/Fatal.pm
@@ -1,8 +1,9 @@
package Fatal;
+use 5.005_64;
use Carp;
use strict;
-use vars qw( $AUTOLOAD $Debug $VERSION);
+our($AUTOLOAD, $Debug, $VERSION);
$VERSION = 1.02;
@@ -11,9 +12,15 @@ $Debug = 0 unless defined $Debug;
sub import {
my $self = shift(@_);
my($sym, $pkg);
+ my $void = 0;
$pkg = (caller)[0];
foreach $sym (@_) {
- &_make_fatal($sym, $pkg);
+ if ($sym eq ":void") {
+ $void = 1;
+ }
+ else {
+ &_make_fatal($sym, $pkg, $void);
+ }
}
};
@@ -41,11 +48,11 @@ sub fill_protos {
}
sub write_invocation {
- my ($core, $call, $name, @argvs) = @_;
+ my ($core, $call, $name, $void, @argvs) = @_;
if (@argvs == 1) { # No optional arguments
my @argv = @{$argvs[0]};
shift @argv;
- return "\t" . one_invocation($core, $call, $name, @argv) . ";\n";
+ return "\t" . one_invocation($core, $call, $name, $void, @argv) . ";\n";
} else {
my $else = "\t";
my (@out, @argv, $n);
@@ -55,7 +62,7 @@ sub write_invocation {
push @out, "$ {else}if (\@_ == $n) {\n";
$else = "\t} els";
push @out,
- "\t\treturn " . one_invocation($core, $call, $name, @argv) . ";\n";
+ "\t\treturn " . one_invocation($core, $call, $name, $void, @argv) . ";\n";
}
push @out, <<EOC;
}
@@ -66,21 +73,27 @@ EOC
}
sub one_invocation {
- my ($core, $call, $name, @argv) = @_;
+ my ($core, $call, $name, $void, @argv) = @_;
local $" = ', ';
- return qq{$call(@argv) || croak "Can't $name(\@_)} .
- ($core ? ': $!' : ', \$! is \"$!\"') . '"';
+ if ($void) {
+ return qq/(defined wantarray)?$call(@argv):
+ $call(@argv) || croak "Can't $name(\@_)/ .
+ ($core ? ': $!' : ', \$! is \"$!\"') . '"'
+ } else {
+ return qq{$call(@argv) || croak "Can't $name(\@_)} .
+ ($core ? ': $!' : ', \$! is \"$!\"') . '"';
+ }
}
sub _make_fatal {
- my($sub, $pkg) = @_;
+ my($sub, $pkg, $void) = @_;
my($name, $code, $sref, $real_proto, $proto, $core, $call);
my $ini = $sub;
$sub = "${pkg}::$sub" unless $sub =~ /::/;
$name = $sub;
$name =~ s/.*::// or $name =~ s/^&//;
- print "# _make_fatal: sub=$sub pkg=$pkg name=$name\n" if $Debug;
+ print "# _make_fatal: sub=$sub pkg=$pkg name=$name void=$void\n" if $Debug;
croak "Bad subroutine name for Fatal: $name" unless $name =~ /^\w+$/;
if (defined(&$sub)) { # user subroutine
$sref = \&$sub;
@@ -108,14 +121,14 @@ sub$real_proto {
local(\$", \$!) = (', ', 0);
EOS
my @protos = fill_protos($proto);
- $code .= write_invocation($core, $call, $name, @protos);
+ $code .= write_invocation($core, $call, $name, $void, @protos);
$code .= "}\n";
print $code if $Debug;
{
no strict 'refs'; # to avoid: Can't use string (...) as a symbol ref ...
$code = eval("package $pkg; use Carp; $code");
die if $@;
- local($^W) = 0; # to avoid: Subroutine foo redefined ...
+ no warnings; # to avoid: Subroutine foo redefined ...
*{$sub} = $code;
}
}
@@ -138,11 +151,10 @@ Fatal - replace functions with equivalents which succeed or die
=head1 DESCRIPTION
C<Fatal> provides a way to conveniently replace functions which normally
-return a false value when they fail with equivalents which halt execution
+return a false value when they fail with equivalents which raise exceptions
if they are not successful. This lets you use these functions without
-having to test their return values explicitly on each call. Errors are
-reported via C<die>, so you can trap them using C<$SIG{__DIE__}> if you
-wish to take some action before the program exits.
+having to test their return values explicitly on each call. Exceptions
+can be caught using C<eval{}>. See L<perlfunc> and L<perlvar> for details.
The do-or-die equivalents are set up simply by calling Fatal's
C<import> routine, passing it the names of the functions to be
@@ -150,6 +162,21 @@ replaced. You may wrap both user-defined functions and overridable
CORE operators (except C<exec>, C<system> which cannot be expressed
via prototypes) in this way.
+If the symbol C<:void> appears in the import list, then functions
+named later in that import list raise an exception only when
+these are called in void context--that is, when their return
+values are ignored. For example
+
+ use Fatal qw/:void open close/;
+
+ # properly checked, so no exception raised on error
+ if(open(FH, "< /bogotic") {
+ warn "bogo file, dude: $!";
+ }
+
+ # not checked, so error raises an exception
+ close FH;
+
=head1 AUTHOR
Lionel.Cons@cern.ch
diff --git a/contrib/perl5/lib/File/Basename.pm b/contrib/perl5/lib/File/Basename.pm
index 69bb1fa..4581e7e 100644
--- a/contrib/perl5/lib/File/Basename.pm
+++ b/contrib/perl5/lib/File/Basename.pm
@@ -37,10 +37,10 @@ If the argument passed to it contains one of the substrings
"VMS", "MSDOS", "MacOS", "AmigaOS" or "MSWin32", the file specification
syntax of that operating system is used in future calls to
fileparse(), basename(), and dirname(). If it contains none of
-these substrings, UNIX syntax is used. This pattern matching is
+these substrings, Unix syntax is used. This pattern matching is
case-insensitive. If you've selected VMS syntax, and the file
specification you pass to one of these routines contains a "/",
-they assume you are using UNIX emulation and apply the UNIX syntax
+they assume you are using Unix emulation and apply the Unix syntax
rules instead, for that function call only.
If the argument passed to it contains one of the substrings "VMS",
@@ -73,7 +73,7 @@ file as the input file specification.
=head1 EXAMPLES
-Using UNIX file syntax:
+Using Unix file syntax:
($base,$path,$type) = fileparse('/virgil/aeneid/draft.book7',
'\.book\d+');
@@ -102,7 +102,7 @@ would yield
The basename() routine returns the first element of the list produced
by calling fileparse() with the same arguments, except that it always
quotes metacharacters in the given suffixes. It is provided for
-programmer compatibility with the UNIX shell command basename(1).
+programmer compatibility with the Unix shell command basename(1).
=item C<dirname>
@@ -111,8 +111,8 @@ specification. When using VMS or MacOS syntax, this is identical to the
second element of the list produced by calling fileparse() with the same
input file specification. (Under VMS, if there is no directory information
in the input file specification, then the current default device and
-directory are returned.) When using UNIX or MSDOS syntax, the return
-value conforms to the behavior of the UNIX shell command dirname(1). This
+directory are returned.) When using Unix or MSDOS syntax, the return
+value conforms to the behavior of the Unix shell command dirname(1). This
is usually the same as the behavior of fileparse(), but differs in some
cases. For example, for the input file specification F<lib/>, fileparse()
considers the directory name to be F<lib/>, while dirname() considers the
@@ -124,12 +124,22 @@ directory name to be F<.>).
## use strict;
-use re 'taint';
+# A bit of juggling to insure that C<use re 'taint';> always works, since
+# File::Basename is used during the Perl build, when the re extension may
+# not be available.
+BEGIN {
+ unless (eval { require re; })
+ { eval ' sub re::import { $^H |= 0x00100000; } ' }
+ import re 'taint';
+}
+
+
+use 5.005_64;
+our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-use vars qw($VERSION $Fileparse_fstype $Fileparse_igncase);
$VERSION = "2.6";
@@ -162,23 +172,23 @@ sub fileparse {
if ($fstype =~ /^VMS/i) {
if ($fullname =~ m#/#) { $fstype = '' } # We're doing Unix emulation
else {
- ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/);
+ ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s);
$dirpath ||= ''; # should always be defined
}
}
if ($fstype =~ /^MS(DOS|Win32)/i) {
- ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/);
- $dirpath .= '.\\' unless $dirpath =~ /[\\\/]$/;
+ ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s);
+ $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/;
}
- elsif ($fstype =~ /^MacOS/i) {
- ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/);
+ elsif ($fstype =~ /^MacOS/si) {
+ ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s);
}
elsif ($fstype =~ /^AmigaOS/i) {
- ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/);
+ ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s);
$dirpath = './' unless $dirpath;
}
elsif ($fstype !~ /^VMS/i) { # default to Unix
- ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#);
+ ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s);
if ($^O eq 'VMS' and $fullname =~ m:/[^/]+/000000/?:) {
# dev:[000000] is top of VMS tree, similar to Unix '/'
($basename,$dirpath) = ('',$fullname);
@@ -190,7 +200,7 @@ sub fileparse {
$tail = '';
foreach $suffix (@suffices) {
my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$";
- if ($basename =~ s/$pat//) {
+ if ($basename =~ s/$pat//s) {
$taint .= substr($suffix,0,0);
$tail = $1 . $tail;
}
@@ -228,30 +238,30 @@ sub dirname {
}
if ($fstype =~ /MacOS/i) { return $dirname }
elsif ($fstype =~ /MSDOS/i) {
- $dirname =~ s/([^:])[\\\/]*$/$1/;
+ $dirname =~ s/([^:])[\\\/]*\z/$1/;
unless( length($basename) ) {
($basename,$dirname) = fileparse $dirname;
- $dirname =~ s/([^:])[\\\/]*$/$1/;
+ $dirname =~ s/([^:])[\\\/]*\z/$1/;
}
}
elsif ($fstype =~ /MSWin32/i) {
- $dirname =~ s/([^:])[\\\/]*$/$1/;
+ $dirname =~ s/([^:])[\\\/]*\z/$1/;
unless( length($basename) ) {
($basename,$dirname) = fileparse $dirname;
- $dirname =~ s/([^:])[\\\/]*$/$1/;
+ $dirname =~ s/([^:])[\\\/]*\z/$1/;
}
}
elsif ($fstype =~ /AmigaOS/i) {
- if ( $dirname =~ /:$/) { return $dirname }
+ if ( $dirname =~ /:\z/) { return $dirname }
chop $dirname;
- $dirname =~ s#[^:/]+$## unless length($basename);
+ $dirname =~ s#[^:/]+\z## unless length($basename);
}
else {
- $dirname =~ s:(.)/*$:$1:;
+ $dirname =~ s:(.)/*\z:$1:s;
unless( length($basename) ) {
local($File::Basename::Fileparse_fstype) = $fstype;
($basename,$dirname) = fileparse $dirname;
- $dirname =~ s:(.)/*$:$1:;
+ $dirname =~ s:(.)/*\z:$1:s;
}
}
diff --git a/contrib/perl5/lib/File/CheckTree.pm b/contrib/perl5/lib/File/CheckTree.pm
index dca7f6a..ae18777 100644
--- a/contrib/perl5/lib/File/CheckTree.pm
+++ b/contrib/perl5/lib/File/CheckTree.pm
@@ -105,7 +105,7 @@ sub validate {
sub valmess {
local($disposition,$this) = @_;
- $file = $cwd . '/' . $file unless $file =~ m|^/|;
+ $file = $cwd . '/' . $file unless $file =~ m|^/|s;
if ($this =~ /^(!?)-(\w)\s+\$file\s*$/) {
$neg = $1;
$tmp = $2;
diff --git a/contrib/perl5/lib/File/Compare.pm b/contrib/perl5/lib/File/Compare.pm
index 2f9c45c..667e7cb 100644
--- a/contrib/perl5/lib/File/Compare.pm
+++ b/contrib/perl5/lib/File/Compare.pm
@@ -1,15 +1,16 @@
package File::Compare;
+use 5.005_64;
use strict;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Too_Big *FROM *TO);
+our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
require Exporter;
use Carp;
-$VERSION = '1.1001';
+$VERSION = '1.1002';
@ISA = qw(Exporter);
@EXPORT = qw(compare);
-@EXPORT_OK = qw(cmp);
+@EXPORT_OK = qw(cmp compare_text);
$Too_Big = 1024 * 1024 * 2;
@@ -22,13 +23,11 @@ sub compare {
croak("Usage: compare( file1, file2 [, buffersize]) ")
unless(@_ == 2 || @_ == 3);
- my $from = shift;
- my $to = shift;
- my $closefrom=0;
- my $closeto=0;
- my ($size, $fromsize, $status, $fr, $tr, $fbuf, $tbuf);
- local(*FROM, *TO);
- local($\) = '';
+ my ($from,$to,$size) = @_;
+ my $text_mode = defined($size) && (ref($size) eq 'CODE' || $size < 0);
+
+ my ($fromsize,$closefrom,$closeto);
+ local (*FROM, *TO);
croak("from undefined") unless (defined $from);
croak("to undefined") unless (defined $to);
@@ -40,9 +39,11 @@ sub compare {
*FROM = $from;
} else {
open(FROM,"<$from") or goto fail_open1;
- binmode FROM;
+ unless ($text_mode) {
+ binmode FROM;
+ $fromsize = -s FROM;
+ }
$closefrom = 1;
- $fromsize = -s FROM;
}
if (ref($to) &&
@@ -52,32 +53,45 @@ sub compare {
*TO = $to;
} else {
open(TO,"<$to") or goto fail_open2;
- binmode TO;
+ binmode TO unless $text_mode;
$closeto = 1;
}
- if ($closefrom && $closeto) {
+ if (!$text_mode && $closefrom && $closeto) {
# If both are opened files we know they differ if their size differ
goto fail_inner if $fromsize != -s TO;
}
- if (@_) {
- $size = shift(@_) + 0;
- croak("Bad buffer size for compare: $size\n") unless ($size > 0);
- } else {
- $size = $fromsize;
- $size = 1024 if ($size < 512);
- $size = $Too_Big if ($size > $Too_Big);
+ if ($text_mode) {
+ local $/ = "\n";
+ my ($fline,$tline);
+ while (defined($fline = <FROM>)) {
+ goto fail_inner unless defined($tline = <TO>);
+ if (ref $size) {
+ # $size contains ref to comparison function
+ goto fail_inner if &$size($fline, $tline);
+ } else {
+ goto fail_inner if $fline ne $tline;
+ }
+ }
+ goto fail_inner if defined($tline = <TO>);
}
+ else {
+ unless (defined($size) && $size > 0) {
+ $size = $fromsize || -s TO || 0;
+ $size = 1024 if $size < 512;
+ $size = $Too_Big if $size > $Too_Big;
+ }
- $fbuf = '';
- $tbuf = '';
- while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
- unless (defined($tr = read(TO,$tbuf,$fr)) and $tbuf eq $fbuf) {
- goto fail_inner;
+ my ($fr,$tr,$fbuf,$tbuf);
+ $fbuf = $tbuf = '';
+ while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
+ unless (defined($tr = read(TO,$tbuf,$fr)) && $tbuf eq $fbuf) {
+ goto fail_inner;
+ }
}
+ goto fail_inner if defined($tr = read(TO,$tbuf,$size)) && $tr > 0;
}
- goto fail_inner if (defined($tr = read(TO,$tbuf,$size)) && $tr > 0);
close(TO) || goto fail_open2 if $closeto;
close(FROM) || goto fail_open1 if $closefrom;
@@ -93,7 +107,7 @@ sub compare {
fail_open2:
if ($closefrom) {
- $status = $!;
+ my $status = $!;
$! = 0;
close FROM;
$! = $status unless $!;
@@ -102,8 +116,21 @@ sub compare {
return -1;
}
+sub cmp;
*cmp = \&compare;
+sub compare_text {
+ my ($from,$to,$cmp) = @_;
+ croak("Usage: compare_text( file1, file2 [, cmp-function])")
+ unless @_ == 2 || @_ == 3;
+ croak("Third arg to compare_text() function must be a code reference")
+ if @_ == 3 && ref($cmp) ne 'CODE';
+
+ # Using a negative buffer size puts compare into text_mode too
+ $cmp = -1 unless defined $cmp;
+ compare($from, $to, $cmp);
+}
+
1;
__END__
@@ -129,6 +156,18 @@ from File::Compare by default.
File::Compare::cmp is a synonym for File::Compare::compare. It is
exported from File::Compare only by request.
+File::Compare::compare_text does a line by line comparison of the two
+files. It stops as soon as a difference is detected. compare_text()
+accepts an optional third argument: This must be a CODE reference to
+a line comparison function, which returns 0 when both lines are considered
+equal. For example:
+
+ compare_text($file1, $file2)
+
+is basically equivalent to
+
+ compare_text($file1, $file2, sub {$_[0] ne $_[1]} )
+
=head1 RETURN
File::Compare::compare return 0 if the files are equal, 1 if the
diff --git a/contrib/perl5/lib/File/Copy.pm b/contrib/perl5/lib/File/Copy.pm
index e1da6b6..e6cf786 100644
--- a/contrib/perl5/lib/File/Copy.pm
+++ b/contrib/perl5/lib/File/Copy.pm
@@ -7,17 +7,21 @@
package File::Copy;
+use 5.005_64;
use strict;
use Carp;
-use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION $Too_Big
- &copy &syscopy &cp &mv);
+our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy);
+sub copy;
+sub syscopy;
+sub cp;
+sub mv;
# Note that this module implements only *part* of the API defined by
# the File/Copy.pm module of the File-Tools-2.0 package. However, that
# package has not yet been updated to work with Perl 5.004, and so it
# would be a Bad Thing for the CPAN module to grab it and replace this
# module. Therefore, we set this module's version higher than 2.0.
-$VERSION = '2.02';
+$VERSION = '2.03';
require Exporter;
@ISA = qw(Exporter);
@@ -60,11 +64,12 @@ sub copy {
$to = _catname($from, $to);
}
- if (defined &syscopy && \&syscopy != \&copy
+ if (defined &syscopy && !$Syscopy_is_copy
&& !$to_a_handle
&& !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles
&& !($from_a_handle && $^O eq 'mpeix') # and neither can MPE/iX.
- )
+ && !($from_a_handle && $^O eq 'MSWin32')
+ )
{
return syscopy($from, $to);
}
@@ -78,20 +83,20 @@ sub copy {
if ($from_a_handle) {
*FROM = *$from{FILEHANDLE};
} else {
- $from = "./$from" if $from =~ /^\s/;
+ $from = "./$from" if $from =~ /^\s/s;
open(FROM, "< $from\0") or goto fail_open1;
binmode FROM or die "($!,$^E)";
$closefrom = 1;
- }
-
+ }
+
if ($to_a_handle) {
*TO = *$to{FILEHANDLE};
- } else {
- $to = "./$to" if $to =~ /^\s/;
+ } else {
+ $to = "./$to" if $to =~ /^\s/s;
open(TO,"> $to\0") or goto fail_open2;
binmode TO or die "($!,$^E)";
$closeto = 1;
- }
+ }
if (@_) {
$size = shift(@_) + 0;
@@ -119,7 +124,7 @@ sub copy {
# Use this idiom to avoid uninitialized value warning.
return 1;
-
+
# All of these contortions try to preserve error messages...
fail_inner:
if ($closeto) {
@@ -162,10 +167,10 @@ sub move {
(($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there
($tosz1 != $tosz2 or $tomt1 != $tomt2) && # and changed
$tosz2 == $fromsz; # it's all there
-
+
($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something
return 1 if ($copied = copy($from,$to)) && unlink($from);
-
+
($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1;
unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2;
($!,$^E) = ($sts,$ossts);
@@ -186,7 +191,13 @@ unless (defined &syscopy) {
# preserve MPE file attributes.
return system('/bin/cp', '-f', $_[0], $_[1]) == 0;
};
+ } elsif ($^O eq 'MSWin32') {
+ *syscopy = sub {
+ return 0 unless @_ == 2;
+ return Win32::CopyFile(@_, 1);
+ };
} else {
+ $Syscopy_is_copy = 1;
*syscopy = \&copy;
}
}
@@ -272,9 +283,9 @@ second parameter, preserving OS-specific attributes and file
structure. For Unix systems, this is equivalent to the simple
C<copy> routine. For VMS systems, this calls the C<rmscopy>
routine (see below). For OS/2 systems, this calls the C<syscopy>
-XSUB directly.
+XSUB directly. For Win32 systems, this calls C<Win32::CopyFile>.
-=head2 Special behaviour if C<syscopy> is defined (VMS and OS/2)
+=head2 Special behaviour if C<syscopy> is defined (OS/2, VMS and Win32)
If both arguments to C<copy> are not file handles,
then C<copy> will perform a "system copy" of
diff --git a/contrib/perl5/lib/File/DosGlob.pm b/contrib/perl5/lib/File/DosGlob.pm
index 594ee2e..d7dea7b 100644
--- a/contrib/perl5/lib/File/DosGlob.pm
+++ b/contrib/perl5/lib/File/DosGlob.pm
@@ -19,13 +19,18 @@ sub doglob {
my $sepchr = '/';
next OUTER unless defined $_ and $_ ne '';
# if arg is within quotes strip em and do no globbing
- if (/^"(.*)"$/) {
+ if (/^"(.*)"\z/s) {
$_ = $1;
if ($cond eq 'd') { push(@retval, $_) if -d $_ }
else { push(@retval, $_) if -e $_ }
next OUTER;
}
- if (m|^(.*)([\\/])([^\\/]*)$|) {
+ # wildcards with a drive prefix such as h:*.pm must be changed
+ # to h:./*.pm to expand correctly
+ if (m|^([A-Za-z]:)[^/\\]|s) {
+ substr($_,0,2) = $1 . "./";
+ }
+ if (m|^(.*)([\\/])([^\\/]*)\z|s) {
my $tail;
($head, $sepchr, $tail) = ($1,$2,$3);
#print "div: |$head|$sepchr|$tail|\n";
@@ -35,7 +40,7 @@ sub doglob {
push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
next OUTER if @globdirs;
}
- $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:$/;
+ $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
$_ = $tail;
}
#
@@ -61,7 +66,7 @@ sub doglob {
s/\?/.?/g;
#print "regex: '$_', head: '$head'\n";
- my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '$|io }';
+ my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '\\z|ios }';
warn($@), next OUTER if $@;
INNER:
for my $e (@leaves) {
@@ -142,7 +147,7 @@ sub import {
my $pkg = shift;
return unless @_;
my $sym = shift;
- my $callpkg = ($sym =~ s/^GLOBAL_// ? 'CORE::GLOBAL' : caller(0));
+ my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
*{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
}
@@ -157,16 +162,16 @@ File::DosGlob - DOS like globbing and then some
=head1 SYNOPSIS
require 5.004;
-
+
# override CORE::glob in current package
use File::DosGlob 'glob';
-
+
# override CORE::glob in ALL packages (use with extreme caution!)
use File::DosGlob 'GLOBAL_glob';
@perlfiles = glob "..\\pe?l/*.p?";
print <..\\pe?l/*.p?>;
-
+
# from the command line (overrides only in main::)
> perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
@@ -206,7 +211,7 @@ pandering to DOS habits. Needs a dose of optimizium too.
=head1 AUTHOR
-Gurusamy Sarathy <gsar@umich.edu>
+Gurusamy Sarathy <gsar@activestate.com>
=head1 HISTORY
diff --git a/contrib/perl5/lib/File/Find.pm b/contrib/perl5/lib/File/Find.pm
index 7e67003..ac73f1b 100644
--- a/contrib/perl5/lib/File/Find.pm
+++ b/contrib/perl5/lib/File/Find.pm
@@ -1,5 +1,5 @@
package File::Find;
-require 5.000;
+use 5.005_64;
require Exporter;
require Cwd;
@@ -12,70 +12,163 @@ finddepth - traverse a directory structure depth-first
=head1 SYNOPSIS
use File::Find;
- find(\&wanted, '/foo','/bar');
+ find(\&wanted, '/foo', '/bar');
sub wanted { ... }
use File::Find;
- finddepth(\&wanted, '/foo','/bar');
+ finddepth(\&wanted, '/foo', '/bar');
sub wanted { ... }
+ use File::Find;
+ find({ wanted => \&process, follow => 1 }, '.');
+
=head1 DESCRIPTION
The first argument to find() is either a hash reference describing the
-operations to be performed for each file, a code reference, or a string
-that contains a subroutine name. If it is a hash reference, then the
-value for the key C<wanted> should be a code reference. This code
-reference is called I<the wanted() function> below.
+operations to be performed for each file, or a code reference.
-Currently the only other supported key for the above hash is
-C<bydepth>, in presense of which the walk over directories is
-performed depth-first. Entry point finddepth() is a shortcut for
-specifying C<{ bydepth => 1}> in the first argument of find().
+Here are the possible keys for the hash:
-The wanted() function does whatever verifications you want.
-$File::Find::dir contains the current directory name, and $_ the
-current filename within that directory. $File::Find::name contains
-C<"$File::Find::dir/$_">. You are chdir()'d to $File::Find::dir when
-the function is called. The function may set $File::Find::prune to
-prune the tree.
+=over 3
+
+=item C<wanted>
+
+The value should be a code reference. This code reference is called
+I<the wanted() function> below.
+
+=item C<bydepth>
+
+Reports the name of a directory only AFTER all its entries
+have been reported. Entry point finddepth() is a shortcut for
+specifying C<{ bydepth => 1 }> in the first argument of find().
+
+=item C<follow>
+
+Causes symbolic links to be followed. Since directory trees with symbolic
+links (followed) may contain files more than once and may even have
+cycles, a hash has to be built up with an entry for each file.
+This might be expensive both in space and time for a large
+directory tree. See I<follow_fast> and I<follow_skip> below.
+If either I<follow> or I<follow_fast> is in effect:
+
+=over 6
+
+=item *
+
+It is guarantueed that an I<lstat> has been called before the user's
+I<wanted()> function is called. This enables fast file checks involving S< _>.
+
+=item *
+
+There is a variable C<$File::Find::fullname> which holds the absolute
+pathname of the file with all symbolic links resolved
+
+=back
+
+=item C<follow_fast>
+
+This is similar to I<follow> except that it may report some files
+more than once. It does detect cycles however.
+Since only symbolic links have to be hashed, this is
+much cheaper both in space and time.
+If processing a file more than once (by the user's I<wanted()> function)
+is worse than just taking time, the option I<follow> should be used.
+
+=item C<follow_skip>
+
+C<follow_skip==1>, which is the default, causes all files which are
+neither directories nor symbolic links to be ignored if they are about
+to be processed a second time. If a directory or a symbolic link
+are about to be processed a second time, File::Find dies.
+C<follow_skip==0> causes File::Find to die if any file is about to be
+processed a second time.
+C<follow_skip==2> causes File::Find to ignore any duplicate files and
+dirctories but to proceed normally otherwise.
-File::Find assumes that you don't alter the $_ variable. If you do then
-make sure you return it to its original value before exiting your function.
+
+=item C<no_chdir>
+
+Does not C<chdir()> to each directory as it recurses. The wanted()
+function will need to be aware of this, of course. In this case,
+C<$_> will be the same as C<$File::Find::name>.
+
+=item C<untaint>
+
+If find is used in taint-mode (-T command line switch or if EUID != UID
+or if EGID != GID) then internally directory names have to be untainted
+before they can be cd'ed to. Therefore they are checked against a regular
+expression I<untaint_pattern>. Note, that all names passed to the
+user's I<wanted()> function are still tainted.
+
+=item C<untaint_pattern>
+
+See above. This should be set using the C<qr> quoting operator.
+The default is set to C<qr|^([-+@\w./]+)$|>.
+Note that the paranthesis which are vital.
+
+=item C<untaint_skip>
+
+If set, directories (subtrees) which fail the I<untaint_pattern>
+are skipped. The default is to 'die' in such a case.
+
+=back
+
+The wanted() function does whatever verifications you want.
+C<$File::Find::dir> contains the current directory name, and C<$_> the
+current filename within that directory. C<$File::Find::name> contains
+the complete pathname to the file. You are chdir()'d to C<$File::Find::dir> when
+the function is called, unless C<no_chdir> was specified.
+When <follow> or <follow_fast> are in effect there is also a
+C<$File::Find::fullname>.
+The function may set C<$File::Find::prune> to prune the tree
+unless C<bydepth> was specified.
+Unless C<follow> or C<follow_fast> is specified, for compatibility
+reasons (find.pl, find2perl) there are in addition the following globals
+available: C<$File::Find::topdir>, C<$File::Find::topdev>, C<$File::Find::topino>,
+C<$File::Find::topmode> and C<$File::Find::topnlink>.
This library is useful for the C<find2perl> tool, which when fed,
find2perl / -name .nfs\* -mtime +7 \
- -exec rm -f {} \; -o -fstype nfs -prune
+ -exec rm -f {} \; -o -fstype nfs -prune
produces something like:
sub wanted {
- /^\.nfs.*$/ &&
- (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
+ /^\.nfs.*\z/s &&
+ (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) &&
int(-M _) > 7 &&
unlink($_)
||
- ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
+ ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) &&
$dev < 0 &&
($File::Find::prune = 1);
}
-Set the variable $File::Find::dont_use_nlink if you're using AFS,
+Set the variable C<$File::Find::dont_use_nlink> if you're using AFS,
since AFS cheats.
-C<finddepth> is just like C<find>, except that it does a depth-first
-search.
Here's another interesting wanted function. It will find all symlinks
that don't resolve:
sub wanted {
- -l && !-e && print "bogus link: $File::Find::name\n";
+ -l && !-e && print "bogus link: $File::Find::name\n";
}
-=head1 BUGS
+See also the script C<pfind> on CPAN for a nice application of this
+module.
+
+=head1 CAVEAT
+
+Be aware that the option to follow symblic links can be dangerous.
+Depending on the structure of the directory tree (including symbolic
+links to directories) you might traverse a given (physical) directory
+more than once (only if C<follow_fast> is in effect).
+Furthermore, deleting or changing files in a symbolically linked directory
+might cause very unpleasant surprises, since you delete or change files
+in an unknown directory.
-There is no way to make find or finddepth follow symlinks.
=cut
@@ -83,150 +176,560 @@ There is no way to make find or finddepth follow symlinks.
@EXPORT = qw(find finddepth);
-sub find_opt {
+use strict;
+my $Is_VMS;
+
+require File::Basename;
+
+my %SLnkSeen;
+my ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
+ $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat);
+
+sub contract_name {
+ my ($cdir,$fn) = @_;
+
+ return substr($cdir,0,rindex($cdir,'/')) if $fn eq '.';
+
+ $cdir = substr($cdir,0,rindex($cdir,'/')+1);
+
+ $fn =~ s|^\./||;
+
+ my $abs_name= $cdir . $fn;
+
+ if (substr($fn,0,3) eq '../') {
+ do 1 while ($abs_name=~ s|/(?>[^/]+)/\.\./|/|);
+ }
+
+ return $abs_name;
+}
+
+
+sub PathCombine($$) {
+ my ($Base,$Name) = @_;
+ my $AbsName;
+
+ if (substr($Name,0,1) eq '/') {
+ $AbsName= $Name;
+ }
+ else {
+ $AbsName= contract_name($Base,$Name);
+ }
+
+ # (simple) check for recursion
+ my $newlen= length($AbsName);
+ if ($newlen <= length($Base)) {
+ if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/')
+ && $AbsName eq substr($Base,0,$newlen))
+ {
+ return undef;
+ }
+ }
+ return $AbsName;
+}
+
+sub Follow_SymLink($) {
+ my ($AbsName) = @_;
+
+ my ($NewName,$DEV, $INO);
+ ($DEV, $INO)= lstat $AbsName;
+
+ while (-l _) {
+ if ($SLnkSeen{$DEV, $INO}++) {
+ if ($follow_skip < 2) {
+ die "$AbsName is encountered a second time";
+ }
+ else {
+ return undef;
+ }
+ }
+ $NewName= PathCombine($AbsName, readlink($AbsName));
+ unless(defined $NewName) {
+ if ($follow_skip < 2) {
+ die "$AbsName is a recursive symbolic link";
+ }
+ else {
+ return undef;
+ }
+ }
+ else {
+ $AbsName= $NewName;
+ }
+ ($DEV, $INO) = lstat($AbsName);
+ return undef unless defined $DEV; # dangling symbolic link
+ }
+
+ if ($full_check && $SLnkSeen{$DEV, $INO}++) {
+ if ($follow_skip < 1) {
+ die "$AbsName encountered a second time";
+ }
+ else {
+ return undef;
+ }
+ }
+
+ return $AbsName;
+}
+
+our($dir, $name, $fullname, $prune);
+sub _find_dir_symlnk($$$);
+sub _find_dir($$$);
+
+sub _find_opt {
my $wanted = shift;
- my $bydepth = $wanted->{bydepth};
- my $cwd = $bydepth ? Cwd::fastcwd() : Cwd::cwd();
- # Localize these rather than lexicalizing them for backwards
- # compatibility.
- local($topdir,$topdev,$topino,$topmode,$topnlink);
- foreach $topdir (@_) {
- (($topdev,$topino,$topmode,$topnlink) =
- ($Is_VMS ? stat($topdir) : lstat($topdir)))
- || (warn("Can't stat $topdir: $!\n"), next);
- if (-d _) {
- if (chdir($topdir)) {
- $prune = 0;
- unless ($bydepth) {
- ($dir,$_) = ($topdir,'.');
- $name = $topdir;
- $wanted->{wanted}->();
+ die "invalid top directory" unless defined $_[0];
+
+ my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::cwd();
+ my $cwd_untainted = $cwd;
+ $wanted_callback = $wanted->{wanted};
+ $bydepth = $wanted->{bydepth};
+ $no_chdir = $wanted->{no_chdir};
+ $full_check = $wanted->{follow};
+ $follow = $full_check || $wanted->{follow_fast};
+ $follow_skip = $wanted->{follow_skip};
+ $untaint = $wanted->{untaint};
+ $untaint_pat = $wanted->{untaint_pattern};
+ $untaint_skip = $wanted->{untaint_skip};
+
+ # for compatability reasons (find.pl, find2perl)
+ our ($topdir, $topdev, $topino, $topmode, $topnlink);
+
+ # a symbolic link to a directory doesn't increase the link count
+ $avoid_nlink = $follow || $File::Find::dont_use_nlink;
+
+ if ( $untaint ) {
+ $cwd_untainted= $1 if $cwd_untainted =~ m|$untaint_pat|;
+ die "insecure cwd in find(depth)" unless defined($cwd_untainted);
+ }
+
+ my ($abs_dir, $Is_Dir);
+
+ Proc_Top_Item:
+ foreach my $TOP (@_) {
+ my $top_item = $TOP;
+ $top_item =~ s|/\z|| unless $top_item eq '/';
+ $Is_Dir= 0;
+
+ ($topdev,$topino,$topmode,$topnlink) = stat $top_item;
+
+ if ($follow) {
+ if (substr($top_item,0,1) eq '/') {
+ $abs_dir = $top_item;
+ }
+ elsif ($top_item eq '.') {
+ $abs_dir = $cwd;
+ }
+ else { # care about any ../
+ $abs_dir = contract_name("$cwd/",$top_item);
+ }
+ $abs_dir= Follow_SymLink($abs_dir);
+ unless (defined $abs_dir) {
+ warn "$top_item is a dangling symbolic link\n";
+ next Proc_Top_Item;
+ }
+ if (-d _) {
+ _find_dir_symlnk($wanted, $abs_dir, $top_item);
+ $Is_Dir= 1;
+ }
+ }
+ else { # no follow
+ $topdir = $top_item;
+ unless (defined $topnlink) {
+ warn "Can't stat $top_item: $!\n";
+ next Proc_Top_Item;
+ }
+ if (-d _) {
+ $top_item =~ s/\.dir\z// if $Is_VMS;
+ _find_dir($wanted, $top_item, $topnlink);
+ $Is_Dir= 1;
+ }
+ else {
+ $abs_dir= $top_item;
+ }
+ }
+
+ unless ($Is_Dir) {
+ unless (($_,$dir) = File::Basename::fileparse($abs_dir)) {
+ ($dir,$_) = ('./', $top_item);
+ }
+
+ $abs_dir = $dir;
+ if ($untaint) {
+ my $abs_dir_save = $abs_dir;
+ $abs_dir = $1 if $abs_dir =~ m|$untaint_pat|;
+ unless (defined $abs_dir) {
+ if ($untaint_skip == 0) {
+ die "directory $abs_dir_save is still tainted";
+ }
+ else {
+ next Proc_Top_Item;
+ }
}
- next if $prune;
- my $fixtopdir = $topdir;
- $fixtopdir =~ s,/$,, ;
- $fixtopdir =~ s/\.dir$// if $Is_VMS;
- &finddir($wanted,$fixtopdir,$topnlink, $bydepth);
- if ($bydepth) {
- ($dir,$_) = ($fixtopdir,'.');
- $name = $fixtopdir;
- $wanted->{wanted}->();
+ }
+
+ unless ($no_chdir or chdir $abs_dir) {
+ warn "Couldn't chdir $abs_dir: $!\n";
+ next Proc_Top_Item;
+ }
+
+ $name = $abs_dir . $_;
+
+ &$wanted_callback;
+
+ }
+
+ $no_chdir or chdir $cwd_untainted;
+ }
+}
+
+# API:
+# $wanted
+# $p_dir : "parent directory"
+# $nlink : what came back from the stat
+# preconditions:
+# chdir (if not no_chdir) to dir
+
+sub _find_dir($$$) {
+ my ($wanted, $p_dir, $nlink) = @_;
+ my ($CdLvl,$Level) = (0,0);
+ my @Stack;
+ my @filenames;
+ my ($subcount,$sub_nlink);
+ my $SE= [];
+ my $dir_name= $p_dir;
+ my $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
+ my $dir_rel= '.'; # directory name relative to current directory
+
+ local ($dir, $name, $prune, *DIR);
+
+ unless ($no_chdir or $p_dir eq '.') {
+ my $udir = $p_dir;
+ if ($untaint) {
+ $udir = $1 if $p_dir =~ m|$untaint_pat|;
+ unless (defined $udir) {
+ if ($untaint_skip == 0) {
+ die "directory $p_dir is still tainted";
+ }
+ else {
+ return;
}
}
- else {
- warn "Can't cd to $topdir: $!\n";
+ }
+ unless (chdir $udir) {
+ warn "Can't cd to $udir: $!\n";
+ return;
+ }
+ }
+
+ push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
+
+ while (defined $SE) {
+ unless ($bydepth) {
+ $dir= $p_dir;
+ $name= $dir_name;
+ $_= ($no_chdir ? $dir_name : $dir_rel );
+ # prune may happen here
+ $prune= 0;
+ &$wanted_callback;
+ next if $prune;
+ }
+
+ # change to that directory
+ unless ($no_chdir or $dir_rel eq '.') {
+ my $udir= $dir_rel;
+ if ($untaint) {
+ $udir = $1 if $dir_rel =~ m|$untaint_pat|;
+ unless (defined $udir) {
+ if ($untaint_skip == 0) {
+ die "directory ("
+ . ($p_dir ne '/' ? $p_dir : '')
+ . "/) $dir_rel is still tainted";
+ }
+ }
+ }
+ unless (chdir $udir) {
+ warn "Can't cd to ("
+ . ($p_dir ne '/' ? $p_dir : '')
+ . "/) $udir : $!\n";
+ next;
}
+ $CdLvl++;
}
- else {
- require File::Basename;
- unless (($_,$dir) = File::Basename::fileparse($topdir)) {
- ($dir,$_) = ('.', $topdir);
+
+ $dir= $dir_name;
+
+ # Get the list of files in the current directory.
+ unless (opendir DIR, ($no_chdir ? $dir_name : '.')) {
+ warn "Can't opendir($dir_name): $!\n";
+ next;
+ }
+ @filenames = readdir DIR;
+ closedir(DIR);
+
+ if ($nlink == 2 && !$avoid_nlink) {
+ # This dir has no subdirectories.
+ for my $FN (@filenames) {
+ next if $FN =~ /^\.{1,2}\z/;
+
+ $name = $dir_pref . $FN;
+ $_ = ($no_chdir ? $name : $FN);
+ &$wanted_callback;
}
- if (chdir($dir)) {
- $name = $topdir;
- $wanted->{wanted}->();
+
+ }
+ else {
+ # This dir has subdirectories.
+ $subcount = $nlink - 2;
+
+ for my $FN (@filenames) {
+ next if $FN =~ /^\.{1,2}\z/;
+ if ($subcount > 0 || $avoid_nlink) {
+ # Seen all the subdirs?
+ # check for directoriness.
+ # stat is faster for a file in the current directory
+ $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
+
+ if (-d _) {
+ --$subcount;
+ $FN =~ s/\.dir\z// if $Is_VMS;
+ push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
+ }
+ else {
+ $name = $dir_pref . $FN;
+ $_= ($no_chdir ? $name : $FN);
+ &$wanted_callback;
+ }
+ }
+ else {
+ $name = $dir_pref . $FN;
+ $_= ($no_chdir ? $name : $FN);
+ &$wanted_callback;
+ }
}
- else {
- warn "Can't cd to $dir: $!\n";
+ }
+ }
+ continue {
+ while ( defined ($SE = pop @Stack) ) {
+ ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
+ if ($CdLvl > $Level && !$no_chdir) {
+ my $tmp = join('/',('..') x ($CdLvl-$Level));
+ die "Can't cd to $dir_name" . $tmp
+ unless chdir ($tmp);
+ $CdLvl = $Level;
}
+ $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
+ $dir_pref = "$dir_name/";
+ if ( $nlink < 0 ) { # must be finddepth, report dirname now
+ $name = $dir_name;
+ if ( substr($name,-2) eq '/.' ) {
+ $name =~ s|/\.$||;
+ }
+ $dir = $p_dir;
+ $_ = ($no_chdir ? $dir_name : $dir_rel );
+ if ( substr($_,-2) eq '/.' ) {
+ s|/\.$||;
+ }
+ &$wanted_callback;
+ } else {
+ push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
+ last;
+ }
}
- chdir $cwd;
}
}
-sub finddir {
- my($wanted, $nlink, $bydepth);
- local($dir, $name);
- ($wanted, $dir, $nlink, $bydepth) = @_;
-
- my($dev, $ino, $mode, $subcount);
-
- # Get the list of files in the current directory.
- opendir(DIR,'.') || (warn("Can't open $dir: $!\n"), $bydepth || return);
- my(@filenames) = readdir(DIR);
- closedir(DIR);
-
- if ($nlink == 2 && !$dont_use_nlink) { # This dir has no subdirectories.
- for (@filenames) {
- next if $_ eq '.';
- next if $_ eq '..';
- $name = "$dir/$_";
- $nlink = 0;
- $wanted->{wanted}->();
- }
- }
- else { # This dir has subdirectories.
- $subcount = $nlink - 2;
- for (@filenames) {
- next if $_ eq '.';
- next if $_ eq '..';
- $nlink = 0;
- $prune = 0 unless $bydepth;
- $name = "$dir/$_";
- $wanted->{wanted}->() unless $bydepth;
- if ($subcount > 0 || $dont_use_nlink) { # Seen all the subdirs?
-
- # Get link count and check for directoriness.
-
- ($dev,$ino,$mode,$nlink) = ($Is_VMS ? stat($_) : lstat($_));
- # unless ($nlink || $dont_use_nlink);
-
- if (-d _) {
-
- # It really is a directory, so do it recursively.
-
- --$subcount;
- next if $prune;
- # Untaint $_, so that we can do a chdir
- $_ = $1 if /^(.*)/;
- if (chdir $_) {
- $name =~ s/\.dir$// if $Is_VMS;
- &finddir($wanted,$name,$nlink, $bydepth);
- chdir '..';
+
+# API:
+# $wanted
+# $dir_loc : absolute location of a dir
+# $p_dir : "parent directory"
+# preconditions:
+# chdir (if not no_chdir) to dir
+
+sub _find_dir_symlnk($$$) {
+ my ($wanted, $dir_loc, $p_dir) = @_;
+ my @Stack;
+ my @filenames;
+ my $new_loc;
+ my $pdir_loc = $dir_loc;
+ my $SE = [];
+ my $dir_name = $p_dir;
+ my $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
+ my $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
+ my $dir_rel = '.'; # directory name relative to current directory
+ my $byd_flag; # flag for pending stack entry if $bydepth
+
+ local ($dir, $name, $fullname, $prune, *DIR);
+
+ unless ($no_chdir or $p_dir eq '.') {
+ my $udir = $dir_loc;
+ if ($untaint) {
+ $udir = $1 if $dir_loc =~ m|$untaint_pat|;
+ unless (defined $udir) {
+ if ($untaint_skip == 0) {
+ die "directory $dir_loc is still tainted";
+ }
+ else {
+ return;
+ }
+ }
+ }
+ unless (chdir $udir) {
+ warn "Can't cd to $udir: $!\n";
+ return;
+ }
+ }
+
+ push @Stack,[$dir_loc,$pdir_loc,$p_dir,$dir_rel,-1] if $bydepth;
+
+ while (defined $SE) {
+
+ unless ($bydepth) {
+ $dir= $p_dir;
+ $name= $dir_name;
+ $_= ($no_chdir ? $dir_name : $dir_rel );
+ $fullname= $dir_loc;
+ # prune may happen here
+ $prune= 0;
+ &$wanted_callback;
+ next if $prune;
+ }
+
+ # change to that directory
+ unless ($no_chdir or $dir_rel eq '.') {
+ my $udir = $dir_loc;
+ if ($untaint) {
+ $udir = $1 if $dir_loc =~ m|$untaint_pat|;
+ unless (defined $udir ) {
+ if ($untaint_skip == 0) {
+ die "directory $dir_loc is still tainted";
}
else {
- warn "Can't cd to $_: $!\n";
+ next;
}
}
}
- $wanted->{wanted}->() if $bydepth;
+ unless (chdir $udir) {
+ warn "Can't cd to $udir: $!\n";
+ next;
+ }
+ }
+
+ $dir = $dir_name;
+
+ # Get the list of files in the current directory.
+ unless (opendir DIR, ($no_chdir ? $dir_loc : '.')) {
+ warn "Can't opendir($dir_loc): $!\n";
+ next;
+ }
+ @filenames = readdir DIR;
+ closedir(DIR);
+
+ for my $FN (@filenames) {
+ next if $FN =~ /^\.{1,2}\z/;
+
+ # follow symbolic links / do an lstat
+ $new_loc = Follow_SymLink($loc_pref.$FN);
+
+ # ignore if invalid symlink
+ next unless defined $new_loc;
+
+ if (-d _) {
+ push @Stack,[$new_loc,$dir_loc,$dir_name,$FN,1];
+ }
+ else {
+ $fullname = $new_loc;
+ $name = $dir_pref . $FN;
+ $_ = ($no_chdir ? $name : $FN);
+ &$wanted_callback;
+ }
+ }
+
+ }
+ continue {
+ while (defined($SE = pop @Stack)) {
+ ($dir_loc, $pdir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
+ $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
+ $dir_pref = "$dir_name/";
+ $loc_pref = "$dir_loc/";
+ if ( $byd_flag < 0 ) { # must be finddepth, report dirname now
+ unless ($no_chdir or $dir_rel eq '.') {
+ my $udir = $pdir_loc;
+ if ($untaint) {
+ $udir = $1 if $dir_loc =~ m|$untaint_pat|;
+ }
+ unless (chdir $udir) {
+ warn "Can't cd to $udir: $!\n";
+ next;
+ }
+ }
+ $fullname = $dir_loc;
+ $name = $dir_name;
+ if ( substr($name,-2) eq '/.' ) {
+ $name =~ s|/\.$||;
+ }
+ $dir = $p_dir;
+ $_ = ($no_chdir ? $dir_name : $dir_rel);
+ if ( substr($_,-2) eq '/.' ) {
+ s|/\.$||;
+ }
+
+ &$wanted_callback;
+ } else {
+ push @Stack,[$dir_loc, $pdir_loc, $p_dir, $dir_rel,-1] if $bydepth;
+ last;
+ }
}
}
}
+
sub wrap_wanted {
- my $wanted = shift;
- ref($wanted) eq 'HASH' ? $wanted : { wanted => $wanted };
+ my $wanted = shift;
+ if ( ref($wanted) eq 'HASH' ) {
+ if ( $wanted->{follow} || $wanted->{follow_fast}) {
+ $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip};
+ }
+ if ( $wanted->{untaint} ) {
+ $wanted->{untaint_pattern} = qr|^([-+@\w./]+)$|
+ unless defined $wanted->{untaint_pattern};
+ $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip};
+ }
+ return $wanted;
+ }
+ else {
+ return { wanted => $wanted };
+ }
}
sub find {
- my $wanted = shift;
- find_opt(wrap_wanted($wanted), @_);
+ my $wanted = shift;
+ _find_opt(wrap_wanted($wanted), @_);
+ %SLnkSeen= (); # free memory
}
sub finddepth {
- my $wanted = wrap_wanted(shift);
- $wanted->{bydepth} = 1;
- find_opt($wanted, @_);
+ my $wanted = wrap_wanted(shift);
+ $wanted->{bydepth} = 1;
+ _find_opt($wanted, @_);
+ %SLnkSeen= (); # free memory
}
# These are hard-coded for now, but may move to hint files.
if ($^O eq 'VMS') {
- $Is_VMS = 1;
- $dont_use_nlink = 1;
+ $Is_VMS = 1;
+ $File::Find::dont_use_nlink = 1;
}
-$dont_use_nlink = 1
+$File::Find::dont_use_nlink = 1
if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32';
# Set dont_use_nlink in your hint file if your system's stat doesn't
# report the number of links in a directory as an indication
# of the number of files.
# See, e.g. hints/machten.sh for MachTen 2.2.
-unless ($dont_use_nlink) {
- require Config;
- $dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
+unless ($File::Find::dont_use_nlink) {
+ require Config;
+ $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
}
1;
-
diff --git a/contrib/perl5/lib/File/Path.pm b/contrib/perl5/lib/File/Path.pm
index 225ecab..46f360a 100644
--- a/contrib/perl5/lib/File/Path.pm
+++ b/contrib/perl5/lib/File/Path.pm
@@ -2,15 +2,14 @@ package File::Path;
=head1 NAME
-File::Path - create or remove a series of directories
+File::Path - create or remove directory trees
=head1 SYNOPSIS
-C<use File::Path>
+ use File::Path;
-C<mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);>
-
-C<rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);>
+ mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
+ rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
=head1 DESCRIPTION
@@ -74,7 +73,7 @@ than VMS is settled. (defaults to FALSE)
=back
It returns the number of files successfully deleted. Symlinks are
-treated as ordinary files.
+simply deleted and not followed.
B<NOTE:> If the third parameter is not TRUE, C<rmtree> is B<unsecure>
in the face of failure or interruption. Files and directories which
@@ -90,22 +89,17 @@ in situations where security is an issue.
Tim Bunce <F<Tim.Bunce@ig.co.uk>> and
Charles Bailey <F<bailey@newman.upenn.edu>>
-=head1 REVISION
-
-Current $VERSION is 1.0401.
-
=cut
+use 5.005_64;
use Carp;
use File::Basename ();
-use DirHandle ();
use Exporter ();
use strict;
-use vars qw( $VERSION @ISA @EXPORT );
-$VERSION = "1.0401";
-@ISA = qw( Exporter );
-@EXPORT = qw( mkpath rmtree );
+our $VERSION = "1.0403";
+our @ISA = qw( Exporter );
+our @EXPORT = qw( mkpath rmtree );
my $Is_VMS = $^O eq 'VMS';
@@ -124,20 +118,22 @@ sub mkpath {
$paths = [$paths] unless ref $paths;
my(@created,$path);
foreach $path (@$paths) {
- $path .= '/' if $^O eq 'os2' and $path =~ /^\w:$/; # feature of CRT
+ $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT
next if -d $path;
# Logic wants Unix paths, so go with the flow.
$path = VMS::Filespec::unixify($path) if $Is_VMS;
my $parent = File::Basename::dirname($path);
# Allow for creation of new logical filesystems under VMS
if (not $Is_VMS or $parent !~ m:/[^/]+/000000/?:) {
- push(@created,mkpath($parent, $verbose, $mode)) unless (-d $parent);
+ unless (-d $parent or $path eq $parent) {
+ push(@created,mkpath($parent, $verbose, $mode));
+ }
}
print "mkdir $path\n" if $verbose;
unless (mkdir($path,$mode)) {
- my $e = $!;
- # allow for another process to have created it meanwhile
- croak "mkdir $path: $e" unless -d $path;
+ my $e = $!;
+ # allow for another process to have created it meanwhile
+ croak "mkdir $path: $e" unless -d $path;
}
push(@created, $path);
}
@@ -148,13 +144,20 @@ sub rmtree {
my($roots, $verbose, $safe) = @_;
my(@files);
my($count) = 0;
- $roots = [$roots] unless ref $roots;
$verbose ||= 0;
$safe ||= 0;
+ if ( defined($roots) && length($roots) ) {
+ $roots = [$roots] unless ref $roots;
+ }
+ else {
+ carp "No root path(s) specified\n";
+ return 0;
+ }
+
my($root);
foreach $root (@{$roots}) {
- $root =~ s#/$##;
+ $root =~ s#/\z##;
(undef, undef, my $rp) = lstat $root or next;
$rp &= 07777; # don't forget setuid, setgid, sticky bits
if ( -d _ ) {
@@ -166,16 +169,20 @@ sub rmtree {
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
- my $d = DirHandle->new($root)
- or carp "Can't read $root: $!";
- @files = $d->read;
- $d->close;
+ if (opendir my $d, $root) {
+ @files = readdir $d;
+ closedir $d;
+ }
+ else {
+ carp "Can't read $root: $!";
+ @files = ();
+ }
# Deleting large numbers of files from VMS Files-11 filesystems
# is faster if done in reverse ASCIIbetical order
@files = reverse @files if $Is_VMS;
- ($root = VMS::Filespec::unixify($root)) =~ s#\.dir$## if $Is_VMS;
- @files = map("$root/$_", grep $_!~/^\.{1,2}$/,@files);
+ ($root = VMS::Filespec::unixify($root)) =~ s#\.dir\z## if $Is_VMS;
+ @files = map("$root/$_", grep $_!~/^\.{1,2}\z/s,@files);
$count += rmtree(\@files,$verbose,$safe);
if ($safe &&
($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
@@ -198,7 +205,9 @@ sub rmtree {
}
else {
if ($safe &&
- ($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
+ ($Is_VMS ? !&VMS::Filespec::candelete($root)
+ : !(-l $root || -w $root)))
+ {
print "skipped $root\n" if $verbose;
next;
}
diff --git a/contrib/perl5/lib/File/Spec.pm b/contrib/perl5/lib/File/Spec.pm
index 616dcbc..40f5345 100644
--- a/contrib/perl5/lib/File/Spec.pm
+++ b/contrib/perl5/lib/File/Spec.pm
@@ -1,47 +1,18 @@
package File::Spec;
-require Exporter;
-
-@ISA = qw(Exporter);
-# Items to export into callers namespace by default. Note: do not export
-# names by default without a very good reason. Use EXPORT_OK instead.
-# Do not simply export all your public functions/methods/constants.
-@EXPORT = qw(
-
-);
-@EXPORT_OK = qw($Verbose);
-
use strict;
-use vars qw(@ISA $VERSION $Verbose);
-
-$VERSION = '0.6';
-
-$Verbose = 0;
+use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
+$VERSION = '0.8';
+my %module = (MacOS => 'Mac',
+ MSWin32 => 'Win32',
+ os2 => 'OS2',
+ VMS => 'VMS');
-sub load {
- my($class,$OS) = @_;
- if ($OS eq 'VMS') {
- require File::Spec::VMS;
- require VMS::Filespec;
- 'File::Spec::VMS'
- } elsif ($OS eq 'os2') {
- require File::Spec::OS2;
- 'File::Spec::OS2'
- } elsif ($OS eq 'MacOS') {
- require File::Spec::Mac;
- 'File::Spec::Mac'
- } elsif ($OS eq 'MSWin32') {
- require File::Spec::Win32;
- 'File::Spec::Win32'
- } else {
- 'File::Spec::Unix'
- }
-}
-
-@ISA = load('File::Spec', $^O);
+my $module = $module{$^O} || 'Unix';
+require "File/Spec/$module.pm";
+@ISA = ("File::Spec::$module");
1;
__END__
@@ -52,11 +23,15 @@ File::Spec - portably perform operations on file names
=head1 SYNOPSIS
-C<use File::Spec;>
+ use File::Spec;
+
+ $x=File::Spec->catfile('a', 'b', 'c');
+
+which returns 'a/b/c' under Unix. Or:
-C<$x=File::Spec-E<gt>catfile('a','b','c');>
+ use File::Spec::Functions;
-which returns 'a/b/c' under Unix.
+ $x = catfile('a', 'b', 'c');
=head1 DESCRIPTION
@@ -78,28 +53,31 @@ OS specific routines is available in a separate module, including:
File::Spec::VMS
The module appropriate for the current OS is automatically loaded by
-File::Spec. Since some modules (like VMS) make use of OS specific
-facilities, it may not be possible to load all modules under all operating
-systems.
+File::Spec. Since some modules (like VMS) make use of facilities available
+only under that OS, it may not be possible to load all modules under all
+operating systems.
Since File::Spec is object oriented, subroutines should not called directly,
as in:
File::Spec::catfile('a','b');
-
+
but rather as class methods:
File::Spec->catfile('a','b');
-For a reference of available functions, please consult L<File::Spec::Unix>,
-which contains the entire set, and inherited by the modules for other
-platforms. For further information, please see L<File::Spec::Mac>,
+For simple uses, L<File::Spec::Functions> provides convenient functional
+forms of these methods.
+
+For a list of available methods, please consult L<File::Spec::Unix>,
+which contains the entire set, and which is inherited by the modules for
+other platforms. For further information, please see L<File::Spec::Mac>,
L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>.
=head1 SEE ALSO
File::Spec::Unix, File::Spec::Mac, File::Spec::OS2, File::Spec::Win32,
-File::Spec::VMS, ExtUtils::MakeMaker
+File::Spec::VMS, File::Spec::Functions, ExtUtils::MakeMaker
=head1 AUTHORS
@@ -108,9 +86,7 @@ Kenneth Albanowski <F<kjahds@kjahds.com>>, Andy Dougherty
<F<A.Koenig@franz.ww.TU-Berlin.DE>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>. VMS
support by Charles Bailey <F<bailey@newman.upenn.edu>>. OS/2 support by
Ilya Zakharevich <F<ilya@math.ohio-state.edu>>. Mac support by Paul Schinder
-<F<schinder@pobox.com>>.
-
-=cut
-
-
-1;
+<F<schinder@pobox.com>>. abs2rel() and rel2abs() written by
+Shigio Yamaguchi <F<shigio@tamacom.com>>, modified by Barrie Slaymaker
+<F<barries@slaysys.com>>. splitpath(), splitdir(), catpath() and catdir()
+by Barrie Slaymaker.
diff --git a/contrib/perl5/lib/File/Spec/Functions.pm b/contrib/perl5/lib/File/Spec/Functions.pm
new file mode 100644
index 0000000..140738f
--- /dev/null
+++ b/contrib/perl5/lib/File/Spec/Functions.pm
@@ -0,0 +1,95 @@
+package File::Spec::Functions;
+
+use File::Spec;
+use strict;
+
+use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+
+require Exporter;
+
+@ISA = qw(Exporter);
+
+@EXPORT = qw(
+ canonpath
+ catdir
+ catfile
+ curdir
+ rootdir
+ updir
+ no_upwards
+ file_name_is_absolute
+ path
+);
+
+@EXPORT_OK = qw(
+ devnull
+ tmpdir
+ splitpath
+ splitdir
+ catpath
+ abs2rel
+ rel2abs
+);
+
+%EXPORT_TAGS = ( ALL => [ @EXPORT_OK, @EXPORT ] );
+
+foreach my $meth (@EXPORT, @EXPORT_OK) {
+ my $sub = File::Spec->can($meth);
+ no strict 'refs';
+ *{$meth} = sub {&$sub('File::Spec', @_)};
+}
+
+
+1;
+__END__
+
+=head1 NAME
+
+File::Spec::Functions - portably perform operations on file names
+
+=head1 SYNOPSIS
+
+ use File::Spec::Functions;
+ $x = catfile('a','b');
+
+=head1 DESCRIPTION
+
+This module exports convenience functions for all of the class methods
+provided by File::Spec.
+
+For a reference of available functions, please consult L<File::Spec::Unix>,
+which contains the entire set, and which is inherited by the modules for
+other platforms. For further information, please see L<File::Spec::Mac>,
+L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>.
+
+=head2 Exports
+
+The following functions are exported by default.
+
+ canonpath
+ catdir
+ catfile
+ curdir
+ rootdir
+ updir
+ no_upwards
+ file_name_is_absolute
+ path
+
+
+The following functions are exported only by request.
+
+ devnull
+ tmpdir
+ splitpath
+ splitdir
+ catpath
+ abs2rel
+ rel2abs
+
+All the functions may be imported using the C<:ALL> tag.
+
+=head1 SEE ALSO
+
+File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
+File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
diff --git a/contrib/perl5/lib/File/Spec/Mac.pm b/contrib/perl5/lib/File/Spec/Mac.pm
index 63a9e12..959e33d 100644
--- a/contrib/perl5/lib/File/Spec/Mac.pm
+++ b/contrib/perl5/lib/File/Spec/Mac.pm
@@ -1,18 +1,9 @@
package File::Spec::Mac;
-use Exporter ();
-use Config;
use strict;
-use File::Spec;
-use vars qw(@ISA $VERSION $Is_Mac);
-
-$VERSION = '1.0';
-
+use vars qw(@ISA);
+require File::Spec::Unix;
@ISA = qw(File::Spec::Unix);
-$Is_Mac = $^O eq 'MacOS';
-
-Exporter::import('File::Spec', '$Verbose');
-
=head1 NAME
@@ -20,7 +11,7 @@ File::Spec::Mac - File::Spec for MacOS
=head1 SYNOPSIS
-C<require File::Spec::Mac;>
+ require File::Spec::Mac; # Done internally by File::Spec if needed
=head1 DESCRIPTION
@@ -37,8 +28,8 @@ On MacOS, there's nothing to be done. Returns what it's given.
=cut
sub canonpath {
- my($self,$path) = @_;
- $path;
+ my ($self,$path) = @_;
+ return $path;
}
=item catdir
@@ -84,20 +75,17 @@ aren't done here. This routine will treat this as absolute.
=cut
-# ';
-
sub catdir {
shift;
my @args = @_;
- $args[0] =~ s/:$//;
- my $result = shift @args;
- for (@args) {
- s/:$//;
- s/^://;
- $result .= ":$_";
+ my $result = shift @args;
+ $result =~ s/:\z//;
+ foreach (@args) {
+ s/:\z//;
+ s/^://s;
+ $result .= ":$_";
}
- $result .= ":";
- $result;
+ return "$result:";
}
=item catfile
@@ -118,50 +106,69 @@ give the same answer, as one might expect.
=cut
sub catfile {
- my $self = shift @_;
+ my $self = shift;
my $file = pop @_;
return $file unless @_;
my $dir = $self->catdir(@_);
- $file =~ s/^://;
+ $file =~ s/^://s;
return $dir.$file;
}
=item curdir
-Returns a string representing of the current directory.
+Returns a string representing the current directory.
=cut
sub curdir {
- return ":" ;
+ return ":";
+}
+
+=item devnull
+
+Returns a string representing the null device.
+
+=cut
+
+sub devnull {
+ return "Dev:Null";
}
=item rootdir
Returns a string representing the root directory. Under MacPerl,
returns the name of the startup volume, since that's the closest in
-concept, although other volumes aren't rooted there. On any other
-platform returns '', since there's no common way to indicate "root
-directory" across all Macs.
+concept, although other volumes aren't rooted there.
=cut
sub rootdir {
#
-# There's no real root directory on MacOS. If you're using MacPerl,
-# the name of the startup volume is returned, since that's the closest in
-# concept. On other platforms, simply return '', because nothing better
-# can be done.
+# There's no real root directory on MacOS. The name of the startup
+# volume is returned, since that's the closest in concept.
#
- if($Is_Mac) {
- require Mac::Files;
- my $system = Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
- &Mac::Files::kSystemFolderType);
- $system =~ s/:.*$/:/;
- return $system;
- } else {
- return '';
- }
+ require Mac::Files;
+ my $system = Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
+ &Mac::Files::kSystemFolderType);
+ $system =~ s/:.*\z/:/s;
+ return $system;
+}
+
+=item tmpdir
+
+Returns a string representation of the first existing directory
+from the following list or '' if none exist:
+
+ $ENV{TMPDIR}
+
+=cut
+
+my $tmpdir;
+sub tmpdir {
+ return $tmpdir if defined $tmpdir;
+ $tmpdir = $ENV{TMPDIR} if -d $ENV{TMPDIR};
+ $tmpdir = '' unless defined $tmpdir;
+ return $tmpdir;
}
=item updir
@@ -185,11 +192,11 @@ distinguish unambiguously.
=cut
sub file_name_is_absolute {
- my($self,$file) = @_;
- if ($file =~ /:/) {
- return ($file !~ m/^:/);
- } else {
- return (! -e ":$file");
+ my ($self,$file) = @_;
+ if ($file =~ /:/) {
+ return ($file !~ m/^:/s);
+ } else {
+ return (! -e ":$file");
}
}
@@ -207,16 +214,178 @@ sub path {
# The concept is meaningless under the MacPerl application.
# Under MPW, it has a meaning.
#
- my($self) = @_;
- my @path;
- if(exists $ENV{Commands}) {
- @path = split /,/,$ENV{Commands};
- } else {
- @path = ();
- }
- @path;
+ return unless exists $ENV{Commands};
+ return split(/,/, $ENV{Commands});
+}
+
+=item splitpath
+
+=cut
+
+sub splitpath {
+ my ($self,$path, $nofile) = @_;
+
+ my ($volume,$directory,$file) = ('','','');
+
+ if ( $nofile ) {
+ ( $volume, $directory ) = $path =~ m@((?:[^:]+(?::|\z))?)(.*)@s;
+ }
+ else {
+ $path =~
+ m@^( (?: [^:]+: )? )
+ ( (?: .*: )? )
+ ( .* )
+ @xs;
+ $volume = $1;
+ $directory = $2;
+ $file = $3;
+ }
+
+ # Make sure non-empty volumes and directories end in ':'
+ $volume .= ':' if $volume =~ m@[^:]\z@ ;
+ $directory .= ':' if $directory =~ m@[^:]\z@ ;
+ return ($volume,$directory,$file);
+}
+
+
+=item splitdir
+
+=cut
+
+sub splitdir {
+ my ($self,$directories) = @_ ;
+ #
+ # split() likes to forget about trailing null fields, so here we
+ # check to be sure that there will not be any before handling the
+ # simple case.
+ #
+ if ( $directories !~ m@:\z@ ) {
+ return split( m@:@, $directories );
+ }
+ else {
+ #
+ # since there was a trailing separator, add a file name to the end,
+ # then do the split, then replace it with ''.
+ #
+ my( @directories )= split( m@:@, "${directories}dummy" ) ;
+ $directories[ $#directories ]= '' ;
+ return @directories ;
+ }
+}
+
+
+=item catpath
+
+=cut
+
+sub catpath {
+ my $self = shift ;
+
+ my $result = shift ;
+ $result =~ s@^([^/])@/$1@s ;
+
+ my $segment ;
+ for $segment ( @_ ) {
+ if ( $result =~ m@[^/]\z@ && $segment =~ m@^[^/]@s ) {
+ $result .= "/$segment" ;
+ }
+ elsif ( $result =~ m@/\z@ && $segment =~ m@^/@s ) {
+ $result =~ s@/+\z@/@;
+ $segment =~ s@^/+@@s;
+ $result .= "$segment" ;
+ }
+ else {
+ $result .= $segment ;
+ }
+ }
+
+ return $result ;
}
+=item abs2rel
+
+=cut
+
+sub abs2rel {
+ my($self,$path,$base) = @_;
+
+ # Clean up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ $path = $self->rel2abs( $path ) ;
+ }
+
+ # Figure out the effective $base and clean it up.
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+
+ # Now, remove all leading components that are the same
+ my @pathchunks = $self->splitdir( $path );
+ my @basechunks = $self->splitdir( $base );
+
+ while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
+ shift @pathchunks ;
+ shift @basechunks ;
+ }
+
+ $path = join( ':', @pathchunks );
+
+ # @basechunks now contains the number of directories to climb out of.
+ $base = ':' x @basechunks ;
+
+ return "$base:$path" ;
+}
+
+=item rel2abs
+
+Converts a relative path to an absolute path.
+
+ $abs_path = File::Spec->rel2abs( $destination ) ;
+ $abs_path = File::Spec->rel2abs( $destination, $base ) ;
+
+If $base is not present or '', then L<cwd()> is used. If $base is relative,
+then it is converted to absolute form using L</rel2abs()>. This means that it
+is taken to be relative to L<cwd()>.
+
+On systems with the concept of a volume, this assumes that both paths
+are on the $base volume, and ignores the $destination volume.
+
+On systems that have a grammar that indicates filenames, this ignores the
+$base filename as well. Otherwise all path components are assumed to be
+directories.
+
+If $path is absolute, it is cleaned up and returned using L</canonpath()>.
+
+Based on code written by Shigio Yamaguchi.
+
+No checks against the filesystem are made.
+
+=cut
+
+sub rel2abs($;$;) {
+ my ($self,$path,$base ) = @_;
+
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ $path = $self->canonpath("$base$path") ;
+ }
+
+ return $path ;
+}
+
+
=back
=head1 SEE ALSO
@@ -226,5 +395,3 @@ L<File::Spec>
=cut
1;
-__END__
-
diff --git a/contrib/perl5/lib/File/Spec/OS2.pm b/contrib/perl5/lib/File/Spec/OS2.pm
index d602617..33370f0 100644
--- a/contrib/perl5/lib/File/Spec/OS2.pm
+++ b/contrib/perl5/lib/File/Spec/OS2.pm
@@ -1,34 +1,44 @@
package File::Spec::OS2;
-#use Config;
-#use Cwd;
-#use File::Basename;
use strict;
-require Exporter;
-
-use File::Spec;
use vars qw(@ISA);
-
-Exporter::import('File::Spec',
- qw( $Verbose));
-
+require File::Spec::Unix;
@ISA = qw(File::Spec::Unix);
-$ENV{EMXSHELL} = 'sh'; # to run `commands`
+sub devnull {
+ return "/dev/nul";
+}
+
+sub case_tolerant {
+ return 1;
+}
sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
+ my ($self,$file) = @_;
+ return scalar($file =~ m{^([a-z]:)?[\\/]}is);
}
sub path {
- my($self) = @_;
- my $path_sep = ";";
my $path = $ENV{PATH};
$path =~ s:\\:/:g;
- my @path = split $path_sep, $path;
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ my @path = split(';',$path);
+ foreach (@path) { $_ = '.' if $_ eq '' }
+ return @path;
+}
+
+my $tmpdir;
+sub tmpdir {
+ return $tmpdir if defined $tmpdir;
+ my $self = shift;
+ foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(/tmp /)) {
+ next unless defined && -d;
+ $tmpdir = $_;
+ last;
+ }
+ $tmpdir = '' unless defined $tmpdir;
+ $tmpdir =~ s:\\:/:g;
+ $tmpdir = $self->canonpath($tmpdir);
+ return $tmpdir;
}
1;
@@ -40,12 +50,10 @@ File::Spec::OS2 - methods for OS/2 file specs
=head1 SYNOPSIS
- use File::Spec::OS2; # Done internally by File::Spec if needed
+ require File::Spec::OS2; # Done internally by File::Spec if needed
=head1 DESCRIPTION
See File::Spec::Unix for a documentation of the methods provided
there. This package overrides the implementation of these methods, not
the semantics.
-
-=cut
diff --git a/contrib/perl5/lib/File/Spec/Unix.pm b/contrib/perl5/lib/File/Spec/Unix.pm
index 77de73a..2305b75 100644
--- a/contrib/perl5/lib/File/Spec/Unix.pm
+++ b/contrib/perl5/lib/File/Spec/Unix.pm
@@ -1,23 +1,8 @@
package File::Spec::Unix;
-use Exporter ();
-use Config;
-use File::Basename qw(basename dirname fileparse);
-use DirHandle;
use strict;
-use vars qw(@ISA $Is_Mac $Is_OS2 $Is_VMS $Is_Win32);
-use File::Spec;
-Exporter::import('File::Spec', '$Verbose');
-
-$Is_OS2 = $^O eq 'os2';
-$Is_Mac = $^O eq 'MacOS';
-$Is_Win32 = $^O eq 'MSWin32';
-
-if ($Is_VMS = $^O eq 'VMS') {
- require VMS::Filespec;
- import VMS::Filespec qw( &vmsify );
-}
+use Cwd;
=head1 NAME
@@ -25,7 +10,7 @@ File::Spec::Unix - methods used by File::Spec
=head1 SYNOPSIS
-C<require File::Spec::Unix;>
+ require File::Spec::Unix; # Done automatically by File::Spec
=head1 DESCRIPTION
@@ -40,15 +25,18 @@ Methods for manipulating file specifications.
No physical check on the filesystem, but a logical cleanup of a
path. On UNIX eliminated successive slashes and successive "/.".
+ $cpath = File::Spec->canonpath( $path ) ;
+
=cut
sub canonpath {
- my($self,$path) = @_;
- $path =~ s|/+|/|g ; # xx////xx -> xx/xx
- $path =~ s|(/\.)+/|/|g ; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+|| unless $path eq "./"; # ./xx -> xx
- $path =~ s|/$|| unless $path eq "/"; # xx/ -> xx
- $path;
+ my ($self,$path) = @_;
+ $path =~ s|/+|/|g unless($^O eq 'cygwin'); # xx////xx -> xx/xx
+ $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx
+ $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
+ $path =~ s|^/(\.\./)+|/|s; # /../../xx -> xx
+ $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx
+ return $path;
}
=item catdir
@@ -61,20 +49,14 @@ trailing slash :-)
=cut
-# ';
-
sub catdir {
- shift;
+ my $self = shift;
my @args = @_;
- for (@args) {
+ foreach (@args) {
# append a slash to each argument unless it has one there
- $_ .= "/" if $_ eq '' or substr($_,-1) ne "/";
+ $_ .= "/" if $_ eq '' || substr($_,-1) ne "/";
}
- my $result = join('', @args);
- # remove a trailing slash unless we are root
- substr($result,-1) = ""
- if length($result) > 1 && substr($result,-1) eq "/";
- $result;
+ return $self->canonpath(join('', @args));
}
=item catfile
@@ -85,29 +67,37 @@ complete path ending with a filename
=cut
sub catfile {
- my $self = shift @_;
+ my $self = shift;
my $file = pop @_;
return $file unless @_;
my $dir = $self->catdir(@_);
- for ($dir) {
- $_ .= "/" unless substr($_,length($_)-1,1) eq "/";
- }
+ $dir .= "/" unless substr($dir,-1) eq "/";
return $dir.$file;
}
=item curdir
-Returns a string representing of the current directory. "." on UNIX.
+Returns a string representation of the current directory. "." on UNIX.
=cut
sub curdir {
- return "." ;
+ return ".";
+}
+
+=item devnull
+
+Returns a string representation of the null device. "/dev/null" on UNIX.
+
+=cut
+
+sub devnull {
+ return "/dev/null";
}
=item rootdir
-Returns a string representing of the root directory. "/" on UNIX.
+Returns a string representation of the root directory. "/" on UNIX.
=cut
@@ -115,9 +105,31 @@ sub rootdir {
return "/";
}
+=item tmpdir
+
+Returns a string representation of the first writable directory
+from the following list or "" if none are writable:
+
+ $ENV{TMPDIR}
+ /tmp
+
+=cut
+
+my $tmpdir;
+sub tmpdir {
+ return $tmpdir if defined $tmpdir;
+ foreach ($ENV{TMPDIR}, "/tmp") {
+ next unless defined && -d && -w _;
+ $tmpdir = $_;
+ last;
+ }
+ $tmpdir = '' unless defined $tmpdir;
+ return $tmpdir;
+}
+
=item updir
-Returns a string representing of the parent directory. ".." on UNIX.
+Returns a string representation of the parent directory. ".." on UNIX.
=cut
@@ -133,8 +145,19 @@ directory. (Does not strip symlinks, only '.', '..', and equivalents.)
=cut
sub no_upwards {
- my($self) = shift;
- return grep(!/^\.{1,2}$/, @_);
+ my $self = shift;
+ return grep(!/^\.{1,2}\z/s, @_);
+}
+
+=item case_tolerant
+
+Returns a true or false value indicating, respectively, that alphabetic
+is not or is significant when comparing file specifications.
+
+=cut
+
+sub case_tolerant {
+ return 0;
}
=item file_name_is_absolute
@@ -144,8 +167,8 @@ Takes as argument a path and returns true, if it is an absolute path.
=cut
sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m:^/: ;
+ my ($self,$file) = @_;
+ return scalar($file =~ m:^/:s);
}
=item path
@@ -155,12 +178,9 @@ Takes no argument, returns the environment variable PATH as an array.
=cut
sub path {
- my($self) = @_;
- my $path_sep = ":";
- my $path = $ENV{PATH};
- my @path = split $path_sep, $path;
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ my @path = split(':', $ENV{PATH});
+ foreach (@path) { $_ = '.' if $_ eq '' }
+ return @path;
}
=item join
@@ -170,21 +190,247 @@ join is the same as catfile.
=cut
sub join {
- my($self) = shift @_;
- $self->catfile(@_);
+ my $self = shift;
+ return $self->catfile(@_);
+}
+
+=item splitpath
+
+ ($volume,$directories,$file) = File::Spec->splitpath( $path );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+
+Splits a path in to volume, directory, and filename portions. On systems
+with no concept of volume, returns undef for volume.
+
+For systems with no syntax differentiating filenames from directories,
+assumes that the last file is a path unless $no_file is true or a
+trailing separator or /. or /.. is present. On Unix this means that $no_file
+true makes this return ( '', $path, '' ).
+
+The directory portion may or may not be returned with a trailing '/'.
+
+The results can be passed to L</catpath()> to get back a path equivalent to
+(usually identical to) the original path.
+
+=cut
+
+sub splitpath {
+ my ($self,$path, $nofile) = @_;
+
+ my ($volume,$directory,$file) = ('','','');
+
+ if ( $nofile ) {
+ $directory = $path;
+ }
+ else {
+ $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs;
+ $directory = $1;
+ $file = $2;
+ }
+
+ return ($volume,$directory,$file);
+}
+
+
+=item splitdir
+
+The opposite of L</catdir()>.
+
+ @dirs = File::Spec->splitdir( $directories );
+
+$directories must be only the directory portion of the path on systems
+that have the concept of a volume or that have path syntax that differentiates
+files from directories.
+
+Unlike just splitting the directories on the separator, empty
+directory names (C<''>) can be returned, because these are significant
+on some OSs (e.g. MacOS).
+
+On Unix,
+
+ File::Spec->splitdir( "/a/b//c/" );
+
+Yields:
+
+ ( '', 'a', 'b', '', 'c', '' )
+
+=cut
+
+sub splitdir {
+ my ($self,$directories) = @_ ;
+ #
+ # split() likes to forget about trailing null fields, so here we
+ # check to be sure that there will not be any before handling the
+ # simple case.
+ #
+ if ( $directories !~ m|/\z| ) {
+ return split( m|/|, $directories );
+ }
+ else {
+ #
+ # since there was a trailing separator, add a file name to the end,
+ # then do the split, then replace it with ''.
+ #
+ my( @directories )= split( m|/|, "${directories}dummy" ) ;
+ $directories[ $#directories ]= '' ;
+ return @directories ;
+ }
}
-=item nativename
-TBW.
+=item catpath
+
+Takes volume, directory and file portions and returns an entire path. Under
+Unix, $volume is ignored, and directory and file are catenated. A '/' is
+inserted if need be. On other OSs, $volume is significant.
=cut
-sub nativename {
- my($self,$name) = shift @_;
- $name;
+sub catpath {
+ my ($self,$volume,$directory,$file) = @_;
+
+ if ( $directory ne '' &&
+ $file ne '' &&
+ substr( $directory, -1 ) ne '/' &&
+ substr( $file, 0, 1 ) ne '/'
+ ) {
+ $directory .= "/$file" ;
+ }
+ else {
+ $directory .= $file ;
+ }
+
+ return $directory ;
}
+=item abs2rel
+
+Takes a destination path and an optional base path returns a relative path
+from the base path to the destination path:
+
+ $rel_path = File::Spec->abs2rel( $destination ) ;
+ $rel_path = File::Spec->abs2rel( $destination, $base ) ;
+
+If $base is not present or '', then L<cwd()> is used. If $base is relative,
+then it is converted to absolute form using L</rel2abs()>. This means that it
+is taken to be relative to L<cwd()>.
+
+On systems with the concept of a volume, this assumes that both paths
+are on the $destination volume, and ignores the $base volume.
+
+On systems that have a grammar that indicates filenames, this ignores the
+$base filename as well. Otherwise all path components are assumed to be
+directories.
+
+If $path is relative, it is converted to absolute form using L</rel2abs()>.
+This means that it is taken to be relative to L<cwd()>.
+
+Based on code written by Shigio Yamaguchi.
+
+No checks against the filesystem are made.
+
+=cut
+
+sub abs2rel {
+ my($self,$path,$base) = @_;
+
+ # Clean up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ $path = $self->rel2abs( $path ) ;
+ }
+ else {
+ $path = $self->canonpath( $path ) ;
+ }
+
+ # Figure out the effective $base and clean it up.
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ # Now, remove all leading components that are the same
+ my @pathchunks = $self->splitdir( $path);
+ my @basechunks = $self->splitdir( $base);
+
+ while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
+ shift @pathchunks ;
+ shift @basechunks ;
+ }
+
+ $path = CORE::join( '/', @pathchunks );
+ $base = CORE::join( '/', @basechunks );
+
+ # $base now contains the directories the resulting relative path
+ # must ascend out of before it can descend to $path_directory. So,
+ # replace all names with $parentDir
+ $base =~ s|[^/]+|..|g ;
+
+ # Glue the two together, using a separator if necessary, and preventing an
+ # empty result.
+ if ( $path ne '' && $base ne '' ) {
+ $path = "$base/$path" ;
+ } else {
+ $path = "$base$path" ;
+ }
+
+ return $self->canonpath( $path ) ;
+}
+
+=item rel2abs
+
+Converts a relative path to an absolute path.
+
+ $abs_path = File::Spec->rel2abs( $destination ) ;
+ $abs_path = File::Spec->rel2abs( $destination, $base ) ;
+
+If $base is not present or '', then L<cwd()> is used. If $base is relative,
+then it is converted to absolute form using L</rel2abs()>. This means that it
+is taken to be relative to L<cwd()>.
+
+On systems with the concept of a volume, this assumes that both paths
+are on the $base volume, and ignores the $destination volume.
+
+On systems that have a grammar that indicates filenames, this ignores the
+$base filename as well. Otherwise all path components are assumed to be
+directories.
+
+If $path is absolute, it is cleaned up and returned using L</canonpath()>.
+
+Based on code written by Shigio Yamaguchi.
+
+No checks against the filesystem are made.
+
+=cut
+
+sub rel2abs($;$;) {
+ my ($self,$path,$base ) = @_;
+
+ # Clean up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ # Figure out the effective $base and clean it up.
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ # Glom them together
+ $path = $self->catdir( $base, $path ) ;
+ }
+
+ return $self->canonpath( $path ) ;
+}
+
+
=back
=head1 SEE ALSO
@@ -194,4 +440,3 @@ L<File::Spec>
=cut
1;
-__END__
diff --git a/contrib/perl5/lib/File/Spec/VMS.pm b/contrib/perl5/lib/File/Spec/VMS.pm
index c5269fd..a2ac8ca 100644
--- a/contrib/perl5/lib/File/Spec/VMS.pm
+++ b/contrib/perl5/lib/File/Spec/VMS.pm
@@ -1,19 +1,13 @@
-
package File::Spec::VMS;
-use Carp qw( &carp );
-use Config;
-require Exporter;
-use VMS::Filespec;
-use File::Basename;
-
-use File::Spec;
-use vars qw($Revision);
-$Revision = '5.3901 (6-Mar-1997)';
-
+use strict;
+use vars qw(@ISA);
+require File::Spec::Unix;
@ISA = qw(File::Spec::Unix);
-Exporter::import('File::Spec', '$Verbose');
+use Cwd;
+use File::Basename;
+use VMS::Filespec;
=head1 NAME
@@ -21,7 +15,7 @@ File::Spec::VMS - methods for VMS file specs
=head1 SYNOPSIS
- use File::Spec::VMS; # Done internally by File::Spec if needed
+ require File::Spec::VMS; # Done internally by File::Spec if needed
=head1 DESCRIPTION
@@ -29,67 +23,202 @@ See File::Spec::Unix for a documentation of the methods provided
there. This package overrides the implementation of these methods, not
the semantics.
+=over
+
+=item eliminate_macros
+
+Expands MM[KS]/Make macros in a text string, using the contents of
+identically named elements of C<%$self>, and returns the result
+as a file specification in Unix syntax.
+
+=cut
+
+sub eliminate_macros {
+ my($self,$path) = @_;
+ return '' unless $path;
+ $self = {} unless ref $self;
+ my($npath) = unixify($path);
+ my($complex) = 0;
+ my($head,$macro,$tail);
+
+ # perform m##g in scalar context so it acts as an iterator
+ while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#gs) {
+ if ($self->{$2}) {
+ ($head,$macro,$tail) = ($1,$2,$3);
+ if (ref $self->{$macro}) {
+ if (ref $self->{$macro} eq 'ARRAY') {
+ $macro = join ' ', @{$self->{$macro}};
+ }
+ else {
+ print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}),
+ "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n";
+ $macro = "\cB$macro\cB";
+ $complex = 1;
+ }
+ }
+ else { ($macro = unixify($self->{$macro})) =~ s#/\z##; }
+ $npath = "$head$macro$tail";
+ }
+ }
+ if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#gs; }
+ $npath;
+}
+
+=item fixpath
+
+Catchall routine to clean up problem MM[SK]/Make macros. Expands macros
+in any directory specification, in order to avoid juxtaposing two
+VMS-syntax directories when MM[SK] is run. Also expands expressions which
+are all macro, so that we can tell how long the expansion is, and avoid
+overrunning DCL's command buffer when MM[KS] is running.
+
+If optional second argument has a TRUE value, then the return string is
+a VMS-syntax directory specification, if it is FALSE, the return string
+is a VMS-syntax file specification, and if it is not specified, fixpath()
+checks to see whether it matches the name of a directory in the current
+default directory, and returns a directory or file specification accordingly.
+
+=cut
+
+sub fixpath {
+ my($self,$path,$force_path) = @_;
+ return '' unless $path;
+ $self = bless {} unless ref $self;
+ my($fixedpath,$prefix,$name);
+
+ if ($path =~ m#^\$\([^\)]+\)\z#s || $path =~ m#[/:>\]]#) {
+ if ($force_path or $path =~ /(?:DIR\)|\])\z/) {
+ $fixedpath = vmspath($self->eliminate_macros($path));
+ }
+ else {
+ $fixedpath = vmsify($self->eliminate_macros($path));
+ }
+ }
+ elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#s)) && $self->{$prefix}) {
+ my($vmspre) = $self->eliminate_macros("\$($prefix)");
+ # is it a dir or just a name?
+ $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR\z/) ? vmspath($vmspre) : '';
+ $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name;
+ $fixedpath = vmspath($fixedpath) if $force_path;
+ }
+ else {
+ $fixedpath = $path;
+ $fixedpath = vmspath($fixedpath) if $force_path;
+ }
+ # No hints, so we try to guess
+ if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) {
+ $fixedpath = vmspath($fixedpath) if -d $fixedpath;
+ }
+
+ # Trim off root dirname if it's had other dirs inserted in front of it.
+ $fixedpath =~ s/\.000000([\]>])/$1/;
+ # Special case for VMS absolute directory specs: these will have had device
+ # prepended during trip through Unix syntax in eliminate_macros(), since
+ # Unix syntax has no way to express "absolute from the top of this device's
+ # directory tree".
+ if ($path =~ /^[\[>][^.\-]/) { $fixedpath =~ s/^[^\[<]+//; }
+ $fixedpath;
+}
+
+=back
+
=head2 Methods always loaded
=over
+=item canonpath (override)
+
+Removes redundant portions of file specifications according to VMS syntax.
+
+=cut
+
+sub canonpath {
+ my($self,$path) = @_;
+
+ if ($path =~ m|/|) { # Fake Unix
+ my $pathify = $path =~ m|/\z|;
+ $path = $self->SUPER::canonpath($path);
+ if ($pathify) { return vmspath($path); }
+ else { return vmsify($path); }
+ }
+ else {
+ $path =~ s-\]\[--g; $path =~ s/><//g; # foo.][bar ==> foo.bar
+ $path =~ s/([\[<])000000\./$1/; # [000000.foo ==> foo
+ 1 while $path =~ s{([\[<-])\.-}{$1-}; # [.-.- ==> [--
+ $path =~ s/\.[^\[<\.]+\.-([\]\>])/$1/; # bar.foo.-] ==> bar]
+ $path =~ s/([\[<])(-+)/$1 . "\cx" x length($2)/e; # encode leading '-'s
+ $path =~ s/([\[<\.])([^\[<\.\cx]+)\.-\.?/$1/g; # bar.-.foo ==> foo
+ $path =~ s/([\[<])(\cx+)/$1 . '-' x length($2)/e; # then decode
+ return $path;
+ }
+}
+
=item catdir
Concatenates a list of file specifications, and returns the result as a
-VMS-syntax directory specification.
+VMS-syntax directory specification. No check is made for "impossible"
+cases (e.g. elements other than the first being absolute filespecs).
=cut
sub catdir {
- my($self,@dirs) = @_;
- my($dir) = pop @dirs;
+ my ($self,@dirs) = @_;
+ my $dir = pop @dirs;
@dirs = grep($_,@dirs);
- my($rslt);
+ my $rslt;
if (@dirs) {
- my($path) = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
- my($spath,$sdir) = ($path,$dir);
- $spath =~ s/.dir$//; $sdir =~ s/.dir$//;
- $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+$/;
- $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
+ my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
+ my ($spath,$sdir) = ($path,$dir);
+ $spath =~ s/\.dir\z//; $sdir =~ s/\.dir\z//;
+ $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\z/s;
+ $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
+
+ # Special case for VMS absolute directory specs: these will have had device
+ # prepended during trip through Unix syntax in eliminate_macros(), since
+ # Unix syntax has no way to express "absolute from the top of this device's
+ # directory tree".
+ if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; }
}
- else {
- if ($dir =~ /^\$\([^\)]+\)$/) { $rslt = $dir; }
- else { $rslt = vmspath($dir); }
+ else {
+ if (not defined $dir or not length $dir) { $rslt = ''; }
+ elsif ($dir =~ /^\$\([^\)]+\)\z/s) { $rslt = $dir; }
+ else { $rslt = vmspath($dir); }
}
- print "catdir(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
- $rslt;
+ return $self->canonpath($rslt);
}
=item catfile
Concatenates a list of file specifications, and returns the result as a
-VMS-syntax directory specification.
+VMS-syntax file specification.
=cut
sub catfile {
- my($self,@files) = @_;
- my($file) = pop @files;
+ my ($self,@files) = @_;
+ my $file = pop @files;
@files = grep($_,@files);
- my($rslt);
+ my $rslt;
if (@files) {
- my($path) = (@files == 1 ? $files[0] : $self->catdir(@files));
- my($spath) = $path;
- $spath =~ s/.dir$//;
- if ( $spath =~ /^[^\)\]\/:>]+\)$/ && basename($file) eq $file) { $rslt = "$spath$file"; }
- else {
- $rslt = $self->eliminate_macros($spath);
- $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
- }
+ my $path = (@files == 1 ? $files[0] : $self->catdir(@files));
+ my $spath = $path;
+ $spath =~ s/\.dir\z//;
+ if ($spath =~ /^[^\)\]\/:>]+\)\z/s && basename($file) eq $file) {
+ $rslt = "$spath$file";
+ }
+ else {
+ $rslt = $self->eliminate_macros($spath);
+ $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
+ }
}
- else { $rslt = vmsify($file); }
- print "catfile(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
- $rslt;
+ else { $rslt = (defined($file) && length($file)) ? vmsify($file) : ''; }
+ return $self->canonpath($rslt);
}
+
=item curdir (override)
-Returns a string representing of the current directory.
+Returns a string representation of the current directory: '[]'
=cut
@@ -97,19 +226,51 @@ sub curdir {
return '[]';
}
+=item devnull (override)
+
+Returns a string representation of the null device: '_NLA0:'
+
+=cut
+
+sub devnull {
+ return "_NLA0:";
+}
+
=item rootdir (override)
-Returns a string representing of the root directory.
+Returns a string representation of the root directory: 'SYS$DISK:[000000]'
=cut
sub rootdir {
- return '';
+ return 'SYS$DISK:[000000]';
+}
+
+=item tmpdir (override)
+
+Returns a string representation of the first writable directory
+from the following list or '' if none are writable:
+
+ sys$scratch
+ $ENV{TMPDIR}
+
+=cut
+
+my $tmpdir;
+sub tmpdir {
+ return $tmpdir if defined $tmpdir;
+ foreach ('sys$scratch', $ENV{TMPDIR}) {
+ next unless defined && -d && -w _;
+ $tmpdir = $_;
+ last;
+ }
+ $tmpdir = '' unless defined $tmpdir;
+ return $tmpdir;
}
=item updir (override)
-Returns a string representing of the parent directory.
+Returns a string representation of the parent directory: '[-]'
=cut
@@ -117,6 +278,16 @@ sub updir {
return '[-]';
}
+=item case_tolerant (override)
+
+VMS file specification syntax is case-tolerant.
+
+=cut
+
+sub case_tolerant {
+ return 1;
+}
+
=item path (override)
Translate logical name DCL$PATH as a searchlist, rather than trying
@@ -125,9 +296,9 @@ to C<split> string value of C<$ENV{'PATH'}>.
=cut
sub path {
- my(@dirs,$dir,$i);
+ my (@dirs,$dir,$i);
while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
- @dirs;
+ return @dirs;
}
=item file_name_is_absolute (override)
@@ -137,12 +308,185 @@ Checks for VMS directory spec as well as Unix separators.
=cut
sub file_name_is_absolute {
- my($self,$file) = @_;
+ my ($self,$file) = @_;
# If it's a logical name, expand it.
- $file = $ENV{$file} while $file =~ /^[\w\$\-]+$/ and $ENV{$file};
- $file =~ m!^/! or $file =~ m![<\[][^.\-\]>]! or $file =~ /:[^<\[]/;
+ $file = $ENV{$file} while $file =~ /^[\w\$\-]+\z/s && $ENV{$file};
+ return scalar($file =~ m!^/!s ||
+ $file =~ m![<\[][^.\-\]>]! ||
+ $file =~ /:[^<\[]/);
}
-1;
-__END__
+=item splitpath (override)
+
+Splits using VMS syntax.
+
+=cut
+
+sub splitpath {
+ my($self,$path) = @_;
+ my($dev,$dir,$file) = ('','','');
+
+ vmsify($path) =~ /(.+:)?([\[<].*[\]>])?(.*)/s;
+ return ($1 || '',$2 || '',$3);
+}
+
+=item splitdir (override)
+
+Split dirspec using VMS syntax.
+
+=cut
+
+sub splitdir {
+ my($self,$dirspec) = @_;
+ $dirspec =~ s/\]\[//g; $dirspec =~ s/\-\-/-.-/g;
+ $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal
+ my(@dirs) = split('\.', vmspath($dirspec));
+ $dirs[0] =~ s/^[\[<]//s; $dirs[-1] =~ s/[\]>]\z//s;
+ @dirs;
+}
+
+
+=item catpath (override)
+
+Construct a complete filespec using VMS syntax
+
+=cut
+
+sub catpath {
+ my($self,$dev,$dir,$file) = @_;
+ if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; }
+ else { $dev .= ':' unless $dev eq '' or $dev =~ /:\z/; }
+ if (length($dev) or length($dir)) {
+ $dir = "[$dir]" unless $dir =~ /[\[<\/]/;
+ $dir = vmspath($dir);
+ }
+ "$dev$dir$file";
+}
+
+=item abs2rel (override)
+
+Use VMS syntax when converting filespecs.
+
+=cut
+
+sub abs2rel {
+ my $self = shift;
+
+ return vmspath(File::Spec::Unix::abs2rel( $self, @_ ))
+ if ( join( '', @_ ) =~ m{/} ) ;
+
+ my($path,$base) = @_;
+
+ # Note: we use '/' to glue things together here, then let canonpath()
+ # clean them up at the end.
+ # Clean up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ $path = $self->rel2abs( $path ) ;
+ }
+ else {
+ $path = $self->canonpath( $path ) ;
+ }
+
+ # Figure out the effective $base and clean it up.
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ # Split up paths
+ my ( undef, $path_directories, $path_file ) =
+ $self->splitpath( $path, 1 ) ;
+
+ $path_directories = $1
+ if $path_directories =~ /^\[(.*)\]\z/s ;
+
+ my ( undef, $base_directories, undef ) =
+ $self->splitpath( $base, 1 ) ;
+
+ $base_directories = $1
+ if $base_directories =~ /^\[(.*)\]\z/s ;
+
+ # Now, remove all leading components that are the same
+ my @pathchunks = $self->splitdir( $path_directories );
+ my @basechunks = $self->splitdir( $base_directories );
+
+ while ( @pathchunks &&
+ @basechunks &&
+ lc( $pathchunks[0] ) eq lc( $basechunks[0] )
+ ) {
+ shift @pathchunks ;
+ shift @basechunks ;
+ }
+
+ # @basechunks now contains the directories to climb out of,
+ # @pathchunks now has the directories to descend in to.
+ $path_directories = '-.' x @basechunks . join( '.', @pathchunks ) ;
+ $path_directories =~ s{\.\z}{} ;
+ return $self->canonpath( $self->catpath( '', $path_directories, $path_file ) ) ;
+}
+
+
+=item rel2abs (override)
+
+Use VMS syntax when converting filespecs.
+
+=cut
+
+sub rel2abs($;$;) {
+ my $self = shift ;
+ return vmspath(File::Spec::Unix::rel2abs( $self, @_ ))
+ if ( join( '', @_ ) =~ m{/} ) ;
+
+ my ($path,$base ) = @_;
+ # Clean up and split up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ # Figure out the effective $base and clean it up.
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ # Split up paths
+ my ( undef, $path_directories, $path_file ) =
+ $self->splitpath( $path ) ;
+
+ my ( $base_volume, $base_directories, undef ) =
+ $self->splitpath( $base ) ;
+
+ $path_directories = '' if $path_directories eq '[]' ||
+ $path_directories eq '<>';
+ my $sep = '' ;
+ $sep = '.'
+ if ( $base_directories =~ m{[^.\]>]\z} &&
+ $path_directories =~ m{^[^.\[<]}s
+ ) ;
+ $base_directories = "$base_directories$sep$path_directories";
+ $base_directories =~ s{\.?[\]>][\[<]\.?}{.};
+
+ $path = $self->catpath( $base_volume, $base_directories, $path_file );
+ }
+
+ return $self->canonpath( $path ) ;
+}
+
+
+=back
+
+=head1 SEE ALSO
+
+L<File::Spec>
+
+=cut
+
+1;
diff --git a/contrib/perl5/lib/File/Spec/Win32.pm b/contrib/perl5/lib/File/Spec/Win32.pm
index 034a0cb..aa95fbd 100644
--- a/contrib/perl5/lib/File/Spec/Win32.pm
+++ b/contrib/perl5/lib/File/Spec/Win32.pm
@@ -1,12 +1,18 @@
package File::Spec::Win32;
+use strict;
+use Cwd;
+use vars qw(@ISA);
+require File::Spec::Unix;
+@ISA = qw(File::Spec::Unix);
+
=head1 NAME
File::Spec::Win32 - methods for Win32 file specs
=head1 SYNOPSIS
- use File::Spec::Win32; # Done internally by File::Spec if needed
+ require File::Spec::Win32; # Done internally by File::Spec if needed
=head1 DESCRIPTION
@@ -16,37 +22,50 @@ the semantics.
=over
-=cut
+=item devnull
-#use Config;
-#use Cwd;
-use File::Basename;
-require Exporter;
-use strict;
+Returns a string representation of the null device.
-use vars qw(@ISA);
+=cut
-use File::Spec;
-Exporter::import('File::Spec', qw( $Verbose));
+sub devnull {
+ return "nul";
+}
-@ISA = qw(File::Spec::Unix);
+=item tmpdir
-$ENV{EMXSHELL} = 'sh'; # to run `commands`
+Returns a string representation of the first existing directory
+from the following list:
-sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
-}
+ $ENV{TMPDIR}
+ $ENV{TEMP}
+ $ENV{TMP}
+ /tmp
+ /
-sub catdir {
+=cut
+
+my $tmpdir;
+sub tmpdir {
+ return $tmpdir if defined $tmpdir;
my $self = shift;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
+ foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(/tmp /)) {
+ next unless defined && -d;
+ $tmpdir = $_;
+ last;
}
- my $result = $self->canonpath(join('', @args));
- $result;
+ $tmpdir = '' unless defined $tmpdir;
+ $tmpdir = $self->canonpath($tmpdir);
+ return $tmpdir;
+}
+
+sub case_tolerant {
+ return 1;
+}
+
+sub file_name_is_absolute {
+ my ($self,$file) = @_;
+ return scalar($file =~ m{^([a-z]:)?[\\/]}is);
}
=item catfile
@@ -57,22 +76,19 @@ complete path ending with a filename
=cut
sub catfile {
- my $self = shift @_;
+ my $self = shift;
my $file = pop @_;
return $file unless @_;
my $dir = $self->catdir(@_);
- $dir =~ s/(\\\.)$//;
- $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
+ $dir .= "\\" unless substr($dir,-1) eq "\\";
return $dir.$file;
}
sub path {
- local $^W = 1;
- my($self) = @_;
my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
my @path = split(';',$path);
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ foreach (@path) { $_ = '.' if $_ eq '' }
+ return @path;
}
=item canonpath
@@ -83,22 +99,307 @@ path. On UNIX eliminated successive slashes and successive "/.".
=cut
sub canonpath {
- my($self,$path) = @_;
- $path =~ s/^([a-z]:)/\u$1/;
+ my ($self,$path) = @_;
+ $path =~ s/^([a-z]:)/\u$1/s;
$path =~ s|/|\\|g;
- $path =~ s|\\+|\\|g ; # xx////xx -> xx/xx
- $path =~ s|(\\\.)+\\|\\|g ; # xx/././xx -> xx/xx
- $path =~ s|^(\.\\)+|| unless $path eq ".\\"; # ./xx -> xx
- $path =~ s|\\$||
- unless $path =~ m#^([a-z]:)?\\#; # xx/ -> xx
- $path .= '.' if $path =~ m#\\$#;
- $path;
+ $path =~ s|([^\\])\\+|$1\\|g; # xx////xx -> xx/xx
+ $path =~ s|(\\\.)+\\|\\|g; # xx/././xx -> xx/xx
+ $path =~ s|^(\.\\)+||s unless $path eq ".\\"; # ./xx -> xx
+ $path =~ s|\\\z||
+ unless $path =~ m#^([A-Z]:)?\\\z#s; # xx/ -> xx
+ return $path;
}
-1;
-__END__
+=item splitpath
+
+ ($volume,$directories,$file) = File::Spec->splitpath( $path );
+ ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
+
+Splits a path in to volume, directory, and filename portions. Assumes that
+the last file is a path unless the path ends in '\\', '\\.', '\\..'
+or $no_file is true. On Win32 this means that $no_file true makes this return
+( $volume, $path, undef ).
+
+Separators accepted are \ and /.
+
+Volumes can be drive letters or UNC sharenames (\\server\share).
+
+The results can be passed to L</catpath> to get back a path equivalent to
+(usually identical to) the original path.
+
+=cut
+
+sub splitpath {
+ my ($self,$path, $nofile) = @_;
+ my ($volume,$directory,$file) = ('','','');
+ if ( $nofile ) {
+ $path =~
+ m{^( (?:[a-zA-Z]:|(?:\\\\|//)[^\\/]+[\\/][^\\/]+)? )
+ (.*)
+ }xs;
+ $volume = $1;
+ $directory = $2;
+ }
+ else {
+ $path =~
+ m{^ ( (?: [a-zA-Z]: |
+ (?:\\\\|//)[^\\/]+[\\/][^\\/]+
+ )?
+ )
+ ( (?:.*[\\\\/](?:\.\.?\z)?)? )
+ (.*)
+ }xs;
+ $volume = $1;
+ $directory = $2;
+ $file = $3;
+ }
+
+ return ($volume,$directory,$file);
+}
+
+
+=item splitdir
+
+The opposite of L</catdir()>.
+
+ @dirs = File::Spec->splitdir( $directories );
+
+$directories must be only the directory portion of the path on systems
+that have the concept of a volume or that have path syntax that differentiates
+files from directories.
+
+Unlike just splitting the directories on the separator, leading empty and
+trailing directory entries can be returned, because these are significant
+on some OSs. So,
+
+ File::Spec->splitdir( "/a/b/c" );
+
+Yields:
+
+ ( '', 'a', 'b', '', 'c', '' )
+
+=cut
+
+sub splitdir {
+ my ($self,$directories) = @_ ;
+ #
+ # split() likes to forget about trailing null fields, so here we
+ # check to be sure that there will not be any before handling the
+ # simple case.
+ #
+ if ( $directories !~ m|[\\/]\z| ) {
+ return split( m|[\\/]|, $directories );
+ }
+ else {
+ #
+ # since there was a trailing separator, add a file name to the end,
+ # then do the split, then replace it with ''.
+ #
+ my( @directories )= split( m|[\\/]|, "${directories}dummy" ) ;
+ $directories[ $#directories ]= '' ;
+ return @directories ;
+ }
+}
+
+
+=item catpath
+
+Takes volume, directory and file portions and returns an entire path. Under
+Unix, $volume is ignored, and this is just like catfile(). On other OSs,
+the $volume become significant.
+
+=cut
+
+sub catpath {
+ my ($self,$volume,$directory,$file) = @_;
+
+ # If it's UNC, make sure the glue separator is there, reusing
+ # whatever separator is first in the $volume
+ $volume .= $1
+ if ( $volume =~ m@^([\\/])[\\/][^\\/]+[\\/][^\\/]+\z@s &&
+ $directory =~ m@^[^\\/]@s
+ ) ;
+
+ $volume .= $directory ;
+
+ # If the volume is not just A:, make sure the glue separator is
+ # there, reusing whatever separator is first in the $volume if possible.
+ if ( $volume !~ m@^[a-zA-Z]:\z@s &&
+ $volume =~ m@[^\\/]\z@ &&
+ $file =~ m@[^\\/]@
+ ) {
+ $volume =~ m@([\\/])@ ;
+ my $sep = $1 ? $1 : '\\' ;
+ $volume .= $sep ;
+ }
+
+ $volume .= $file ;
+
+ return $volume ;
+}
+
+
+=item abs2rel
+
+Takes a destination path and an optional base path returns a relative path
+from the base path to the destination path:
+
+ $rel_path = File::Spec->abs2rel( $destination ) ;
+ $rel_path = File::Spec->abs2rel( $destination, $base ) ;
+
+If $base is not present or '', then L</cwd()> is used. If $base is relative,
+then it is converted to absolute form using L</rel2abs()>. This means that it
+is taken to be relative to L<cwd()>.
+
+On systems with the concept of a volume, this assumes that both paths
+are on the $destination volume, and ignores the $base volume.
+
+On systems that have a grammar that indicates filenames, this ignores the
+$base filename as well. Otherwise all path components are assumed to be
+directories.
+
+If $path is relative, it is converted to absolute form using L</rel2abs()>.
+This means that it is taken to be relative to L</cwd()>.
+
+Based on code written by Shigio Yamaguchi.
+
+No checks against the filesystem are made.
+
+=cut
+
+sub abs2rel {
+ my($self,$path,$base) = @_;
+
+ # Clean up $path
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+ $path = $self->rel2abs( $path ) ;
+ }
+ else {
+ $path = $self->canonpath( $path ) ;
+ }
+
+ # Figure out the effective $base and clean it up.
+ if ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ elsif ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ # Split up paths
+ my ( $path_volume, $path_directories, $path_file ) =
+ $self->splitpath( $path, 1 ) ;
+
+ my ( undef, $base_directories, undef ) =
+ $self->splitpath( $base, 1 ) ;
+
+ # Now, remove all leading components that are the same
+ my @pathchunks = $self->splitdir( $path_directories );
+ my @basechunks = $self->splitdir( $base_directories );
+
+ while ( @pathchunks &&
+ @basechunks &&
+ lc( $pathchunks[0] ) eq lc( $basechunks[0] )
+ ) {
+ shift @pathchunks ;
+ shift @basechunks ;
+ }
+
+ # No need to catdir, we know these are well formed.
+ $path_directories = CORE::join( '\\', @pathchunks );
+ $base_directories = CORE::join( '\\', @basechunks );
+
+ # $base_directories now contains the directories the resulting relative
+ # path must ascend out of before it can descend to $path_directory. So,
+ # replace all names with $parentDir
+
+ #FA Need to replace between backslashes...
+ $base_directories =~ s|[^\\]+|..|g ;
+
+ # Glue the two together, using a separator if necessary, and preventing an
+ # empty result.
+
+ #FA Must check that new directories are not empty.
+ if ( $path_directories ne '' && $base_directories ne '' ) {
+ $path_directories = "$base_directories\\$path_directories" ;
+ } else {
+ $path_directories = "$base_directories$path_directories" ;
+ }
+
+ # It makes no sense to add a relative path to a UNC volume
+ $path_volume = '' unless $path_volume =~ m{^[A-Z]:}is ;
+
+ return $self->canonpath(
+ $self->catpath($path_volume, $path_directories, $path_file )
+ ) ;
+}
+
+=item rel2abs
+
+Converts a relative path to an absolute path.
+
+ $abs_path = File::Spec->rel2abs( $destination ) ;
+ $abs_path = File::Spec->rel2abs( $destination, $base ) ;
+
+If $base is not present or '', then L<cwd()> is used. If $base is relative,
+then it is converted to absolute form using L</rel2abs()>. This means that it
+is taken to be relative to L</cwd()>.
+
+Assumes that both paths are on the $base volume, and ignores the
+$destination volume.
+
+On systems that have a grammar that indicates filenames, this ignores the
+$base filename as well. Otherwise all path components are assumed to be
+directories.
+
+If $path is absolute, it is cleaned up and returned using L</canonpath()>.
+
+Based on code written by Shigio Yamaguchi.
+
+No checks against the filesystem are made.
+
+=cut
+
+sub rel2abs($;$;) {
+ my ($self,$path,$base ) = @_;
+
+ if ( ! $self->file_name_is_absolute( $path ) ) {
+
+ if ( !defined( $base ) || $base eq '' ) {
+ $base = cwd() ;
+ }
+ elsif ( ! $self->file_name_is_absolute( $base ) ) {
+ $base = $self->rel2abs( $base ) ;
+ }
+ else {
+ $base = $self->canonpath( $base ) ;
+ }
+
+ my ( undef, $path_directories, $path_file ) =
+ $self->splitpath( $path, 1 ) ;
+
+ my ( $base_volume, $base_directories, undef ) =
+ $self->splitpath( $base, 1 ) ;
+
+ $path = $self->catpath(
+ $base_volume,
+ $self->catdir( $base_directories, $path_directories ),
+ $path_file
+ ) ;
+ }
+
+ return $self->canonpath( $path ) ;
+}
=back
-=cut
+=head1 SEE ALSO
+
+L<File::Spec>
+=cut
+
+1;
diff --git a/contrib/perl5/lib/File/stat.pm b/contrib/perl5/lib/File/stat.pm
index f5d17f7..0cf7a0b 100644
--- a/contrib/perl5/lib/File/stat.pm
+++ b/contrib/perl5/lib/File/stat.pm
@@ -1,9 +1,11 @@
package File::stat;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(stat lstat);
@EXPORT_OK = qw( $st_dev $st_ino $st_mode
$st_nlink $st_uid $st_gid
@@ -13,7 +15,7 @@ BEGIN {
);
%EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
-use vars @EXPORT_OK;
+use vars @EXPORT_OK;
# Class::Struct forbids use of @ISA
sub import { goto &Exporter::import }
diff --git a/contrib/perl5/lib/FileHandle.pm b/contrib/perl5/lib/FileHandle.pm
index eec9b61..34c3475 100644
--- a/contrib/perl5/lib/FileHandle.pm
+++ b/contrib/perl5/lib/FileHandle.pm
@@ -1,8 +1,8 @@
package FileHandle;
-use 5.003_11;
+use 5.005_64;
use strict;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
$VERSION = "2.00";
diff --git a/contrib/perl5/lib/FindBin.pm b/contrib/perl5/lib/FindBin.pm
index 9e1c0a0..5d4c575 100644
--- a/contrib/perl5/lib/FindBin.pm
+++ b/contrib/perl5/lib/FindBin.pm
@@ -82,7 +82,7 @@ use File::Spec;
%EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
@ISA = qw(Exporter);
-$VERSION = $VERSION = "1.42";
+$VERSION = "1.42";
BEGIN
{
@@ -102,7 +102,7 @@ BEGIN
if ($^O eq 'VMS')
{
- ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/;
+ ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/s;
($RealBin,$RealScript) = ($Bin,$Script);
}
else
diff --git a/contrib/perl5/lib/Getopt/Long.pm b/contrib/perl5/lib/Getopt/Long.pm
index c125ccf..f474c7c 100644
--- a/contrib/perl5/lib/Getopt/Long.pm
+++ b/contrib/perl5/lib/Getopt/Long.pm
@@ -2,29 +2,30 @@
package Getopt::Long;
-# RCS Status : $Id: GetoptLong.pl,v 2.18 1998-06-14 15:02:19+02 jv Exp $
+# RCS Status : $Id: GetoptLong.pl,v 2.24 2000-03-14 21:28:52+01 jv Exp $
# Author : Johan Vromans
# Created On : Tue Sep 11 15:00:12 1990
# Last Modified By: Johan Vromans
-# Last Modified On: Fri Jan 8 14:48:43 1999
-# Update Count : 707
+# Last Modified On: Tue Mar 14 21:28:40 2000
+# Update Count : 721
# Status : Released
################ Copyright ################
-# This program is Copyright 1990,1999 by Johan Vromans.
+# This program is Copyright 1990,2000 by Johan Vromans.
# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
+# modify it under the terms of the Perl Artistic License or the
+# GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# If you do not have a copy of the GNU General Public License write to
-# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
# MA 02139, USA.
################ Module Preamble ################
@@ -35,7 +36,7 @@ BEGIN {
require 5.004;
use Exporter ();
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
- $VERSION = "2.19";
+ $VERSION = "2.23";
@ISA = qw(Exporter);
@EXPORT = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
@@ -51,14 +52,14 @@ use vars qw($error $debug $major_version $minor_version);
use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
$passthrough);
# Official invisible variables.
-use vars qw($genprefix);
+use vars qw($genprefix $caller);
-# Public subroutines.
+# Public subroutines.
sub Configure (@);
sub config (@); # deprecated name
sub GetOptions;
-# Private subroutines.
+# Private subroutines.
sub ConfigDefaults ();
sub FindOption ($$$$$$$);
sub Croak (@); # demand loading the real Croak
@@ -97,8 +98,7 @@ sub ConfigDefaults () {
# Version major/minor numbers.
($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
-# Set defaults.
-ConfigDefaults ();
+ConfigDefaults();
################ Package return ################
@@ -108,12 +108,12 @@ __END__
################ AutoLoading subroutines ################
-# RCS Status : $Id: GetoptLongAl.pl,v 2.20 1998-06-14 15:02:19+02 jv Exp $
+# RCS Status : $Id: GetoptLongAl.pl,v 2.27 2000-03-17 09:07:26+01 jv Exp $
# Author : Johan Vromans
# Created On : Fri Mar 27 11:50:30 1998
# Last Modified By: Johan Vromans
-# Last Modified On: Sun Jun 14 13:54:35 1998
-# Update Count : 24
+# Last Modified On: Fri Mar 17 09:00:09 2000
+# Update Count : 55
# Status : Released
sub GetOptions {
@@ -122,7 +122,7 @@ sub GetOptions {
my $argend = '--'; # option list terminator
my %opctl = (); # table of arg.specs (long and abbrevs)
my %bopctl = (); # table of arg.specs (bundles)
- my $pkg = (caller)[0]; # current context
+ my $pkg = $caller || (caller)[0]; # current context
# Needed if linkage is omitted.
my %aliases= (); # alias table
my @ret = (); # accum for non-options
@@ -137,7 +137,7 @@ sub GetOptions {
print STDERR ("GetOpt::Long $Getopt::Long::VERSION ",
"called from package \"$pkg\".",
"\n ",
- 'GetOptionsAl $Revision: 2.20 $ ',
+ 'GetOptionsAl $Revision: 2.27 $ ',
"\n ",
"ARGV: (@ARGV)",
"\n ",
@@ -152,9 +152,9 @@ sub GetOptions {
"\n")
if $debug;
- # Check for ref HASH as first argument.
+ # Check for ref HASH as first argument.
# First argument may be an object. It's OK to use this as long
- # as it is really a hash underneath.
+ # as it is really a hash underneath.
$userlinkage = undef;
if ( ref($optionlist[0]) and
"$optionlist[0]" =~ /^(?:.*\=)?HASH\([^\(]*\)$/ ) {
@@ -164,7 +164,11 @@ sub GetOptions {
# See if the first element of the optionlist contains option
# starter characters.
- if ( $optionlist[0] =~ /^\W+$/ ) {
+ # Be careful not to interpret '<>' as option starters.
+ if ( $optionlist[0] =~ /^\W+$/
+ && !($optionlist[0] eq '<>'
+ && @optionlist > 0
+ && ref($optionlist[1])) ) {
$genprefix = shift (@optionlist);
# Turn into regexp. Needs to be parenthesized!
$genprefix =~ s/(\W)/\\$1/g;
@@ -187,7 +191,7 @@ sub GetOptions {
&& ref($userlinkage->{$opt}) ) {
unshift (@optionlist, $userlinkage->{$opt});
}
- unless ( @optionlist > 0
+ unless ( @optionlist > 0
&& ref($optionlist[0]) && ref($optionlist[0]) eq 'CODE' ) {
$error .= "Option spec <> requires a reference to a subroutine\n";
next;
@@ -215,7 +219,7 @@ sub GetOptions {
# Force an alias if the option name is not locase.
$a = $o unless $o eq lc($o);
$o = lc ($o)
- if $ignorecase > 1
+ if $ignorecase > 1
|| ($ignorecase
&& ($bundling ? length($o) > 1 : 1));
@@ -225,17 +229,21 @@ sub GetOptions {
if ( $c eq '!' ) {
$opctl{"no$_"} = $c;
warn ("Ignoring '!' modifier for short option $_\n");
- $c = '';
+ $opctl{$_} = $bopctl{$_} = '';
+ }
+ else {
+ $opctl{$_} = $bopctl{$_} = $c;
}
- $opctl{$_} = $bopctl{$_} = $c;
}
else {
$_ = lc ($_) if $ignorecase;
if ( $c eq '!' ) {
$opctl{"no$_"} = $c;
- $c = '';
+ $opctl{$_} = ''
+ }
+ else {
+ $opctl{$_} = $c;
}
- $opctl{$_} = $c;
}
if ( defined $a ) {
# Note alias.
@@ -278,7 +286,7 @@ sub GetOptions {
$opctl{$o} .= '@'
if $opctl{$o} ne '' and $opctl{$o} !~ /\@$/;
$bopctl{$o} .= '@'
- if $bundling and defined $bopctl{$o} and
+ if $bundling and defined $bopctl{$o} and
$bopctl{$o} ne '' and $bopctl{$o} !~ /\@$/;
}
elsif ( ref($optionlist[0]) =~ /^(HASH)$/ ) {
@@ -286,7 +294,7 @@ sub GetOptions {
$opctl{$o} .= '%'
if $opctl{$o} ne '' and $opctl{$o} !~ /\%$/;
$bopctl{$o} .= '%'
- if $bundling and defined $bopctl{$o} and
+ if $bundling and defined $bopctl{$o} and
$bopctl{$o} ne '' and $bopctl{$o} !~ /\%$/;
}
else {
@@ -339,7 +347,8 @@ sub GetOptions {
}
# Process argument list
- while ( @ARGV > 0 ) {
+ my $goon = 1;
+ while ( $goon && @ARGV > 0 ) {
#### Get next argument ####
@@ -351,7 +360,7 @@ sub GetOptions {
# Double dash is option list terminator.
if ( $opt eq $argend ) {
# Finish. Push back accumulated arguments and return.
- unshift (@ARGV, @ret)
+ unshift (@ARGV, @ret)
if $order == $PERMUTE;
return ($error == 0);
}
@@ -359,16 +368,16 @@ sub GetOptions {
my $tryopt = $opt;
my $found; # success status
my $dsttype; # destination type ('@' or '%')
- my $incr; # destination increment
+ my $incr; # destination increment
my $key; # key (if hash type)
my $arg; # option argument
- ($found, $opt, $arg, $dsttype, $incr, $key) =
- FindOption ($genprefix, $argend, $opt,
+ ($found, $opt, $arg, $dsttype, $incr, $key) =
+ FindOption ($genprefix, $argend, $opt,
\%opctl, \%bopctl, \@opctl, \%aliases);
if ( $found ) {
-
+
# FindOption undefines $opt in case of errors.
next unless defined $opt;
@@ -409,7 +418,20 @@ sub GetOptions {
elsif ( ref($linkage{$opt}) eq 'CODE' ) {
print STDERR ("=> &L{$opt}(\"$opt\", \"$arg\")\n")
if $debug;
- &{$linkage{$opt}}($opt, $arg);
+ local ($@);
+ eval {
+ &{$linkage{$opt}}($opt, $arg);
+ };
+ print STDERR ("=> die($@)\n") if $debug && $@ ne '';
+ if ( $@ =~ /^!/ ) {
+ if ( $@ =~ /^!FINISH\b/ ) {
+ $goon = 0;
+ }
+ }
+ elsif ( $@ ne '' ) {
+ warn ($@);
+ $error++;
+ }
}
else {
print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
@@ -466,7 +488,20 @@ sub GetOptions {
# Try non-options call-back.
my $cb;
if ( (defined ($cb = $linkage{'<>'})) ) {
- &$cb ($tryopt);
+ local ($@);
+ eval {
+ &$cb ($tryopt);
+ };
+ print STDERR ("=> die($@)\n") if $debug && $@ ne '';
+ if ( $@ =~ /^!/ ) {
+ if ( $@ =~ /^!FINISH\b/ ) {
+ $goon = 0;
+ }
+ }
+ elsif ( $@ ne '' ) {
+ warn ($@);
+ $error++;
+ }
}
else {
print STDERR ("=> saving \"$tryopt\" ",
@@ -523,7 +558,7 @@ sub FindOption ($$$$$$$) {
&& $opt =~ /^([^=]+)=(.*)$/s ) {
$opt = $1;
$optarg = $2;
- print STDERR ("=> option \"", $opt,
+ print STDERR ("=> option \"", $opt,
"\", optarg = \"$optarg\"\n") if $debug;
}
@@ -554,7 +589,7 @@ sub FindOption ($$$$$$$) {
$tryopt .= $rest;
undef $rest;
}
- }
+ }
# Try auto-abbreviation.
elsif ( $autoabbrev ) {
@@ -640,7 +675,7 @@ sub FindOption ($$$$$$$) {
($mand, $type, $dsttype, $key) = $type =~ /^(.)(.)([@%]?)$/;
# Check if there is an option argument available.
- if ( defined $optarg ? ($optarg eq '')
+ if ( defined $optarg ? ($optarg eq '')
: !(defined $rest || @ARGV > 0) ) {
# Complain if this option needs an argument.
if ( $mand eq "=" ) {
@@ -662,17 +697,17 @@ sub FindOption ($$$$$$$) {
# Get key if this is a "name=value" pair for a hash option.
$key = undef;
if ($dsttype eq '%' && defined $arg) {
- ($key, $arg) = ($arg =~ /^(.*)=(.*)$/s) ? ($1, $2) : ($arg, 1);
+ ($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2) : ($arg, 1);
}
#### Check if the argument is valid for this option ####
if ( $type eq "s" ) { # string
- # A mandatory string takes anything.
+ # A mandatory string takes anything.
return (1, $opt,$arg,$dsttype,$incr,$key) if $mand eq "=";
- # An optional string takes almost anything.
- return (1, $opt,$arg,$dsttype,$incr,$key)
+ # An optional string takes almost anything.
+ return (1, $opt,$arg,$dsttype,$incr,$key)
if defined $optarg || defined $rest;
return (1, $opt,$arg,$dsttype,$incr,$key) if $arg eq "-"; # ??
@@ -687,12 +722,12 @@ sub FindOption ($$$$$$$) {
}
elsif ( $type eq "n" || $type eq "i" ) { # numeric/integer
- if ( $bundling && defined $rest && $rest =~ /^(-?[0-9]+)(.*)$/s ) {
+ if ( $bundling && defined $rest && $rest =~ /^([-+]?[0-9]+)(.*)$/s ) {
$arg = $1;
$rest = $2;
unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
}
- elsif ( $arg !~ /^-?[0-9]+$/ ) {
+ elsif ( $arg !~ /^[-+]?[0-9]+$/ ) {
if ( defined $optarg || $mand eq "=" ) {
if ( $passthrough ) {
unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
@@ -720,12 +755,12 @@ sub FindOption ($$$$$$$) {
# and at least one digit following the point and 'e'.
# [-]NN[.NN][eNN]
if ( $bundling && defined $rest &&
- $rest =~ /^(-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?)(.*)$/s ) {
+ $rest =~ /^([-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?)(.*)$/s ) {
$arg = $1;
$rest = $+;
unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
}
- elsif ( $arg !~ /^-?[0-9.]+(\.[0-9]+)?([eE]-?[0-9]+)?$/ ) {
+ elsif ( $arg !~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/ ) {
if ( defined $optarg || $mand eq "=" ) {
if ( $passthrough ) {
unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
@@ -756,6 +791,18 @@ sub FindOption ($$$$$$$) {
# Getopt::Long Configuration.
sub Configure (@) {
my (@options) = @_;
+
+ my $prevconfig =
+ [ $error, $debug, $major_version, $minor_version,
+ $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
+ $passthrough, $genprefix ];
+
+ if ( ref($options[0]) eq 'ARRAY' ) {
+ ( $error, $debug, $major_version, $minor_version,
+ $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
+ $passthrough, $genprefix ) = @{shift(@options)};
+ }
+
my $opt;
foreach $opt ( @options ) {
my $try = lc ($opt);
@@ -804,7 +851,7 @@ sub Configure (@) {
elsif ( $try =~ /^prefix_pattern=(.+)$/ ) {
$genprefix = $1;
# Parenthesize if needed.
- $genprefix = "(" . $genprefix . ")"
+ $genprefix = "(" . $genprefix . ")"
unless $genprefix =~ /^\(.*\)$/;
eval { '' =~ /$genprefix/; };
Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
@@ -816,6 +863,7 @@ sub Configure (@) {
Croak ("Getopt::Long: unknown config parameter \"$opt\"")
}
}
+ $prevconfig;
}
# Deprecated name.
@@ -834,7 +882,7 @@ sub Croak (@) {
=head1 NAME
-GetOptions - extended processing of command line options
+Getopt::Long - Extended processing of command line options
=head1 SYNOPSIS
@@ -849,350 +897,548 @@ line options, with GNU extensions. In general, this means that options
have long names instead of single letters, and are introduced with a
double dash "--". Support for bundling of command line options, as was
the case with the more traditional single-letter approach, is provided
-but not enabled by default. For example, the UNIX "ps" command can be
-given the command line "option"
+but not enabled by default.
+
+=head1 Command Line Options, an Introduction
+
+Command line operated programs traditionally take their arguments from
+the command line, for example filenames or other information that the
+program needs to know. Besides arguments, these programs often take
+command line I<options> as well. Options are not necessary for the
+program to work, hence the name 'option', but are used to modify its
+default behaviour. For example, a program could do its job quietly,
+but with a suitable option it could provide verbose information about
+what it did.
+
+Command line options come in several flavours. Historically, they are
+preceded by a single dash C<->, and consist of a single letter.
+
+ -l -a -c
+
+Usually, these single-character options can be bundled:
+
+ -lac
+
+Options can have values, the value is placed after the option
+character. Sometimes with whitespace in between, sometimes not:
+
+ -s 24 -s24
+
+Due to the very cryptic nature of these options, another style was
+developed that used long names. So instead of a cryptic C<-l> one
+could use the more descriptive C<--long>. To distinguish between a
+bundle of single-character options and a long one, two dashes are used
+to precede the option name. Early implementations of long options used
+a plus C<+> instead. Also, option values could be specified either
+like
+
+ --size=24
+
+or
+
+ --size 24
+
+The C<+> form is now obsolete and strongly deprecated.
+
+=head1 Getting Started with Getopt::Long
+
+Getopt::Long is the Perl5 successor of C<newgetopt.pl>. This was
+the firs Perl module that provided support for handling the new style
+of command line options, hence the name Getopt::Long. This module
+also supports single-character options and bundling. In this case, the
+options are restricted to alphabetic characters only, and the
+characters C<?> and C<->.
+
+To use Getopt::Long from a Perl program, you must include the
+following line in your Perl program:
+
+ use Getopt::Long;
+
+This will load the core of the Getopt::Long module and prepare your
+program for using it. Most of the actual Getopt::Long code is not
+loaded until you really call one of its functions.
+
+In the default configuration, options names may be abbreviated to
+uniqueness, case does not matter, and a single dash is sufficient,
+even for long option names. Also, options may be placed between
+non-option arguments. See L<Configuring Getopt::Long> for more
+details on how to configure Getopt::Long.
+
+=head2 Simple options
+
+The most simple options are the ones that take no values. Their mere
+presence on the command line enables the option. Popular examples are:
+
+ --all --verbose --quiet --debug
+
+Handling simple options is straightforward:
+
+ my $verbose = ''; # option variable with default value (false)
+ my $all = ''; # option variable with default value (false)
+ GetOptions ('verbose' => \$verbose, 'all' => \$all);
+
+The call to GetOptions() parses the command line arguments that are
+present in C<@ARGV> and sets the option variable to the value C<1> if
+the option did occur on the command line. Otherwise, the option
+variable is not touched. Setting the option value to true is often
+called I<enabling> the option.
+
+The option name as specified to the GetOptions() function is called
+the option I<specification>. Later we'll see that this specification
+can contain more than just the option name. The reference to the
+variable is called the option I<destination>.
+
+GetOptions() will return a true value if the command line could be
+processed successfully. Otherwise, it will write error messages to
+STDERR, and return a false result.
+
+=head2 A little bit less simple options
+
+Getopt::Long supports two useful variants of simple options:
+I<negatable> options and I<incremental> options.
+
+A negatable option is specified with a exclamation mark C<!> after the
+option name:
+
+ my $verbose = ''; # option variable with default value (false)
+ GetOptions ('verbose!' => \$verbose);
+
+Now, using C<--verbose> on the command line will enable C<$verbose>,
+as expected. But it is also allowed to use C<--noverbose>, which will
+disable C<$verbose> by setting its value to C<0>. Using a suitable
+default value, the program can find out whether C<$verbose> is false
+by default, or disabled by using C<--noverbose>.
+
+An incremental option is specified with a plus C<+> after the
+option name:
+
+ my $verbose = ''; # option variable with default value (false)
+ GetOptions ('verbose+' => \$verbose);
+
+Using C<--verbose> on the command line will increment the value of
+C<$verbose>. This way the program can keep track of how many times the
+option occurred on the command line. For example, each occurrence of
+C<--verbose> could increase the verbosity level of the program.
+
+=head2 Mixing command line option with other arguments
+
+Usually programs take command line options as well as other arguments,
+for example, file names. It is good practice to always specify the
+options first, and the other arguments last. Getopt::Long will,
+however, allow the options and arguments to be mixed and 'filter out'
+all the options before passing the rest of the arguments to the
+program. To stop Getopt::Long from processing further arguments,
+insert a double dash C<--> on the command line:
+
+ --size 24 -- --all
+
+In this example, C<--all> will I<not> be treated as an option, but
+passed to the program unharmed, in C<@ARGV>.
+
+=head2 Options with values
+
+For options that take values it must be specified whether the option
+value is required or not, and what kind of value the option expects.
+
+Three kinds of values are supported: integer numbers, floating point
+numbers, and strings.
+
+If the option value is required, Getopt::Long will take the
+command line argument that follows the option and assign this to the
+option variable. If, however, the option value is specified as
+optional, this will only be done if that value does not look like a
+valid command line option itself.
+
+ my $tag = ''; # option variable with default value
+ GetOptions ('tag=s' => \$tag);
+
+In the option specification, the option name is followed by an equals
+sign C<=> and the letter C<s>. The equals sign indicates that this
+option requires a value. The letter C<s> indicates that this value is
+an arbitrary string. Other possible value types are C<i> for integer
+values, and C<f> for floating point values. Using a colon C<:> instead
+of the equals sign indicates that the option value is optional. In
+this case, if no suitable value is supplied, string valued options get
+an empty string C<''> assigned, while numeric options are set to C<0>.
+
+=head2 Options with multiple values
+
+Options sometimes take several values. For example, a program could
+use multiple directories to search for library files:
+
+ --library lib/stdlib --library lib/extlib
+
+To accomplish this behaviour, simply specify an array reference as the
+destination for the option:
+
+ my @libfiles = ();
+ GetOptions ("library=s" => \@libfiles);
+
+Used with the example above, C<@libfiles> would contain two strings
+upon completion: C<"lib/srdlib"> and C<"lib/extlib">, in that order.
+It is also possible to specify that only integer or floating point
+numbers are acceptible values.
+
+Often it is useful to allow comma-separated lists of values as well as
+multiple occurrences of the options. This is easy using Perl's split()
+and join() operators:
+
+ my @libfiles = ();
+ GetOptions ("library=s" => \@libfiles);
+ @libfiles = split(/,/,join(',',@libfiles));
+
+Of course, it is important to choose the right separator string for
+each purpose.
+
+=head2 Options with hash values
- -vax
+If the option destination is a reference to a hash, the option will
+take, as value, strings of the form I<key>C<=>I<value>. The value will
+be stored with the specified key in the hash.
-which means the combination of B<-v>, B<-a> and B<-x>. With the new
-syntax B<--vax> would be a single option, probably indicating a
-computer architecture.
+ my %defines = ();
+ GetOptions ("define=s" => \%defines);
-Command line options can be used to set values. These values can be
-specified in one of two ways:
+When used with command line options:
- --size 24
- --size=24
+ --define os=linux --define vendor=redhat
-GetOptions is called with a list of option-descriptions, each of which
-consists of two elements: the option specifier and the option linkage.
-The option specifier defines the name of the option and, optionally,
-the value it can take. The option linkage is usually a reference to a
-variable that will be set when the option is used. For example, the
-following call to GetOptions:
+the hash C<%defines> will contain two keys, C<"os"> with value
+C<"linux> and C<"vendor"> with value C<"redhat">.
+It is also possible to specify that only integer or floating point
+numbers are acceptible values. The keys are always taken to be strings.
- GetOptions("size=i" => \$offset);
+=head2 User-defined subroutines to handle options
-will accept a command line option "size" that must have an integer
-value. With a command line of "--size 24" this will cause the variable
-$offset to get the value 24.
+Ultimate control over what should be done when (actually: each time)
+an option is encountered on the command line can be achieved by
+designating a reference to a subroutine (or an anonymous subroutine)
+as the option destination. When GetOptions() encounters the option, it
+will call the subroutine with two arguments: the name of the option,
+and the value to be assigned. It is up to the subroutine to store the
+value, or do whatever it thinks is appropriate.
-Alternatively, the first argument to GetOptions may be a reference to
-a HASH describing the linkage for the options, or an object whose
-class is based on a HASH. The following call is equivalent to the
-example above:
+A trivial application of this mechanism is to implement options that
+are related to each other. For example:
- %optctl = ("size" => \$offset);
- GetOptions(\%optctl, "size=i");
+ my $verbose = ''; # option variable with default value (false)
+ GetOptions ('verbose' => \$verbose,
+ 'quiet' => sub { $verbose = 0 });
-Linkage may be specified using either of the above methods, or both.
-Linkage specified in the argument list takes precedence over the
-linkage specified in the HASH.
+Here C<--verbose> and C<--quiet> control the same variable
+C<$verbose>, but with opposite values.
-The command line options are taken from array @ARGV. Upon completion
-of GetOptions, @ARGV will contain the rest (i.e. the non-options) of
-the command line.
-
-Each option specifier designates the name of the option, optionally
-followed by an argument specifier.
+If the subroutine needs to signal an error, it should call die() with
+the desired error message as its argument. GetOptions() will catch the
+die(), issue the error message, and record that an error result must
+be returned upon completion.
-Options that do not take arguments will have no argument specifier.
-The option variable will be set to 1 if the option is used.
+If the text of the error message starts with an exclamantion mark C<!>
+it is interpreted specially by GetOptions(). There is currently one
+special command implemented: C<die("!FINISH")> will cause GetOptions()
+to stop processing options, as if it encountered a double dash C<-->.
-For the other options, the values for argument specifiers are:
+=head2 Options with multiple names
-=over 8
+Often it is user friendly to supply alternate mnemonic names for
+options. For example C<--height> could be an alternate name for
+C<--length>. Alternate names can be included in the option
+specification, separated by vertical bar C<|> characters. To implement
+the above example:
+
+ GetOptions ('length|height=f' => \$length);
+
+The first name is called the I<primary> name, the other names are
+called I<aliases>.
+
+Multiple alternate names are possible.
+
+=head2 Case and abbreviations
+
+Without additional configuration, GetOptions() will ignore the case of
+option names, and allow the options to be abbreviated to uniqueness.
+
+ GetOptions ('length|height=f' => \$length, "head" => \$head);
+
+This call will allow C<--l> and C<--L> for the length option, but
+requires a least C<--hea> and C<--hei> for the head and height options.
+
+=head2 Summary of Option Specifications
+
+Each option specifier consists of two parts: the name specification
+and the argument specification.
+
+The name specification contains the name of the option, optionally
+followed by a list of alternative names separated by vertical bar
+characters.
+
+ length option name is "length"
+ length|size|l name is "length", aliases are "size" and "l"
+
+The argument specification is optional. If omitted, the option is
+considered boolean, a value of 1 will be assigned when the option is
+used on the command line.
+
+The argument specification can be
+
+=over
=item !
-Option does not take an argument and may be negated, i.e. prefixed by
-"no". E.g. "foo!" will allow B<--foo> (with value 1) and B<-nofoo>
-(with value 0).
-The option variable will be set to 1, or 0 if negated.
+The option does not take an argument and may be negated, i.e. prefixed
+by "no". E.g. C<"foo!"> will allow C<--foo> (a value of 1 will be
+assigned) and C<--nofoo> (a value of 0 will be assigned). If the
+option has aliases, this applies to the aliases as well.
+
+Using negation on a single letter option when bundling is in effect is
+pointless and will result in a warning.
=item +
-Option does not take an argument and will be incremented by 1 every
-time it appears on the command line. E.g. "more+", when used with
-B<--more --more --more>, will set the option variable to 3 (provided
-it was 0 or undefined at first).
+The option does not take an argument and will be incremented by 1
+every time it appears on the command line. E.g. C<"more+">, when used
+with C<--more --more --more>, will increment the value three times,
+resulting in a value of 3 (provided it was 0 or undefined at first).
+
+The C<+> specifier is ignored if the option destination is not a scalar.
-The B<+> specifier is ignored if the option destination is not a SCALAR.
+=item = I<type> [ I<desttype> ]
-=item =s
+The option requires an argument of the given type. Supported types
+are:
-Option takes a mandatory string argument.
-This string will be assigned to the option variable.
-Note that even if the string argument starts with B<-> or B<-->, it
-will not be considered an option on itself.
+=over
-=item :s
+=item s
-Option takes an optional string argument.
-This string will be assigned to the option variable.
-If omitted, it will be assigned "" (an empty string).
-If the string argument starts with B<-> or B<-->, it
-will be considered an option on itself.
+String. An arbitrary sequence of characters. It is valid for the
+argument to start with C<-> or C<-->.
-=item =i
+=item i
-Option takes a mandatory integer argument.
-This value will be assigned to the option variable.
-Note that the value may start with B<-> to indicate a negative
-value.
+Integer. An optional leading plus or minus sign, followed by a
+sequence of digits.
-=item :i
+=item f
-Option takes an optional integer argument.
-This value will be assigned to the option variable.
-If omitted, the value 0 will be assigned.
-Note that the value may start with B<-> to indicate a negative
-value.
+Real number. For example C<3.14>, C<-6.23E24> and so on.
+
+=back
-=item =f
+The I<desttype> can be C<@> or C<%> to specify that the option is
+list or a hash valued. This is only needed when the destination for
+the option value is not otherwise specified. It should be omitted when
+not needed.
-Option takes a mandatory real number argument.
-This value will be assigned to the option variable.
-Note that the value may start with B<-> to indicate a negative
-value.
+=item : I<type> [ I<desttype> ]
-=item :f
+Like C<=>, but designates the argument as optional.
+If omitted, an empty string will be assigned to string values options,
+and the value zero to numeric options.
-Option takes an optional real number argument.
-This value will be assigned to the option variable.
-If omitted, the value 0 will be assigned.
+Note that if a string argument starts with C<-> or C<-->, it will be
+considered an option on itself.
=back
-A lone dash B<-> is considered an option, the corresponding option
-name is the empty string.
+=head1 Advanced Possibilities
-A double dash on itself B<--> signals end of the options list.
+=head2 Documentation and help texts
-=head2 Linkage specification
+Getopt::Long encourages the use of Pod::Usage to produce help
+messages. For example:
-The linkage specifier is optional. If no linkage is explicitly
-specified but a ref HASH is passed, GetOptions will place the value in
-the HASH. For example:
+ use Getopt::Long;
+ use Pod::Usage;
- %optctl = ();
- GetOptions (\%optctl, "size=i");
+ my $man = 0;
+ my $help = 0;
-will perform the equivalent of the assignment
+ GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
+ pod2usage(1) if $help;
+ pod2usage(-exitstatus => 0, -verbose => 2) if $man;
- $optctl{"size"} = 24;
+ __END__
-For array options, a reference to an array is used, e.g.:
+ =head1 NAME
- %optctl = ();
- GetOptions (\%optctl, "sizes=i@");
+ sample - Using GetOpt::Long and Pod::Usage
-with command line "-sizes 24 -sizes 48" will perform the equivalent of
-the assignment
+ =head1 SYNOPSIS
- $optctl{"sizes"} = [24, 48];
+ sample [options] [file ...]
-For hash options (an option whose argument looks like "name=value"),
-a reference to a hash is used, e.g.:
+ Options:
+ -help brief help message
+ -man full documentation
- %optctl = ();
- GetOptions (\%optctl, "define=s%");
+ =head1 OPTIONS
-with command line "--define foo=hello --define bar=world" will perform the
-equivalent of the assignment
+ =over 8
- $optctl{"define"} = {foo=>'hello', bar=>'world')
+ =item B<-help>
-If no linkage is explicitly specified and no ref HASH is passed,
-GetOptions will put the value in a global variable named after the
-option, prefixed by "opt_". To yield a usable Perl variable,
-characters that are not part of the syntax for variables are
-translated to underscores. For example, "--fpp-struct-return" will set
-the variable $opt_fpp_struct_return. Note that this variable resides
-in the namespace of the calling program, not necessarily B<main>.
-For example:
+ Print a brief help message and exits.
- GetOptions ("size=i", "sizes=i@");
+ =item B<-man>
-with command line "-size 10 -sizes 24 -sizes 48" will perform the
-equivalent of the assignments
+ Prints the manual page and exits.
- $opt_size = 10;
- @opt_sizes = (24, 48);
+ =back
-A lone dash B<-> is considered an option, the corresponding Perl
-identifier is $opt_ .
+ =head1 DESCRIPTION
-The linkage specifier can be a reference to a scalar, a reference to
-an array, a reference to a hash or a reference to a subroutine.
+ B<This program> will read the given input file(s) and do someting
+ useful with the contents thereof.
-Note that, if your code is running under the recommended C<use strict
-'vars'> pragma, it may be helpful to declare these package variables
-via C<use vars> perhaps something like this:
+ =cut
- use vars qw/ $opt_size @opt_sizes $opt_bar /;
+See L<Pod::Usage> for details.
-If a REF SCALAR is supplied, the new value is stored in the referenced
-variable. If the option occurs more than once, the previous value is
-overwritten.
+=head2 Storing options in a hash
-If a REF ARRAY is supplied, the new value is appended (pushed) to the
-referenced array.
+Sometimes, for example when there are a lot of options, having a
+separate variable for each of them can be cumbersome. GetOptions()
+supports, as an alternative mechanism, storing options in a hash.
-If a REF HASH is supplied, the option value should look like "key" or
-"key=value" (if the "=value" is omitted then a value of 1 is implied).
-In this case, the element of the referenced hash with the key "key"
-is assigned "value".
+To obtain this, a reference to a hash must be passed I<as the first
+argument> to GetOptions(). For each option that is specified on the
+command line, the option value will be stored in the hash with the
+option name as key. Options that are not actually used on the command
+line will not be put in the hash, on other words,
+C<exists($h{option})> (or defined()) can be used to test if an option
+was used. The drawback is that warnings will be issued if the program
+runs under C<use strict> and uses C<$h{option}> without testing with
+exists() or defined() first.
-If a REF CODE is supplied, the referenced subroutine is called with
-two arguments: the option name and the option value.
-The option name is always the true name, not an abbreviation or alias.
+ my %h = ();
+ GetOptions (\%h, 'length=i'); # will store in $h{length}
-=head2 Aliases and abbreviations
+For options that take list or hash values, it is necessary to indicate
+this by appending an C<@> or C<%> sign after the type:
-The option name may actually be a list of option names, separated by
-"|"s, e.g. "foo|bar|blech=s". In this example, "foo" is the true name
-of this option. If no linkage is specified, options "foo", "bar" and
-"blech" all will set $opt_foo. For convenience, the single character
-"?" is allowed as an alias, e.g. "help|?".
+ GetOptions (\%h, 'colours=s@'); # will push to @{$h{colours}}
-Option names may be abbreviated to uniqueness, depending on
-configuration option B<auto_abbrev>.
+To make things more complicated, the hash may contain references to
+the actual destinations, for example:
-=head2 Non-option call-back routine
+ my $len = 0;
+ my %h = ('length' => \$len);
+ GetOptions (\%h, 'length=i'); # will store in $len
-A special option specifier, E<lt>E<gt>, can be used to designate a subroutine
-to handle non-option arguments. GetOptions will immediately call this
-subroutine for every non-option it encounters in the options list.
-This subroutine gets the name of the non-option passed.
-This feature requires configuration option B<permute>, see section
-CONFIGURATION OPTIONS.
+This example is fully equivalent with:
-See also the examples.
+ my $len = 0;
+ GetOptions ('length=i' => \$len); # will store in $len
-=head2 Option starters
+Any mixture is possible. For example, the most frequently used options
+could be stored in variables while all other options get stored in the
+hash:
-On the command line, options can start with B<-> (traditional), B<-->
-(POSIX) and B<+> (GNU, now being phased out). The latter is not
-allowed if the environment variable B<POSIXLY_CORRECT> has been
-defined.
+ my $verbose = 0; # frequently referred
+ my $debug = 0; # frequently referred
+ my %h = ('verbose' => \$verbose, 'debug' => \$debug);
+ GetOptions (\%h, 'verbose', 'debug', 'filter', 'size=i');
+ if ( $verbose ) { ... }
+ if ( exists $h{filter} ) { ... option 'filter' was specified ... }
-Options that start with "--" may have an argument appended, separated
-with an "=", e.g. "--foo=bar".
+=head2 Bundling
-=head2 Return values and Errors
+With bundling it is possible to set several single-character options
+at once. For example if C<a>, C<v> and C<x> are all valid options,
-Configuration errors and errors in the option definitions are
-signalled using C<die()> and will terminate the calling
-program unless the call to C<Getopt::Long::GetOptions()> was embedded
-in C<eval { ... }> or C<die()> was trapped using C<$SIG{__DIE__}>.
+ -vax
-A return value of 1 (true) indicates success.
+would set all three.
-A return status of 0 (false) indicates that the function detected one
-or more errors during option parsing. These errors are signalled using
-C<warn()> and can be trapped with C<$SIG{__WARN__}>.
+Getopt::Long supports two levels of bundling. To enable bundling, a
+call to Getopt::Long::Configure is required.
-Errors that can't happen are signalled using C<Carp::croak()>.
+The first level of bundling can be enabled with:
-=head1 COMPATIBILITY
+ Getopt::Long::Configure ("bundling");
-Getopt::Long::GetOptions() is the successor of
-B<newgetopt.pl> that came with Perl 4. It is fully upward compatible.
-In fact, the Perl 5 version of newgetopt.pl is just a wrapper around
-the module.
+Configured this way, single-character options can be bundled but long
+options B<must> always start with a double dash C<--> to avoid
+abiguity. For example, when C<vax>, C<a>, C<v> and C<x> are all valid
+options,
-If an "@" sign is appended to the argument specifier, the option is
-treated as an array. Value(s) are not set, but pushed into array
-@opt_name. If explicit linkage is supplied, this must be a reference
-to an ARRAY.
+ -vax
-If an "%" sign is appended to the argument specifier, the option is
-treated as a hash. Value(s) of the form "name=value" are set by
-setting the element of the hash %opt_name with key "name" to "value"
-(if the "=value" portion is omitted it defaults to 1). If explicit
-linkage is supplied, this must be a reference to a HASH.
+would set C<a>, C<v> and C<x>, but
-If configuration option B<getopt_compat> is set (see section
-CONFIGURATION OPTIONS), options that start with "+" or "-" may also
-include their arguments, e.g. "+foo=bar". This is for compatiblity
-with older implementations of the GNU "getopt" routine.
+ --vax
-If the first argument to GetOptions is a string consisting of only
-non-alphanumeric characters, it is taken to specify the option starter
-characters. Everything starting with one of these characters from the
-starter will be considered an option. B<Using a starter argument is
-strongly deprecated.>
+would set C<vax>.
-For convenience, option specifiers may have a leading B<-> or B<-->,
-so it is possible to write:
+The second level of bundling lifts this restriction. It can be enabled
+with:
- GetOptions qw(-foo=s --bar=i --ar=s);
+ Getopt::Long::Configure ("bundling_override");
-=head1 EXAMPLES
+Now, C<-vax> would set the option C<vax>.
-If the option specifier is "one:i" (i.e. takes an optional integer
-argument), then the following situations are handled:
+When any level of bundling is enabled, option values may be inserted
+in the bundle. For example:
- -one -two -> $opt_one = '', -two is next option
- -one -2 -> $opt_one = -2
+ -h24w80
-Also, assume specifiers "foo=s" and "bar:s" :
+is equivalent to
- -bar -xxx -> $opt_bar = '', '-xxx' is next option
- -foo -bar -> $opt_foo = '-bar'
- -foo -- -> $opt_foo = '--'
+ -h 24 -w 80
-In GNU or POSIX format, option names and values can be combined:
+When configured for bundling, single-character options are matched
+case sensitive while long options are matched case insensitive. To
+have the single-character options matched case insensitive as well,
+use:
- +foo=blech -> $opt_foo = 'blech'
- --bar= -> $opt_bar = ''
- --bar=-- -> $opt_bar = '--'
+ Getopt::Long::Configure ("bundling", "ignorecase_always");
-Example of using variable references:
+It goes without saying that bundling can be quite confusing.
- $ret = GetOptions ('foo=s', \$foo, 'bar=i', 'ar=s', \@ar);
+=head2 The lonesome dash
-With command line options "-foo blech -bar 24 -ar xx -ar yy"
-this will result in:
+Some applications require the option C<-> (that's a lone dash). This
+can be achieved by adding an option specification with an empty name:
- $foo = 'blech'
- $opt_bar = 24
- @ar = ('xx','yy')
+ GetOptions ('' => \$stdio);
-Example of using the E<lt>E<gt> option specifier:
+A lone dash on the command line will now be legal, and set options
+variable C<$stdio>.
- @ARGV = qw(-foo 1 bar -foo 2 blech);
- GetOptions("foo=i", \$myfoo, "<>", \&mysub);
+=head2 Argument call-back
-Results:
+A special option 'name' C<<>> can be used to designate a subroutine
+to handle non-option arguments. When GetOptions() encounters an
+argument that does not look like an option, it will immediately call this
+subroutine and passes it the argument as a parameter.
- mysub("bar") will be called (with $myfoo being 1)
- mysub("blech") will be called (with $myfoo being 2)
+For example:
-Compare this with:
+ my $width = 80;
+ sub process { ... }
+ GetOptions ('width=i' => \$width, '<>' => \&process);
- @ARGV = qw(-foo 1 bar -foo 2 blech);
- GetOptions("foo=i", \$myfoo);
+When applied to the following command line:
-This will leave the non-options in @ARGV:
+ arg1 --width=72 arg2 --width=60 arg3
- $myfoo -> 2
- @ARGV -> qw(bar blech)
+This will call
+C<process("arg1")> while C<$width> is C<80>,
+C<process("arg2")> while C<$width> is C<72>, and
+C<process("arg3")> while C<$width> is C<60>.
-=head1 CONFIGURATION OPTIONS
+This feature requires configuration option B<permute>, see section
+L<Configuring Getopt::Long>.
-B<GetOptions> can be configured by calling subroutine
-B<Getopt::Long::Configure>. This subroutine takes a list of quoted
-strings, each specifying a configuration option to be set, e.g.
-B<ignore_case>. Options can be reset by prefixing with B<no_>, e.g.
-B<no_ignore_case>. Case does not matter. Multiple calls to B<config>
-are possible.
-Previous versions of Getopt::Long used variables for the purpose of
-configuring. Although manipulating these variables still work, it
-is strongly encouraged to use the new B<config> routine. Besides, it
-is much easier.
+=head1 Configuring Getopt::Long
+
+Getopt::Long can be configured by calling subroutine
+Getopt::Long::Configure(). This subroutine takes a list of quoted
+strings, each specifying a configuration option to be set, e.g.
+C<ignore_case>, or reset, e.g. C<no_ignore_case>. Case does not
+matter. Multiple calls to Configure() are possible.
The following options are available:
@@ -1207,122 +1453,102 @@ default values.
Allow option names to be abbreviated to uniqueness.
Default is set unless environment variable
-POSIXLY_CORRECT has been set, in which case B<auto_abbrev> is reset.
+POSIXLY_CORRECT has been set, in which case C<auto_abbrev> is reset.
-=item getopt_compat
+=item getopt_compat
-Allow '+' to start options.
+Allow C<+> to start options.
Default is set unless environment variable
-POSIXLY_CORRECT has been set, in which case B<getopt_compat> is reset.
+POSIXLY_CORRECT has been set, in which case C<getopt_compat> is reset.
=item require_order
-Whether non-options are allowed to be mixed with
-options.
+Whether command line arguments are allowed to be mixed with options.
Default is set unless environment variable
-POSIXLY_CORRECT has been set, in which case b<require_order> is reset.
+POSIXLY_CORRECT has been set, in which case C<require_order> is reset.
-See also B<permute>, which is the opposite of B<require_order>.
+See also C<permute>, which is the opposite of C<require_order>.
=item permute
-Whether non-options are allowed to be mixed with
-options.
+Whether command line arguments are allowed to be mixed with options.
Default is set unless environment variable
-POSIXLY_CORRECT has been set, in which case B<permute> is reset.
-Note that B<permute> is the opposite of B<require_order>.
+POSIXLY_CORRECT has been set, in which case C<permute> is reset.
+Note that C<permute> is the opposite of C<require_order>.
-If B<permute> is set, this means that
+If C<permute> is set, this means that
- -foo arg1 -bar arg2 arg3
+ --foo arg1 --bar arg2 arg3
is equivalent to
- -foo -bar arg1 arg2 arg3
+ --foo --bar arg1 arg2 arg3
-If a non-option call-back routine is specified, @ARGV will always be
-empty upon succesful return of GetOptions since all options have been
-processed, except when B<--> is used:
+If an argument call-back routine is specified, C<@ARGV> will always be
+empty upon succesful return of GetOptions() since all options have been
+processed. The only exception is when C<--> is used:
- -foo arg1 -bar arg2 -- arg3
+ --foo arg1 --bar arg2 -- arg3
will call the call-back routine for arg1 and arg2, and terminate
-leaving arg2 in @ARGV.
+GetOptions() leaving C<"arg2"> in C<@ARGV>.
-If B<require_order> is set, options processing
+If C<require_order> is set, options processing
terminates when the first non-option is encountered.
- -foo arg1 -bar arg2 arg3
+ --foo arg1 --bar arg2 arg3
is equivalent to
- -foo -- arg1 -bar arg2 arg3
+ --foo -- arg1 --bar arg2 arg3
=item bundling (default: reset)
-Setting this variable to a non-zero value will allow single-character
-options to be bundled. To distinguish bundles from long option names,
-long options must be introduced with B<--> and single-character
-options (and bundles) with B<->. For example,
+Setting this option will allow single-character options to be bundled.
+To distinguish bundles from long option names, long options I<must> be
+introduced with C<--> and single-character options (and bundles) with
+C<->.
- ps -vax --vax
-
-would be equivalent to
-
- ps -v -a -x --vax
-
-provided "vax", "v", "a" and "x" have been defined to be valid
-options.
-
-Bundled options can also include a value in the bundle; for strings
-this value is the rest of the bundle, but integer and floating values
-may be combined in the bundle, e.g.
-
- scale -h24w80
-
-is equivalent to
-
- scale -h 24 -w 80
-
-Note: resetting B<bundling> also resets B<bundling_override>.
+Note: resetting C<bundling> also resets C<bundling_override>.
=item bundling_override (default: reset)
-If B<bundling_override> is set, bundling is enabled as with
-B<bundling> but now long option names override option bundles. In the
-above example, B<-vax> would be interpreted as the option "vax", not
-the bundle "v", "a", "x".
+If C<bundling_override> is set, bundling is enabled as with
+C<bundling> but now long option names override option bundles.
-Note: resetting B<bundling_override> also resets B<bundling>.
+Note: resetting C<bundling_override> also resets C<bundling>.
B<Note:> Using option bundling can easily lead to unexpected results,
especially when mixing long options and bundles. Caveat emptor.
=item ignore_case (default: set)
-If set, case is ignored when matching options.
+If set, case is ignored when matching long option names. Single
+character options will be treated case-sensitive.
-Note: resetting B<ignore_case> also resets B<ignore_case_always>.
+Note: resetting C<ignore_case> also resets C<ignore_case_always>.
=item ignore_case_always (default: reset)
When bundling is in effect, case is ignored on single-character
options also.
-Note: resetting B<ignore_case_always> also resets B<ignore_case>.
+Note: resetting C<ignore_case_always> also resets C<ignore_case>.
=item pass_through (default: reset)
-Unknown options are passed through in @ARGV instead of being flagged
-as errors. This makes it possible to write wrapper scripts that
-process only part of the user supplied options, and passes the
+Options that are unknown, ambiguous or supplied with an invalid option
+value are passed through in C<@ARGV> instead of being flagged as
+errors. This makes it possible to write wrapper scripts that process
+only part of the user supplied command line arguments, and pass the
remaining options to some other program.
-This can be very confusing, especially when B<permute> is also set.
+This can be very confusing, especially when C<permute> is also set.
=item prefix
-The string that starts options. See also B<prefix_pattern>.
+The string that starts options. If a constant string is not
+sufficient, see C<prefix_pattern>.
=item prefix_pattern
@@ -1336,27 +1562,84 @@ Enable copious debugging output.
=back
-=head1 OTHER USEFUL VARIABLES
+=head1 Return values and Errors
-=over 12
+Configuration errors and errors in the option definitions are
+signalled using die() and will terminate the calling program unless
+the call to Getopt::Long::GetOptions() was embedded in C<eval { ...
+}>, or die() was trapped using C<$SIG{__DIE__}>.
-=item $Getopt::Long::VERSION
+A return value of 1 (true) indicates success.
-The version number of this Getopt::Long implementation in the format
-C<major>.C<minor>. This can be used to have Exporter check the
-version, e.g.
+A return status of 0 (false) indicates that the function detected one
+or more errors during option parsing. These errors are signalled using
+warn() and can be trapped with C<$SIG{__WARN__}>.
- use Getopt::Long 3.00;
+Errors that can't happen are signalled using Carp::croak().
-You can inspect $Getopt::Long::major_version and
-$Getopt::Long::minor_version for the individual components.
+=head1 Legacy
-=item $Getopt::Long::error
+The earliest development of C<newgetopt.pl> started in 1990, with Perl
+version 4. As a result, its development, and the development of
+Getopt::Long, has gone through several stages. Since backward
+compatibility has always been extremely important, the current version
+of Getopt::Long still supports a lot of constructs that nowadays are
+no longer necessary or otherwise unwanted. This section describes
+briefly some of these 'features'.
-Internal error flag. May be incremented from a call-back routine to
-cause options parsing to fail.
+=head2 Default destinations
-=back
+When no destination is specified for an option, GetOptions will store
+the resultant value in a global variable named C<opt_>I<XXX>, where
+I<XXX> is the primary name of this option. When a progam executes
+under C<use strict> (recommended), these variables must be
+pre-declared with our() or C<use vars>.
+
+ our $opt_length = 0;
+ GetOptions ('length=i'); # will store in $opt_length
+
+To yield a usable Perl variable, characters that are not part of the
+syntax for variables are translated to underscores. For example,
+C<--fpp-struct-return> will set the variable
+C<$opt_fpp_struct_return>. Note that this variable resides in the
+namespace of the calling program, not necessarily C<main>. For
+example:
+
+ GetOptions ("size=i", "sizes=i@");
+
+with command line "-size 10 -sizes 24 -sizes 48" will perform the
+equivalent of the assignments
+
+ $opt_size = 10;
+ @opt_sizes = (24, 48);
+
+=head2 Alternative option starters
+
+A string of alternative option starter characters may be passed as the
+first argument (or the first argument after a leading hash reference
+argument).
+
+ my $len = 0;
+ GetOptions ('/', 'length=i' => $len);
+
+Now the command line may look like:
+
+ /length 24 -- arg
+
+Note that to terminate options processing still requires a double dash
+C<-->.
+
+GetOptions() will not interpret a leading C<"<>"> as option starters
+if the next argument is a reference. To force C<"<"> and C<">"> as
+option starters, use C<"><">. Confusing? Well, B<using a starter
+argument is strongly deprecated> anyway.
+
+=head2 Configuration variables
+
+Previous versions of Getopt::Long used variables for the purpose of
+configuring. Although manipulating these variables still work, it
+is strongly encouraged to use the new C<config> routine. Besides, it
+is much easier.
=head1 AUTHOR
@@ -1364,11 +1647,12 @@ Johan Vromans E<lt>jvromans@squirrel.nlE<gt>
=head1 COPYRIGHT AND DISCLAIMER
-This program is Copyright 1990,1999 by Johan Vromans.
+This program is Copyright 2000,1990 by Johan Vromans.
This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
+modify it under the terms of the Perl Artistic License or the
+GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any
+later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -1380,3 +1664,8 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
MA 02139, USA.
=cut
+
+# Local Variables:
+# mode: perl
+# eval: (load-file "pod.el")
+# End:
diff --git a/contrib/perl5/lib/Getopt/Std.pm b/contrib/perl5/lib/Getopt/Std.pm
index 390bf14..e5b369c 100644
--- a/contrib/perl5/lib/Getopt/Std.pm
+++ b/contrib/perl5/lib/Getopt/Std.pm
@@ -28,21 +28,25 @@ which take an argument don't care whether there is a space between the
switch and the argument.
Note that, if your code is running under the recommended C<use strict
-'vars'> pragma, it may be helpful to declare these package variables
-via C<use vars> perhaps something like this:
+'vars'> pragma, you will need to declare these package variables
+with "our":
- use vars qw/ $opt_foo $opt_bar /;
+ our($opt_foo, $opt_bar);
-For those of you who don't like additional variables being created, getopt()
+For those of you who don't like additional global variables being created, getopt()
and getopts() will also accept a hash reference as an optional second argument.
Hash keys will be x (where x is the switch name) with key values the value of
the argument or 1 if no argument is specified.
+To allow programs to process arguments that look like switches, but aren't,
+both functions will stop processing switches when they see the argument
+C<-->. The C<--> will be removed from @ARGV.
+
=cut
@ISA = qw(Exporter);
@EXPORT = qw(getopt getopts);
-$VERSION = $VERSION = '1.01';
+$VERSION = '1.02';
# Process single-character switches with switch clustering. Pass one argument
# which is a string containing all switches that take an argument. For each
@@ -60,6 +64,10 @@ sub getopt ($;$) {
while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
($first,$rest) = ($1,$2);
+ if (/^--$/) { # early exit if --
+ shift @ARGV;
+ last;
+ }
if (index($argumentative,$first) >= 0) {
if ($rest ne '') {
shift(@ARGV);
@@ -68,22 +76,22 @@ sub getopt ($;$) {
shift(@ARGV);
$rest = shift(@ARGV);
}
- if (ref $hash) {
- $$hash{$first} = $rest;
- }
- else {
- ${"opt_$first"} = $rest;
- push( @EXPORT, "\$opt_$first" );
- }
+ if (ref $hash) {
+ $$hash{$first} = $rest;
+ }
+ else {
+ ${"opt_$first"} = $rest;
+ push( @EXPORT, "\$opt_$first" );
+ }
}
else {
- if (ref $hash) {
- $$hash{$first} = 1;
- }
- else {
- ${"opt_$first"} = 1;
- push( @EXPORT, "\$opt_$first" );
- }
+ if (ref $hash) {
+ $$hash{$first} = 1;
+ }
+ else {
+ ${"opt_$first"} = 1;
+ push( @EXPORT, "\$opt_$first" );
+ }
if ($rest ne '') {
$ARGV[0] = "-$rest";
}
@@ -111,31 +119,35 @@ sub getopts ($;$) {
@args = split( / */, $argumentative );
while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
($first,$rest) = ($1,$2);
+ if (/^--$/) { # early exit if --
+ shift @ARGV;
+ last;
+ }
$pos = index($argumentative,$first);
- if($pos >= 0) {
- if(defined($args[$pos+1]) and ($args[$pos+1] eq ':')) {
+ if ($pos >= 0) {
+ if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) {
shift(@ARGV);
- if($rest eq '') {
+ if ($rest eq '') {
++$errs unless @ARGV;
$rest = shift(@ARGV);
}
- if (ref $hash) {
- $$hash{$first} = $rest;
- }
- else {
- ${"opt_$first"} = $rest;
- push( @EXPORT, "\$opt_$first" );
- }
+ if (ref $hash) {
+ $$hash{$first} = $rest;
+ }
+ else {
+ ${"opt_$first"} = $rest;
+ push( @EXPORT, "\$opt_$first" );
+ }
}
else {
- if (ref $hash) {
- $$hash{$first} = 1;
- }
- else {
- ${"opt_$first"} = 1;
- push( @EXPORT, "\$opt_$first" );
- }
- if($rest eq '') {
+ if (ref $hash) {
+ $$hash{$first} = 1;
+ }
+ else {
+ ${"opt_$first"} = 1;
+ push( @EXPORT, "\$opt_$first" );
+ }
+ if ($rest eq '') {
shift(@ARGV);
}
else {
@@ -146,7 +158,7 @@ sub getopts ($;$) {
else {
warn "Unknown option: $first\n";
++$errs;
- if($rest ne '') {
+ if ($rest ne '') {
$ARGV[0] = "-$rest";
}
else {
@@ -162,4 +174,3 @@ sub getopts ($;$) {
}
1;
-
diff --git a/contrib/perl5/lib/I18N/Collate.pm b/contrib/perl5/lib/I18N/Collate.pm
index 580ca39..64a03a2 100644
--- a/contrib/perl5/lib/I18N/Collate.pm
+++ b/contrib/perl5/lib/I18N/Collate.pm
@@ -108,6 +108,7 @@ European character set.
# ---
use POSIX qw(strxfrm LC_COLLATE);
+use warnings::register;
require Exporter;
@@ -123,9 +124,9 @@ cmp collate_cmp
sub new {
my $new = $_[1];
- if ($^W && $] >= 5.003_06) {
+ if (warnings::enabled() && $] >= 5.003_06) {
unless ($please_use_I18N_Collate_even_if_deprecated) {
- warn <<___EOD___;
+ warnings::warn <<___EOD___;
***
WARNING: starting from the Perl version 5.003_06
diff --git a/contrib/perl5/lib/IPC/Open2.pm b/contrib/perl5/lib/IPC/Open2.pm
index 32282d6..a5a3561 100644
--- a/contrib/perl5/lib/IPC/Open2.pm
+++ b/contrib/perl5/lib/IPC/Open2.pm
@@ -1,7 +1,7 @@
package IPC::Open2;
use strict;
-use vars qw($VERSION @ISA @EXPORT);
+our ($VERSION, @ISA, @EXPORT);
require 5.000;
require Exporter;
@@ -17,47 +17,71 @@ IPC::Open2, open2 - open a process for both reading and writing
=head1 SYNOPSIS
use IPC::Open2;
- $pid = open2(\*RDR, \*WTR, 'some cmd and args');
- # or
- $pid = open2(\*RDR, \*WTR, 'some', 'cmd', 'and', 'args');
+
+ $pid = open2(\*RDRFH, \*WTRFH, 'some cmd and args');
+ # or without using the shell
+ $pid = open2(\*RDRFH, \*WTRFH, 'some', 'cmd', 'and', 'args');
+
+ # or with handle autovivification
+ my($rdrfh, $wtrfh);
+ $pid = open2($rdrfh, $wtrfh, 'some cmd and args');
+ # or without using the shell
+ $pid = open2($rdrfh, $wtrfh, 'some', 'cmd', 'and', 'args');
=head1 DESCRIPTION
-The open2() function spawns the given $cmd and connects $rdr for
-reading and $wtr for writing. It's what you think should work
+The open2() function runs the given $cmd and connects $rdrfh for
+reading and $wtrfh for writing. It's what you think should work
when you try
- open(HANDLE, "|cmd args|");
+ $pid = open(HANDLE, "|cmd args|");
The write filehandle will have autoflush turned on.
-If $rdr is a string (that is, a bareword filehandle rather than a glob
-or a reference) and it begins with ">&", then the child will send output
-directly to that file handle. If $wtr is a string that begins with
-"<&", then WTR will be closed in the parent, and the child will read
+If $rdrfh is a string (that is, a bareword filehandle rather than a glob
+or a reference) and it begins with C<< >& >>, then the child will send output
+directly to that file handle. If $wtrfh is a string that begins with
+C<< <& >>, then $wtrfh will be closed in the parent, and the child will read
from it directly. In both cases, there will be a dup(2) instead of a
pipe(2) made.
-open2() returns the process ID of the child process. It doesn't return on
-failure: it just raises an exception matching C</^open2:/>.
-
-=head1 WARNING
-
-It will not create these file handles for you. You have to do this yourself.
-So don't pass it empty variables expecting them to get filled in for you.
+If either reader or writer is the null string, this will be replaced
+by an autogenerated filehandle. If so, you must pass a valid lvalue
+in the parameter slot so it can be overwritten in the caller, or
+an exception will be raised.
-Additionally, this is very dangerous as you may block forever.
-It assumes it's going to talk to something like B<bc>, both writing to
-it and reading from it. This is presumably safe because you "know"
-that commands like B<bc> will read a line at a time and output a line at
-a time. Programs like B<sort> that read their entire input stream first,
-however, are quite apt to cause deadlock.
+open2() returns the process ID of the child process. It doesn't return on
+failure: it just raises an exception matching C</^open2:/>. However,
+C<exec> failures in the child are not detected. You'll have to
+trap SIGPIPE yourself.
+
+open2() does not wait for and reap the child process after it exits.
+Except for short programs where it's acceptable to let the operating system
+take care of this, you need to do this yourself. This is normally as
+simple as calling C<waitpid $pid, 0> when you're done with the process.
+Failing to do this can result in an accumulation of defunct or "zombie"
+processes. See L<perlfunc/waitpid> for more information.
+
+This whole affair is quite dangerous, as you may block forever. It
+assumes it's going to talk to something like B<bc>, both writing
+to it and reading from it. This is presumably safe because you
+"know" that commands like B<bc> will read a line at a time and
+output a line at a time. Programs like B<sort> that read their
+entire input stream first, however, are quite apt to cause deadlock.
The big problem with this approach is that if you don't have control
over source code being run in the child process, you can't control
what it does with pipe buffering. Thus you can't just open a pipe to
C<cat -v> and continually read and write a line from it.
+The IO::Pty and Expect modules from CPAN can help with this, as they
+provide a real tty (well, a pseudo-tty, actually), which gets you
+back to line buffering in the invoked command again.
+
+=head1 WARNING
+
+The order of arguments differs from that of open3().
+
=head1 SEE ALSO
See L<IPC::Open3> for an alternative that handles STDERR as well. This
@@ -86,10 +110,9 @@ function is really just a wrapper around open3().
require IPC::Open3;
sub open2 {
- my ($read, $write, @cmd) = @_;
local $Carp::CarpLevel = $Carp::CarpLevel + 1;
return IPC::Open3::_open3('open2', scalar caller,
- $write, $read, '>&STDERR', @cmd);
+ $_[1], $_[0], '>&STDERR', @_[2 .. $#_]);
}
1
diff --git a/contrib/perl5/lib/IPC/Open3.pm b/contrib/perl5/lib/IPC/Open3.pm
index d079041..99709ac 100644
--- a/contrib/perl5/lib/IPC/Open3.pm
+++ b/contrib/perl5/lib/IPC/Open3.pm
@@ -2,9 +2,8 @@ package IPC::Open3;
use strict;
no strict 'refs'; # because users pass me bareword filehandles
-use vars qw($VERSION @ISA @EXPORT $Me);
+our ($VERSION, @ISA, @EXPORT);
-require 5.001;
require Exporter;
use Carp;
@@ -23,37 +22,50 @@ IPC::Open3, open3 - open a process for reading, writing, and error handling
$pid = open3(\*WTRFH, \*RDRFH, \*ERRFH,
'some cmd and args', 'optarg', ...);
+ my($wtr, $rdr, $err);
+ $pid = open3($wtr, $rdr, $err,
+ 'some cmd and args', 'optarg', ...);
+
=head1 DESCRIPTION
Extremely similar to open2(), open3() spawns the given $cmd and
connects RDRFH for reading, WTRFH for writing, and ERRFH for errors. If
-ERRFH is '', or the same as RDRFH, then STDOUT and STDERR of the child are
-on the same file handle. The WTRFH will have autoflush turned on.
+ERRFH is false, or the same file descriptor as RDRFH, then STDOUT and
+STDERR of the child are on the same filehandle. The WTRFH will have
+autoflush turned on.
-If WTRFH begins with "E<lt>&", then WTRFH will be closed in the parent, and
+If WTRFH begins with C<< <& >>, then WTRFH will be closed in the parent, and
the child will read from it directly. If RDRFH or ERRFH begins with
-"E<gt>&", then the child will send output directly to that file handle.
+C<< >& >>, then the child will send output directly to that filehandle.
In both cases, there will be a dup(2) instead of a pipe(2) made.
-If you try to read from the child's stdout writer and their stderr
-writer, you'll have problems with blocking, which means you'll
-want to use select(), which means you'll have to use sysread() instead
-of normal stuff.
+If either reader or writer is the null string, this will be replaced
+by an autogenerated filehandle. If so, you must pass a valid lvalue
+in the parameter slot so it can be overwritten in the caller, or
+an exception will be raised.
open3() returns the process ID of the child process. It doesn't return on
-failure: it just raises an exception matching C</^open3:/>.
+failure: it just raises an exception matching C</^open3:/>. However,
+C<exec> failures in the child are not detected. You'll have to
+trap SIGPIPE yourself.
-=head1 WARNING
-
-It will not create these file handles for you. You have to do this
-yourself. So don't pass it empty variables expecting them to get filled
-in for you.
+open2() does not wait for and reap the child process after it exits.
+Except for short programs where it's acceptable to let the operating system
+take care of this, you need to do this yourself. This is normally as
+simple as calling C<waitpid $pid, 0> when you're done with the process.
+Failing to do this can result in an accumulation of defunct or "zombie"
+processes. See L<perlfunc/waitpid> for more information.
-Additionally, this is very dangerous as you may block forever. It
-assumes it's going to talk to something like B<bc>, both writing to it
-and reading from it. This is presumably safe because you "know" that
-commands like B<bc> will read a line at a time and output a line at a
-time. Programs like B<sort> that read their entire input stream first,
+If you try to read from the child's stdout writer and their stderr
+writer, you'll have problems with blocking, which means you'll want
+to use select() or the IO::Select, which means you'd best use
+sysread() instead of readline() for normal stuff.
+
+This is very dangerous, as you may block forever. It assumes it's
+going to talk to something like B<bc>, both writing to it and reading
+from it. This is presumably safe because you "know" that commands
+like B<bc> will read a line at a time and output a line at a time.
+Programs like B<sort> that read their entire input stream first,
however, are quite apt to cause deadlock.
The big problem with this approach is that if you don't have control
@@ -61,12 +73,17 @@ over source code being run in the child process, you can't control
what it does with pipe buffering. Thus you can't just open a pipe to
C<cat -v> and continually read and write a line from it.
+=head1 WARNING
+
+The order of arguments differs from that of open2().
+
=cut
# &open3: Marc Horowitz <marc@mit.edu>
# derived mostly from &open2 by tom christiansen, <tchrist@convex.com>
# fixed for 5.001 by Ulrich Kunitz <kunitz@mai-koeln.com>
# ported to Win32 by Ron Schmidt, Merrill Lynch almost ended my career
+# fixed for autovivving FHs, tchrist again
#
# $Id: open3.pl,v 1.1 1993/11/23 06:26:15 marc Exp $
#
@@ -94,7 +111,7 @@ C<cat -v> and continually read and write a line from it.
# rdr or wtr are null
# a system call fails
-$Me = 'open3 (bug)'; # you should never see this, it's always localized
+our $Me = 'open3 (bug)'; # you should never see this, it's always localized
# Fatal.pm needs to be fixed WRT prototypes.
@@ -126,15 +143,27 @@ sub _open3 {
my($package, $dad_wtr, $dad_rdr, $dad_err, @cmd) = @_;
my($dup_wtr, $dup_rdr, $dup_err, $kidpid);
- $dad_wtr or croak "$Me: wtr should not be null";
- $dad_rdr or croak "$Me: rdr should not be null";
- $dad_err = $dad_rdr if ($dad_err eq '');
+ # simulate autovivification of filehandles because
+ # it's too ugly to use @_ throughout to make perl do it for us
+ # tchrist 5-Mar-00
+
+ unless (eval {
+ $dad_wtr = $_[1] = gensym unless defined $dad_wtr && length $dad_wtr;
+ $dad_rdr = $_[2] = gensym unless defined $dad_rdr && length $dad_rdr;
+ 1; })
+ {
+ # must strip crud for croak to add back, or looks ugly
+ $@ =~ s/(?<=value attempted) at .*//s;
+ croak "$Me: $@";
+ }
+
+ $dad_err ||= $dad_rdr;
$dup_wtr = ($dad_wtr =~ s/^[<>]&//);
$dup_rdr = ($dad_rdr =~ s/^[<>]&//);
$dup_err = ($dad_err =~ s/^[<>]&//);
- # force unqualified filehandles into callers' package
+ # force unqualified filehandles into caller's package
$dad_wtr = qualify $dad_wtr, $package;
$dad_rdr = qualify $dad_rdr, $package;
$dad_err = qualify $dad_err, $package;
@@ -185,7 +214,7 @@ sub _open3 {
xopen \*STDERR, ">&STDOUT" if fileno(STDERR) != fileno(STDOUT);
}
local($")=(" ");
- exec @cmd
+ exec @cmd # XXX: wrong process to croak from
or croak "$Me: exec of @cmd failed";
} elsif ($do_spawn) {
# All the bookkeeping of coincidence between handles is
diff --git a/contrib/perl5/lib/Math/BigFloat.pm b/contrib/perl5/lib/Math/BigFloat.pm
index 03bc2f4..d8d643c 100644
--- a/contrib/perl5/lib/Math/BigFloat.pm
+++ b/contrib/perl5/lib/Math/BigFloat.pm
@@ -9,10 +9,8 @@ use overload
'+' => sub {new Math::BigFloat &fadd},
'-' => sub {new Math::BigFloat
$_[2]? fsub($_[1],${$_[0]}) : fsub(${$_[0]},$_[1])},
-'<=>' => sub {new Math::BigFloat
- $_[2]? fcmp($_[1],${$_[0]}) : fcmp(${$_[0]},$_[1])},
-'cmp' => sub {new Math::BigFloat
- $_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
+'<=>' => sub {$_[2]? fcmp($_[1],${$_[0]}) : fcmp(${$_[0]},$_[1])},
+'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
'*' => sub {new Math::BigFloat &fmul},
'/' => sub {new Math::BigFloat
$_[2]? scalar fdiv($_[1],${$_[0]}) :
@@ -28,9 +26,9 @@ qw(
sub new {
my ($class) = shift;
my ($foo) = fnorm(shift);
- panic("Not a number initialized to Math::BigFloat") if $foo eq "NaN";
bless \$foo, $class;
}
+
sub numify { 0 + "${$_[0]}" } # Not needed, additional overhead
# comparing to direct compilation based on
# stringify
@@ -76,6 +74,7 @@ sub fnorm; sub fsqrt;
sub fnorm { #(string) return fnum_str
local($_) = @_;
s/\s+//g; # strip white space
+ no warnings; # $4 and $5 below might legitimately be undefined
if (/^([+-]?)(\d*)(\.(\d*))?([Ee]([+-]?\d+))?$/ && "$2$4" ne '') {
&norm(($1 ? "$1$2$4" : "+$2$4"),(($4 ne '') ? $6-length($4) : $6));
} else {
@@ -159,7 +158,8 @@ sub fdiv #(fnum_str, fnum_str[,scale]) return fnum_str
$scale = length($xm)-1 if (length($xm)-1 > $scale);
$scale = length($ym)-1 if (length($ym)-1 > $scale);
$scale = $scale + length($ym) - length($xm);
- &norm(&round(Math::BigInt::bdiv($xm.('0' x $scale),$ym),$ym),
+ &norm(&round(Math::BigInt::bdiv($xm.('0' x $scale),$ym),
+ Math::BigInt::babs($ym)),
$xe-$ye-$scale);
}
}
@@ -219,7 +219,11 @@ sub ffround { #(fnum_str, scale) return fnum_str
if ($xe < 1) {
'+0E+0';
} elsif ($xe == 1) {
- &norm(&round('+0',"+0".substr($xm,$[+1,1),"+10"), $scale);
+ # The first substr preserves the sign, passing a non-
+ # normalized "-0" to &round when rounding -0.006 (for
+ # example), purely so &round won't lose the sign.
+ &norm(&round(substr($xm,$[,1).'0',
+ "+0".substr($xm,$[+1,1),"+10"), $scale);
} else {
&norm(&round(substr($xm,$[,$xe),
"+0".substr($xm,$[+$xe,1),"+10"), $scale);
@@ -236,12 +240,13 @@ sub fcmp #(fnum_str, fnum_str) return cond_code
if ($x eq "NaN" || $y eq "NaN") {
undef;
} else {
+ local($xm,$xe,$ym,$ye) = split('E', $x."E$y");
+ if ($xm eq '+0' || $ym eq '+0') {
+ return $xm <=> $ym;
+ }
ord($y) <=> ord($x)
- ||
- ( local($xm,$xe,$ym,$ye) = split('E', $x."E$y"),
- (($xe <=> $ye) * (substr($x,$[,1).'1')
- || Math::BigInt::cmp($xm,$ym))
- );
+ || ($xe <=> $ye) * (substr($x,$[,1).'1')
+ || Math::BigInt::cmp($xm,$ym);
}
}
@@ -301,7 +306,7 @@ floats as
=item number format
canonical strings have the form /[+-]\d+E[+-]\d+/ . Input values can
-have imbedded whitespace.
+have embedded whitespace.
=item Error returns 'NaN'
@@ -310,9 +315,24 @@ negative number.
=item Division is computed to
-C<max($div_scale,length(dividend)+length(divisor))> digits by default.
+C<max($Math::BigFloat::div_scale,length(dividend)+length(divisor))>
+digits by default.
Also used for default sqrt scale.
+=item Rounding is performed
+
+according to the value of
+C<$Math::BigFloat::rnd_mode>:
+
+ trunc truncate the value
+ zero round towards 0
+ +inf round towards +infinity (round up)
+ -inf round towards -infinity (round down)
+ even round to the nearest, .5 to the even digit
+ odd round to the nearest, .5 to the odd digit
+
+The default is C<even> rounding.
+
=back
=head1 BUGS
@@ -320,6 +340,15 @@ Also used for default sqrt scale.
The current version of this module is a preliminary version of the
real thing that is currently (as of perl5.002) under development.
+The printf subroutine does not use the value of
+C<$Math::BigFloat::rnd_mode> when rounding values for printing.
+Consequently, the way to print rounded values is
+to specify the number of digits both as an
+argument to C<ffround> and in the C<%f> printf string,
+as follows:
+
+ printf "%.3f\n", $bigfloat->ffround(-3);
+
=head1 AUTHOR
Mark Biggar
diff --git a/contrib/perl5/lib/Math/BigInt.pm b/contrib/perl5/lib/Math/BigInt.pm
index b61b884..a43969c 100644
--- a/contrib/perl5/lib/Math/BigInt.pm
+++ b/contrib/perl5/lib/Math/BigInt.pm
@@ -4,10 +4,8 @@ use overload
'+' => sub {new Math::BigInt &badd},
'-' => sub {new Math::BigInt
$_[2]? bsub($_[1],${$_[0]}) : bsub(${$_[0]},$_[1])},
-'<=>' => sub {new Math::BigInt
- $_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])},
-'cmp' => sub {new Math::BigInt
- $_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
+'<=>' => sub {$_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])},
+'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
'*' => sub {new Math::BigInt &bmul},
'/' => sub {new Math::BigInt
$_[2]? scalar bdiv($_[1],${$_[0]}) :
@@ -18,6 +16,14 @@ use overload
$_[2]? bpow($_[1],${$_[0]}) : bpow(${$_[0]},$_[1])},
'neg' => sub {new Math::BigInt &bneg},
'abs' => sub {new Math::BigInt &babs},
+'<<' => sub {new Math::BigInt
+ $_[2]? blsft($_[1],${$_[0]}) : blsft(${$_[0]},$_[1])},
+'>>' => sub {new Math::BigInt
+ $_[2]? brsft($_[1],${$_[0]}) : brsft(${$_[0]},$_[1])},
+'&' => sub {new Math::BigInt &band},
+'|' => sub {new Math::BigInt &bior},
+'^' => sub {new Math::BigInt &bxor},
+'~' => sub {new Math::BigInt &bnot},
qw(
"" stringify
@@ -258,9 +264,11 @@ sub bdiv { #(dividend: num_str, divisor: num_str) return num_str
else {
push(@x, 0);
}
- @q = (); ($v2,$v1) = ($y[-2] || 0, $y[-1]);
+ @q = (); ($v2,$v1) = @y[-2,-1];
+ $v2 = 0 unless $v2;
while ($#x > $#y) {
- ($u2,$u1,$u0) = ($x[-3] || 0, $x[-2] || 0, $x[-1]);
+ ($u2,$u1,$u0) = @x[-3..-1];
+ $u2 = 0 unless $u2;
$q = (($u0 == $v1) ? 99999 : int(($u0*1e5+$u1)/$v1));
--$q while ($v2*$q > ($u0*1e5+$u1-$q*$v1)*1e5+$u2);
if ($q) {
@@ -328,6 +336,69 @@ sub bpow { #(num_str, num_str) return num_str
}
}
+# compute x << y, y >= 0
+sub blsft { #(num_str, num_str) return num_str
+ &bmul($_[$[], &bpow(2, $_[$[+1]));
+}
+
+# compute x >> y, y >= 0
+sub brsft { #(num_str, num_str) return num_str
+ &bdiv($_[$[], &bpow(2, $_[$[+1]));
+}
+
+# compute x & y
+sub band { #(num_str, num_str) return num_str
+ local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
+ if ($x eq 'NaN' || $y eq 'NaN') {
+ 'NaN';
+ } else {
+ while ($x ne '+0' && $y ne '+0') {
+ ($x, $xr) = &bdiv($x, 0x10000);
+ ($y, $yr) = &bdiv($y, 0x10000);
+ $r = &badd(&bmul(int $xr & $yr, $m), $r);
+ $m = &bmul($m, 0x10000);
+ }
+ $r;
+ }
+}
+
+# compute x | y
+sub bior { #(num_str, num_str) return num_str
+ local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
+ if ($x eq 'NaN' || $y eq 'NaN') {
+ 'NaN';
+ } else {
+ while ($x ne '+0' || $y ne '+0') {
+ ($x, $xr) = &bdiv($x, 0x10000);
+ ($y, $yr) = &bdiv($y, 0x10000);
+ $r = &badd(&bmul(int $xr | $yr, $m), $r);
+ $m = &bmul($m, 0x10000);
+ }
+ $r;
+ }
+}
+
+# compute x ^ y
+sub bxor { #(num_str, num_str) return num_str
+ local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
+ if ($x eq 'NaN' || $y eq 'NaN') {
+ 'NaN';
+ } else {
+ while ($x ne '+0' || $y ne '+0') {
+ ($x, $xr) = &bdiv($x, 0x10000);
+ ($y, $yr) = &bdiv($y, 0x10000);
+ $r = &badd(&bmul(int $xr ^ $yr, $m), $r);
+ $m = &bmul($m, 0x10000);
+ }
+ $r;
+ }
+}
+
+# represent ~x as twos-complement number
+sub bnot { #(num_str) return num_str
+ &bsub(-1,$_[$[]);
+}
+
1;
__END__
@@ -350,6 +421,12 @@ Math::BigInt - Arbitrary size integer math package
$i->bmod(BINT) return BINT modulus
$i->bgcd(BINT) return BINT greatest common divisor
$i->bnorm return BINT normalization
+ $i->blsft(BINT) return BINT left shift
+ $i->brsft(BINT) return (BINT,BINT) right shift (quo,rem) just quo if scalar
+ $i->band(BINT) return BINT bit-wise and
+ $i->bior(BINT) return BINT bit-wise inclusive or
+ $i->bxor(BINT) return BINT bit-wise exclusive or
+ $i->bnot return BINT bit-wise not
=head1 DESCRIPTION
diff --git a/contrib/perl5/lib/Math/Complex.pm b/contrib/perl5/lib/Math/Complex.pm
index 5b69039..1a47f4a 100644
--- a/contrib/perl5/lib/Math/Complex.pm
+++ b/contrib/perl5/lib/Math/Complex.pm
@@ -8,9 +8,10 @@
require Exporter;
package Math::Complex;
+use 5.005_64;
use strict;
-use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS);
+our($VERSION, @ISA, @EXPORT, %EXPORT_TAGS);
my ( $i, $ip2, %logn );
@@ -65,9 +66,10 @@ use overload
# Package "privates"
#
-my $package = 'Math::Complex'; # Package name
-my $display = 'cartesian'; # Default display format
-my $eps = 1e-14; # Epsilon
+my $package = 'Math::Complex'; # Package name
+my %DISPLAY_FORMAT = ('style' => 'cartesian',
+ 'polar_pretty_print' => 1);
+my $eps = 1e-14; # Epsilon
#
# Object attributes (internal):
@@ -160,7 +162,7 @@ sub new { &make } # For backward compatibility only.
#
sub cplx {
my ($re, $im) = @_;
- return $package->make($re, defined $im ? $im : 0);
+ return __PACKAGE__->make($re, defined $im ? $im : 0);
}
#
@@ -171,7 +173,7 @@ sub cplx {
#
sub cplxe {
my ($rho, $theta) = @_;
- return $package->emake($rho, defined $theta ? $theta : 0);
+ return __PACKAGE__->emake($rho, defined $theta ? $theta : 0);
}
#
@@ -179,21 +181,21 @@ sub cplxe {
#
# The number defined as pi = 180 degrees
#
-use constant pi => 4 * CORE::atan2(1, 1);
+sub pi () { 4 * CORE::atan2(1, 1) }
#
# pit2
#
# The full circle
#
-use constant pit2 => 2 * pi;
+sub pit2 () { 2 * pi }
#
# pip2
#
# The quarter circle
#
-use constant pip2 => pi / 2;
+sub pip2 () { pi / 2 }
#
# deg1
@@ -201,14 +203,14 @@ use constant pip2 => pi / 2;
# One degree in radians, used in stringify_polar.
#
-use constant deg1 => pi / 180;
+sub deg1 () { pi / 180 }
#
# uplog10
#
# Used in log10().
#
-use constant uplog10 => 1 / CORE::log(10);
+sub uplog10 () { 1 / CORE::log(10) }
#
# i
@@ -835,7 +837,7 @@ sub acos {
my $u = CORE::atan2(CORE::sqrt(1-$beta*$beta), $beta);
my $v = CORE::log($alpha + CORE::sqrt($alpha*$alpha-1));
$v = -$v if $y > 0 || ($y == 0 && $x < -1);
- return $package->make($u, $v);
+ return __PACKAGE__->make($u, $v);
}
#
@@ -857,7 +859,7 @@ sub asin {
my $u = CORE::atan2($beta, CORE::sqrt(1-$beta*$beta));
my $v = -CORE::log($alpha + CORE::sqrt($alpha*$alpha-1));
$v = -$v if $y > 0 || ($y == 0 && $x < -1);
- return $package->make($u, $v);
+ return __PACKAGE__->make($u, $v);
}
#
@@ -1153,34 +1155,53 @@ sub atan2 {
# display_format
# ->display_format
#
-# Set (fetch if no argument) display format for all complex numbers that
+# Set (get if no argument) the display format for all complex numbers that
# don't happen to have overridden it via ->display_format
#
-# When called as a method, this actually sets the display format for
+# When called as an object method, this actually sets the display format for
# the current object.
#
# Valid object formats are 'c' and 'p' for cartesian and polar. The first
# letter is used actually, so the type can be fully spelled out for clarity.
#
sub display_format {
- my $self = shift;
- my $format = undef;
+ my $self = shift;
+ my %display_format = %DISPLAY_FORMAT;
- if (ref $self) { # Called as a method
- $format = shift;
- } else { # Regular procedure call
- $format = $self;
- undef $self;
+ if (ref $self) { # Called as an object method
+ if (exists $self->{display_format}) {
+ my %obj = %{$self->{display_format}};
+ @display_format{keys %obj} = values %obj;
+ }
+ if (@_ == 1) {
+ $display_format{style} = shift;
+ } else {
+ my %new = @_;
+ @display_format{keys %new} = values %new;
+ }
+ } else { # Called as a class method
+ if (@_ = 1) {
+ $display_format{style} = $self;
+ } else {
+ my %new = @_;
+ @display_format{keys %new} = values %new;
+ }
+ undef $self;
}
if (defined $self) {
- return defined $self->{display} ? $self->{display} : $display
- unless defined $format;
- return $self->{display} = $format;
+ $self->{display_format} = { %display_format };
+ return
+ wantarray ?
+ %{$self->{display_format}} :
+ $self->{display_format}->{style};
}
- return $display unless defined $format;
- return $display = $format;
+ %DISPLAY_FORMAT = %display_format;
+ return
+ wantarray ?
+ %DISPLAY_FORMAT :
+ $DISPLAY_FORMAT{style};
}
#
@@ -1195,12 +1216,12 @@ sub display_format {
#
sub stringify {
my ($z) = shift;
- my $format;
- $format = $display;
- $format = $z->{display} if defined $z->{display};
+ my $style = $z->display_format;
+
+ $style = $DISPLAY_FORMAT{style} unless defined $style;
- return $z->stringify_polar if $format =~ /^p/i;
+ return $z->stringify_polar if $style =~ /^p/i;
return $z->stringify_cartesian;
}
@@ -1220,17 +1241,27 @@ sub stringify_cartesian {
if int(CORE::abs($y)) != int(CORE::abs($y) + $eps);
$re = "$x" if CORE::abs($x) >= $eps;
- if ($y == 1) { $im = 'i' }
- elsif ($y == -1) { $im = '-i' }
- elsif (CORE::abs($y) >= $eps) { $im = $y . "i" }
+
+ my %format = $z->display_format;
+ my $format = $format{format};
+
+ if ($y == 1) { $im = 'i' }
+ elsif ($y == -1) { $im = '-i' }
+ elsif (CORE::abs($y) >= $eps) {
+ $im = (defined $format ? sprintf($format, $y) : $y) . "i";
+ }
my $str = '';
- $str = $re if defined $re;
- $str .= "+$im" if defined $im;
- $str =~ s/\+-/-/;
- $str =~ s/^\+//;
- $str =~ s/([-+])1i/$1i/; # Not redundant with the above 1/-1 tests.
- $str = '0' unless $str;
+ $str = defined $format ? sprintf($format, $re) : $re
+ if defined $re;
+ if (defined $im) {
+ if ($y < 0) {
+ $str .= $im;
+ } elsif ($y > 0) {
+ $str .= "+" if defined $re;
+ $str .= $im;
+ }
+ }
return $str;
}
@@ -1277,6 +1308,8 @@ sub stringify_polar {
return '[0,0]' if $r <= $eps;
+ my %format = $z->display_format;
+
my $nt = $t / pit2;
$nt = ($nt - int($nt)) * pit2;
$nt += pit2 if $nt < 0; # Range [0, 2pi]
@@ -1299,7 +1332,7 @@ sub stringify_polar {
$nt -= pit2 if $nt > pi;
- if (CORE::abs($nt) >= deg1) {
+ if ($format{polar_pretty_print} && CORE::abs($nt) >= deg1) {
my ($n, $k, $kpi);
for ($k = 1, $kpi = pi; $k < 10; $k++, $kpi += pi) {
@@ -1328,12 +1361,19 @@ sub stringify_polar {
if ($theta !~ m(^-?\d*pi/\d+$) and
int(CORE::abs($theta)) != int(CORE::abs($theta) + $eps));
+ my $format = $format{format};
+ if (defined $format) {
+ $r = sprintf($format, $r);
+ $theta = sprintf($format, $theta);
+ }
+
return "\[$r,$theta\]";
}
1;
__END__
+=pod
=head1 NAME
Math::Complex - complex numbers and associated mathematical functions
@@ -1617,9 +1657,9 @@ It is possible to write:
$x = cplxe(-3, pi/4);
-but that will be silently converted into C<[3,-3pi/4]>, since the modulus
-must be non-negative (it represents the distance to the origin in the complex
-plane).
+but that will be silently converted into C<[3,-3pi/4]>, since the
+modulus must be non-negative (it represents the distance to the origin
+in the complex plane).
It is also possible to have a complex number as either argument of
either the C<make> or C<emake>: the appropriate component of
@@ -1631,31 +1671,67 @@ the argument will be used.
=head1 STRINGIFICATION
When printed, a complex number is usually shown under its cartesian
-form I<a+bi>, but there are legitimate cases where the polar format
+style I<a+bi>, but there are legitimate cases where the polar style
I<[r,t]> is more appropriate.
-By calling the routine C<Math::Complex::display_format> and supplying either
-C<"polar"> or C<"cartesian">, you override the default display format,
-which is C<"cartesian">. Not supplying any argument returns the current
-setting.
+By calling the class method C<Math::Complex::display_format> and
+supplying either C<"polar"> or C<"cartesian"> as an argument, you
+override the default display style, which is C<"cartesian">. Not
+supplying any argument returns the current settings.
This default can be overridden on a per-number basis by calling the
C<display_format> method instead. As before, not supplying any argument
-returns the current display format for this number. Otherwise whatever you
-specify will be the new display format for I<this> particular number.
+returns the current display style for this number. Otherwise whatever you
+specify will be the new display style for I<this> particular number.
For instance:
use Math::Complex;
Math::Complex::display_format('polar');
- $j = ((root(1, 3))[1];
- print "j = $j\n"; # Prints "j = [1,2pi/3]
+ $j = (root(1, 3))[1];
+ print "j = $j\n"; # Prints "j = [1,2pi/3]"
$j->display_format('cartesian');
print "j = $j\n"; # Prints "j = -0.5+0.866025403784439i"
-The polar format attempts to emphasize arguments like I<k*pi/n>
-(where I<n> is a positive integer and I<k> an integer within [-9,+9]).
+The polar style attempts to emphasize arguments like I<k*pi/n>
+(where I<n> is a positive integer and I<k> an integer within [-9,+9]),
+this is called I<polar pretty-printing>.
+
+=head2 CHANGED IN PERL 5.6
+
+The C<display_format> class method and the corresponding
+C<display_format> object method can now be called using
+a parameter hash instead of just a one parameter.
+
+The old display format style, which can have values C<"cartesian"> or
+C<"polar">, can be changed using the C<"style"> parameter. (The one
+parameter calling convention also still works.)
+
+There are two new display parameters.
+
+The first one is C<"format">, which is a sprintf()-style format
+string to be used for both parts of the complex number(s). The
+default is C<undef>, which corresponds usually (this is somewhat
+system-dependent) to C<"%.15g">. You can revert to the default by
+setting the format string to C<undef>.
+
+ # the $j from the above example
+
+ $j->display_format('format' => '%.5f');
+ print "j = $j\n"; # Prints "j = -0.50000+0.86603i"
+ $j->display_format('format' => '%.6f');
+ print "j = $j\n"; # Prints "j = -0.5+0.86603i"
+
+Notice that this affects also the return values of the
+C<display_format> methods: in list context the whole parameter hash
+will be returned, as opposed to only the style parameter value. If
+you want to know the whole truth for a complex number, you must call
+both the class method and the object method:
+
+The second new display parameter is C<"polar_pretty_print">, which can
+be set to true or false, the default being true. See the previous
+section for what this means.
=head1 USAGE
@@ -1746,7 +1822,7 @@ Whatever it is, it does not manifest itself anywhere else where Perl runs.
=head1 AUTHORS
-Raphael Manfredi <F<Raphael_Manfredi@grenoble.hp.com>> and
+Raphael Manfredi <F<Raphael_Manfredi@pobox.com>> and
Jarkko Hietaniemi <F<jhi@iki.fi>>.
Extensive patches by Daniel S. Lewart <F<d-lewart@uiuc.edu>>.
diff --git a/contrib/perl5/lib/Math/Trig.pm b/contrib/perl5/lib/Math/Trig.pm
index 924286d..492706c 100644
--- a/contrib/perl5/lib/Math/Trig.pm
+++ b/contrib/perl5/lib/Math/Trig.pm
@@ -7,13 +7,12 @@
require Exporter;
package Math::Trig;
+use 5.005_64;
use strict;
use Math::Complex qw(:trig);
-use vars qw($VERSION $PACKAGE
- @ISA
- @EXPORT @EXPORT_OK %EXPORT_TAGS);
+our($VERSION, $PACKAGE, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
@ISA = qw(Exporter);
@@ -37,8 +36,8 @@ my @rdlcnv = qw(cartesian_to_cylindrical
%EXPORT_TAGS = ('radial' => [ @rdlcnv ]);
-use constant pi2 => 2 * pi;
-use constant pip2 => pi / 2;
+sub pi2 () { 2 * pi } # use constant generates warning
+sub pip2 () { pi / 2 } # use constant generates warning
use constant DR => pi2/360;
use constant RD => 360/pi2;
use constant DG => 400/360;
@@ -133,11 +132,11 @@ Math::Trig - trigonometric functions
=head1 SYNOPSIS
use Math::Trig;
-
+
$x = tan(0.9);
$y = acos(3.7);
$z = asin(2.4);
-
+
$halfpi = pi/2;
$rad = deg2rad(120);
@@ -259,7 +258,7 @@ complex numbers as results because the C<Math::Complex> takes care of
details like for example how to display complex numbers. For example:
print asin(2), "\n";
-
+
should produce something like this (take or leave few last decimals):
1.5707963267949-1.31695789692482i
@@ -273,10 +272,10 @@ and the imaginary part of approximately C<-1.317>.
$radians = deg2rad($degrees);
$radians = grad2rad($gradians);
-
+
$degrees = rad2deg($radians);
$degrees = grad2deg($gradians);
-
+
$gradians = deg2grad($degrees);
$gradians = rad2grad($radians);
@@ -409,7 +408,16 @@ To calculate the distance between London (51.3N 0.5W) and Tokyo (35.7N
$km = great_circle_distance(@L, @T, 6378);
The answer may be off by few percentages because of the irregular
-(slightly aspherical) form of the Earth.
+(slightly aspherical) form of the Earth. The used formula
+
+ lat0 = 90 degrees - phi0
+ lat1 = 90 degrees - phi1
+ d = R * arccos(cos(lat0) * cos(lat1) * cos(lon1 - lon01) +
+ sin(lat0) * sin(lat1))
+
+is also somewhat unreliable for small distances (for locations
+separated less than about five degrees) because it uses arc cosine
+which is rather ill-conditioned for values close to zero.
=head1 BUGS
@@ -426,7 +434,7 @@ an answer instead of giving a fatal runtime error.
=head1 AUTHORS
Jarkko Hietaniemi <F<jhi@iki.fi>> and
-Raphael Manfredi <F<Raphael_Manfredi@grenoble.hp.com>>.
+Raphael Manfredi <F<Raphael_Manfredi@pobox.com>>.
=cut
diff --git a/contrib/perl5/lib/Net/Ping.pm b/contrib/perl5/lib/Net/Ping.pm
index 495b82f..2713383 100644
--- a/contrib/perl5/lib/Net/Ping.pm
+++ b/contrib/perl5/lib/Net/Ping.pm
@@ -4,18 +4,17 @@ package Net::Ping;
#
# Authors of the original pingecho():
# karrer@bernina.ethz.ch (Andreas Karrer)
-# pmarquess@bfsec.bt.co.uk (Paul Marquess)
+# Paul.Marquess@btinternet.com (Paul Marquess)
#
# Copyright (c) 1996 Russell Mosemann. All rights reserved. This
# program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
-require 5.002;
+use 5.005_64;
require Exporter;
use strict;
-use vars qw(@ISA @EXPORT $VERSION
- $def_timeout $def_proto $max_datasize);
+our(@ISA, @EXPORT, $VERSION, $def_timeout, $def_proto, $max_datasize);
use FileHandle;
use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET
inet_aton sockaddr_in );
@@ -423,7 +422,7 @@ Net::Ping - check a remote host for reachability
sleep(1);
}
$p->close();
-
+
$p = Net::Ping->new("tcp", 2);
while ($stop_time > time())
{
@@ -432,7 +431,7 @@ Net::Ping - check a remote host for reachability
sleep(300);
}
undef($p);
-
+
# For backward compatibility
print "$host is alive.\n" if pingecho($host);
diff --git a/contrib/perl5/lib/Net/hostent.pm b/contrib/perl5/lib/Net/hostent.pm
index d586358..6cfde72 100644
--- a/contrib/perl5/lib/Net/hostent.pm
+++ b/contrib/perl5/lib/Net/hostent.pm
@@ -1,9 +1,10 @@
package Net::hostent;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(gethostbyname gethostbyaddr gethost);
@EXPORT_OK = qw(
$h_name @h_aliases
diff --git a/contrib/perl5/lib/Net/netent.pm b/contrib/perl5/lib/Net/netent.pm
index fbc6d98..b21cd04 100644
--- a/contrib/perl5/lib/Net/netent.pm
+++ b/contrib/perl5/lib/Net/netent.pm
@@ -1,9 +1,10 @@
package Net::netent;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(getnetbyname getnetbyaddr getnet);
@EXPORT_OK = qw(
$n_name @n_aliases
@@ -119,26 +120,26 @@ This seems a bug, but here's how to deal with it:
use strict;
use Socket;
use Net::netent;
-
+
@ARGV = ('loopback') unless @ARGV;
-
+
my($n, $net);
-
+
for $net ( @ARGV ) {
-
+
unless ($n = getnetbyname($net)) {
warn "$0: no such net: $net\n";
next;
}
-
+
printf "\n%s is %s%s\n",
$net,
lc($n->name) eq lc($net) ? "" : "*really* ",
$n->name;
-
+
print "\taliases are ", join(", ", @{$n->aliases}), "\n"
if @{$n->aliases};
-
+
# this is stupid; first, why is this not in binary?
# second, why am i going through these convolutions
# to make it looks right
@@ -147,7 +148,7 @@ This seems a bug, but here's how to deal with it:
shift @a while @a && $a[0] == 0;
printf "\taddr is %s [%d.%d.%d.%d]\n", $n->net, @a;
}
-
+
if ($n = getnetbyaddr($n->net)) {
if (lc($n->name) ne lc($net)) {
printf "\tThat addr reverses to net %s!\n", $n->name;
diff --git a/contrib/perl5/lib/Net/protoent.pm b/contrib/perl5/lib/Net/protoent.pm
index 737ff5a..334af78 100644
--- a/contrib/perl5/lib/Net/protoent.pm
+++ b/contrib/perl5/lib/Net/protoent.pm
@@ -1,9 +1,10 @@
package Net::protoent;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(getprotobyname getprotobynumber getprotoent);
@EXPORT_OK = qw( $p_name @p_aliases $p_proto );
%EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
diff --git a/contrib/perl5/lib/Net/servent.pm b/contrib/perl5/lib/Net/servent.pm
index fb85dd0..c892af0 100644
--- a/contrib/perl5/lib/Net/servent.pm
+++ b/contrib/perl5/lib/Net/servent.pm
@@ -1,9 +1,10 @@
package Net::servent;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(getservbyname getservbyport getservent getserv);
@EXPORT_OK = qw( $s_name @s_aliases $s_port $s_proto );
%EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
diff --git a/contrib/perl5/lib/Pod/Checker.pm b/contrib/perl5/lib/Pod/Checker.pm
new file mode 100644
index 0000000..ae32677
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Checker.pm
@@ -0,0 +1,1195 @@
+#############################################################################
+# Pod/Checker.pm -- check pod documents for syntax errors
+#
+# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Checker;
+
+use vars qw($VERSION);
+$VERSION = 1.098; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+use Pod::ParseUtils; ## for hyperlinks and lists
+
+=head1 NAME
+
+Pod::Checker, podchecker() - check pod documents for syntax errors
+
+=head1 SYNOPSIS
+
+ use Pod::Checker;
+
+ $syntax_okay = podchecker($filepath, $outputpath, %options);
+
+ my $checker = new Pod::Checker %options;
+ $checker->parse_from_file($filepath, \*STDERR);
+
+=head1 OPTIONS/ARGUMENTS
+
+C<$filepath> is the input POD to read and C<$outputpath> is
+where to write POD syntax error messages. Either argument may be a scalar
+indicating a file-path, or else a reference to an open filehandle.
+If unspecified, the input-file it defaults to C<\*STDIN>, and
+the output-file defaults to C<\*STDERR>.
+
+=head2 podchecker()
+
+This function can take a hash of options:
+
+=over 4
+
+=item B<-warnings> =E<gt> I<val>
+
+Turn warnings on/off. See L<"Warnings">.
+
+=back
+
+=head1 DESCRIPTION
+
+B<podchecker> will perform syntax checking of Perl5 POD format documentation.
+
+I<NOTE THAT THIS MODULE IS CURRENTLY IN THE BETA STAGE!>
+
+It is hoped that curious/ambitious user will help flesh out and add the
+additional features they wish to see in B<Pod::Checker> and B<podchecker>
+and verify that the checks are consistent with L<perlpod>.
+
+The following checks are currently preformed:
+
+=over 4
+
+=item *
+
+Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences,
+and unterminated interior sequences.
+
+=item *
+
+Check for proper balancing of C<=begin> and C<=end>. The contents of such
+a block are generally ignored, i.e. no syntax checks are performed.
+
+=item *
+
+Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>.
+
+=item *
+
+Check for same nested interior-sequences (e.g.
+C<LE<lt>...LE<lt>...E<gt>...E<gt>>).
+
+=item *
+
+Check for malformed or nonexisting entities C<EE<lt>...E<gt>>.
+
+=item *
+
+Check for correct syntax of hyperlinks C<LE<lt>...E<gt>>. See L<perlpod>
+for details.
+
+=item *
+
+Check for unresolved document-internal links. This check may also reveal
+misspelled links that seem to be internal links but should be links
+to something else.
+
+=back
+
+=head1 DIAGNOSTICS
+
+=head2 Errors
+
+=over 4
+
+=item * empty =headn
+
+A heading (C<=head1> or C<=head2>) without any text? That ain't no
+heading!
+
+=item * =over on line I<N> without closing =back
+
+The C<=over> command does not have a corresponding C<=back> before the
+next heading (C<=head1> or C<=head2>) or the end of the file.
+
+=item * =item without previous =over
+
+=item * =back without previous =over
+
+An C<=item> or C<=back> command has been found outside a
+C<=over>/C<=back> block.
+
+=item * No argument for =begin
+
+A C<=begin> command was found that is not followed by the formatter
+specification.
+
+=item * =end without =begin
+
+A standalone C<=end> command was found.
+
+=item * Nested =begin's
+
+There were at least two consecutive C<=begin> commands without
+the corresponding C<=end>. Only one C<=begin> may be active at
+a time.
+
+=item * =for without formatter specification
+
+There is no specification of the formatter after the C<=for> command.
+
+=item * unresolved internal link I<NAME>
+
+The given link to I<NAME> does not have a matching node in the current
+POD. This also happend when a single word node name is not enclosed in
+C<"">.
+
+=item * Unknown command "I<CMD>"
+
+An invalid POD command has been found. Valid are C<=head1>, C<=head2>,
+C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>, C<=for>, C<=pod>,
+C<=cut>
+
+=item * Unknown interior-sequence "I<SEQ>"
+
+An invalid markup command has been encountered. Valid are:
+C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>,
+C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>,
+C<ZE<lt>E<gt>>
+
+=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>
+
+Two nested identical markup commands have been found. Generally this
+does not make sense.
+
+=item * garbled entity I<STRING>
+
+The I<STRING> found cannot be interpreted as a character entity.
+
+=item * Entity number out of range
+
+An entity specified by number (dec, hex, oct) is out of range (1-255).
+
+=item * malformed link LE<lt>E<gt>
+
+The link found cannot be parsed because it does not conform to the
+syntax described in L<perlpod>.
+
+=item * nonempty ZE<lt>E<gt>
+
+The C<ZE<lt>E<gt>> sequence is supposed to be empty.
+
+=item * empty XE<lt>E<gt>
+
+The index entry specified contains nothing but whitespace.
+
+=item * Spurious text after =pod / =cut
+
+The commands C<=pod> and C<=cut> do not take any arguments.
+
+=item * Spurious character(s) after =back
+
+The C<=back> command does not take any arguments.
+
+=back
+
+=head2 Warnings
+
+These may not necessarily cause trouble, but indicate mediocre style.
+
+=over 4
+
+=item * multiple occurence of link target I<name>
+
+The POD file has some C<=item> and/or C<=head> commands that have
+the same text. Potential hyperlinks to such a text cannot be unique then.
+
+=item * line containing nothing but whitespace in paragraph
+
+There is some whitespace on a seemingly empty line. POD is very sensitive
+to such things, so this is flagged. B<vi> users switch on the B<list>
+option to avoid this problem.
+
+=item * file does not start with =head
+
+The file starts with a different POD directive than head.
+This is most probably something you do not want.
+
+=item * No numeric argument for =over
+
+The C<=over> command is supposed to have a numeric argument (the
+indentation).
+
+=item * previous =item has no contents
+
+There is a list C<=item> right above the flagged line that has no
+text contents. You probably want to delete empty items.
+
+=item * preceding non-item paragraph(s)
+
+A list introduced by C<=over> starts with a text or verbatim paragraph,
+but continues with C<=item>s. Move the non-item paragraph out of the
+C<=over>/C<=back> block.
+
+=item * =item type mismatch (I<one> vs. I<two>)
+
+A list started with e.g. a bulletted C<=item> and continued with a
+numbered one. This is obviously inconsistent. For most translators the
+type of the I<first> C<=item> determines the type of the list.
+
+=item * I<N> unescaped C<E<lt>E<gt>> in paragraph
+
+Angle brackets not written as C<E<lt>ltE<gt>> and C<E<lt>gtE<gt>>
+can potentially cause errors as they could be misinterpreted as
+markup commands.
+
+=item * Unknown entity
+
+A character entity was found that does not belong to the standard
+ISO set or the POD specials C<verbar> and C<sol>.
+
+=item * No items in =over
+
+The list opened with C<=over> does not contain any items.
+
+=item * No argument for =item
+
+C<=item> without any parameters is deprecated. It should either be followed
+by C<*> to indicate an unordered list, by a number (optionally followed
+by a dot) to indicate an ordered (numbered) list or simple text for a
+definition list.
+
+=item * empty section in previous paragraph
+
+The previous section (introduced by a C<=head> command) does not contain
+any text. This usually indicates that something is missing. Note: A
+C<=head1> followed immediately by C<=head2> does not trigger this warning.
+
+=item * Verbatim paragraph in NAME section
+
+The NAME section (C<=head1 NAME>) should consist of a single paragraph
+with the script/module name, followed by a dash `-' and a very short
+description of what the thing is good for.
+
+=item * Hyperlinks
+
+There are some warnings wrt. hyperlinks:
+Leading/trailing whitespace, newlines in hyperlinks,
+brackets C<()>.
+
+=back
+
+=head1 RETURN VALUE
+
+B<podchecker> returns the number of POD syntax errors found or -1 if
+there were no POD commands at all found in the file.
+
+=head1 EXAMPLES
+
+I<[T.B.D.]>
+
+=head1 INTERFACE
+
+While checking, this module collects document properties, e.g. the nodes
+for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>).
+POD translators can use this feature to syntax-check and get the nodes in
+a first pass before actually starting to convert. This is expensive in terms
+of execution time, but allows for very robust conversions.
+
+=cut
+
+#############################################################################
+
+use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use Pod::Parser;
+require VMS::Filespec if $^O eq 'VMS';
+
+use vars qw(@ISA @EXPORT);
+@ISA = qw(Pod::Parser);
+@EXPORT = qw(&podchecker);
+
+use vars qw(%VALID_COMMANDS %VALID_SEQUENCES);
+
+my %VALID_COMMANDS = (
+ 'pod' => 1,
+ 'cut' => 1,
+ 'head1' => 1,
+ 'head2' => 1,
+ 'over' => 1,
+ 'back' => 1,
+ 'item' => 1,
+ 'for' => 1,
+ 'begin' => 1,
+ 'end' => 1,
+);
+
+my %VALID_SEQUENCES = (
+ 'I' => 1,
+ 'B' => 1,
+ 'S' => 1,
+ 'C' => 1,
+ 'L' => 1,
+ 'F' => 1,
+ 'X' => 1,
+ 'Z' => 1,
+ 'E' => 1,
+);
+
+# stolen from HTML::Entities
+my %ENTITIES = (
+ # Some normal chars that have special meaning in SGML context
+ amp => '&', # ampersand
+'gt' => '>', # greater than
+'lt' => '<', # less than
+ quot => '"', # double quote
+
+ # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML
+ AElig => 'Æ', # capital AE diphthong (ligature)
+ Aacute => 'Á', # capital A, acute accent
+ Acirc => 'Â', # capital A, circumflex accent
+ Agrave => 'À', # capital A, grave accent
+ Aring => 'Å', # capital A, ring
+ Atilde => 'Ã', # capital A, tilde
+ Auml => 'Ä', # capital A, dieresis or umlaut mark
+ Ccedil => 'Ç', # capital C, cedilla
+ ETH => 'Ð', # capital Eth, Icelandic
+ Eacute => 'É', # capital E, acute accent
+ Ecirc => 'Ê', # capital E, circumflex accent
+ Egrave => 'È', # capital E, grave accent
+ Euml => 'Ë', # capital E, dieresis or umlaut mark
+ Iacute => 'Í', # capital I, acute accent
+ Icirc => 'Î', # capital I, circumflex accent
+ Igrave => 'Ì', # capital I, grave accent
+ Iuml => 'Ï', # capital I, dieresis or umlaut mark
+ Ntilde => 'Ñ', # capital N, tilde
+ Oacute => 'Ó', # capital O, acute accent
+ Ocirc => 'Ô', # capital O, circumflex accent
+ Ograve => 'Ò', # capital O, grave accent
+ Oslash => 'Ø', # capital O, slash
+ Otilde => 'Õ', # capital O, tilde
+ Ouml => 'Ö', # capital O, dieresis or umlaut mark
+ THORN => 'Þ', # capital THORN, Icelandic
+ Uacute => 'Ú', # capital U, acute accent
+ Ucirc => 'Û', # capital U, circumflex accent
+ Ugrave => 'Ù', # capital U, grave accent
+ Uuml => 'Ü', # capital U, dieresis or umlaut mark
+ Yacute => 'Ý', # capital Y, acute accent
+ aacute => 'á', # small a, acute accent
+ acirc => 'â', # small a, circumflex accent
+ aelig => 'æ', # small ae diphthong (ligature)
+ agrave => 'à', # small a, grave accent
+ aring => 'å', # small a, ring
+ atilde => 'ã', # small a, tilde
+ auml => 'ä', # small a, dieresis or umlaut mark
+ ccedil => 'ç', # small c, cedilla
+ eacute => 'é', # small e, acute accent
+ ecirc => 'ê', # small e, circumflex accent
+ egrave => 'è', # small e, grave accent
+ eth => 'ð', # small eth, Icelandic
+ euml => 'ë', # small e, dieresis or umlaut mark
+ iacute => 'í', # small i, acute accent
+ icirc => 'î', # small i, circumflex accent
+ igrave => 'ì', # small i, grave accent
+ iuml => 'ï', # small i, dieresis or umlaut mark
+ ntilde => 'ñ', # small n, tilde
+ oacute => 'ó', # small o, acute accent
+ ocirc => 'ô', # small o, circumflex accent
+ ograve => 'ò', # small o, grave accent
+ oslash => 'ø', # small o, slash
+ otilde => 'õ', # small o, tilde
+ ouml => 'ö', # small o, dieresis or umlaut mark
+ szlig => 'ß', # small sharp s, German (sz ligature)
+ thorn => 'þ', # small thorn, Icelandic
+ uacute => 'ú', # small u, acute accent
+ ucirc => 'û', # small u, circumflex accent
+ ugrave => 'ù', # small u, grave accent
+ uuml => 'ü', # small u, dieresis or umlaut mark
+ yacute => 'ý', # small y, acute accent
+ yuml => 'ÿ', # small y, dieresis or umlaut mark
+
+ # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96)
+ copy => '©', # copyright sign
+ reg => '®', # registered sign
+ nbsp => "\240", # non breaking space
+
+ # Additional ISO-8859/1 entities listed in rfc1866 (section 14)
+ iexcl => '¡',
+ cent => '¢',
+ pound => '£',
+ curren => '¤',
+ yen => '¥',
+ brvbar => '¦',
+ sect => '§',
+ uml => '¨',
+ ordf => 'ª',
+ laquo => '«',
+'not' => '¬', # not is a keyword in perl
+ shy => '­',
+ macr => '¯',
+ deg => '°',
+ plusmn => '±',
+ sup1 => '¹',
+ sup2 => '²',
+ sup3 => '³',
+ acute => '´',
+ micro => 'µ',
+ para => '¶',
+ middot => '·',
+ cedil => '¸',
+ ordm => 'º',
+ raquo => '»',
+ frac14 => '¼',
+ frac12 => '½',
+ frac34 => '¾',
+ iquest => '¿',
+'times' => '×', # times is a keyword in perl
+ divide => '÷',
+
+# some POD special entities
+ verbar => '|',
+ sol => '/'
+);
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub podchecker( $ ; $ % ) {
+ my ($infile, $outfile, %options) = @_;
+ local $_;
+
+ ## Set defaults
+ $infile ||= \*STDIN;
+ $outfile ||= \*STDERR;
+
+ ## Now create a pod checker
+ my $checker = new Pod::Checker(%options);
+ $checker->parseopts(-process_cut_cmd => 1, -warnings => 1);
+
+ ## Now check the pod document for errors
+ $checker->parse_from_file($infile, $outfile);
+
+ ## Return the number of errors found
+ return $checker->num_errors();
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+## sub new {
+## my $this = shift;
+## my $class = ref($this) || $this;
+## my %params = @_;
+## my $self = {%params};
+## bless $self, $class;
+## $self->initialize();
+## return $self;
+## }
+
+sub initialize {
+ my $self = shift;
+ ## Initialize number of errors, and setup an error function to
+ ## increment this number and then print to the designated output.
+ $self->{_NUM_ERRORS} = 0;
+ $self->errorsub('poderror'); # set the error handling subroutine
+ $self->{_commands} = 0; # total number of POD commands encountered
+ $self->{_list_stack} = []; # stack for nested lists
+ $self->{_have_begin} = ''; # stores =begin
+ $self->{_links} = []; # stack for internal hyperlinks
+ $self->{_nodes} = []; # stack for =head/=item nodes
+ $self->{_index} = []; # text in X<>
+ # print warnings?
+ $self->{-warnings} = 1 unless(defined $self->{-warnings});
+ $self->{_current_head1} = ''; # the current =head1 block
+}
+
+##################################
+
+=over 4
+
+=item C<$checker-E<gt>poderror( @args )>
+
+=item C<$checker-E<gt>poderror( {%opts}, @args )>
+
+Internal method for printing errors and warnings. If no options are
+given, simply prints "@_". The following options are recognized and used
+to form the output:
+
+ -msg
+
+A message to print prior to C<@args>.
+
+ -line
+
+The line number the error occurred in.
+
+ -file
+
+The file (name) the error occurred in.
+
+ -severity
+
+The error level, should be 'WARNING' or 'ERROR'.
+
+=cut
+
+# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args )
+sub poderror {
+ my $self = shift;
+ my %opts = (ref $_[0]) ? %{shift()} : ();
+ $opts{-file} = VMS::Filespec::unixify($opts{-file}) if (exists($opts{-file}) && $^O eq 'VMS');
+
+ ## Retrieve options
+ chomp( my $msg = ($opts{-msg} || "")."@_" );
+ my $line = (exists $opts{-line}) ? " at line $opts{-line}" : "";
+ my $file = (exists $opts{-file}) ? " in file $opts{-file}" : "";
+ unless (exists $opts{-severity}) {
+ ## See if can find severity in message prefix
+ $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// );
+ }
+ my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : "";
+
+ ## Increment error count and print message "
+ ++($self->{_NUM_ERRORS})
+ if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR'));
+ my $out_fh = $self->output_handle();
+ print $out_fh ($severity, $msg, $line, $file, "\n")
+ if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING');
+}
+
+##################################
+
+=item C<$checker-E<gt>num_errors()>
+
+Set (if argument specified) and retrieve the number of errors found.
+
+=cut
+
+sub num_errors {
+ return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS};
+}
+
+##################################
+
+=item C<$checker-E<gt>name()>
+
+Set (if argument specified) and retrieve the canonical name of POD as
+found in the C<=head1 NAME> section.
+
+=cut
+
+sub name {
+ return (@_ > 1 && $_[1]) ?
+ ($_[0]->{-name} = $_[1]) : $_[0]->{-name};
+}
+
+##################################
+
+=item C<$checker-E<gt>node()>
+
+Add (if argument specified) and retrieve the nodes (as defined by C<=headX>
+and C<=item>) of the current POD. The nodes are returned in the order of
+their occurence. They consist of plain text, each piece of whitespace is
+collapsed to a single blank.
+
+=cut
+
+sub node {
+ my ($self,$text) = @_;
+ if(defined $text) {
+ $text =~ s/\s+$//s; # strip trailing whitespace
+ $text =~ s/\s+/ /gs; # collapse whitespace
+ # add node, order important!
+ push(@{$self->{_nodes}}, $text);
+ # keep also a uniqueness counter
+ $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+ return $text;
+ }
+ @{$self->{_nodes}};
+}
+
+##################################
+
+=item C<$checker-E<gt>idx()>
+
+Add (if argument specified) and retrieve the index entries (as defined by
+C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece
+of whitespace is collapsed to a single blank.
+
+=cut
+
+# set/return index entries of current POD
+sub idx {
+ my ($self,$text) = @_;
+ if(defined $text) {
+ $text =~ s/\s+$//s; # strip trailing whitespace
+ $text =~ s/\s+/ /gs; # collapse whitespace
+ # add node, order important!
+ push(@{$self->{_index}}, $text);
+ # keep also a uniqueness counter
+ $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+ return $text;
+ }
+ @{$self->{_index}};
+}
+
+##################################
+
+=item C<$checker-E<gt>hyperlink()>
+
+Add (if argument specified) and retrieve the hyperlinks (as defined by
+C<LE<lt>E<gt>>) of the current POD. They consist of an 2-item array: line
+number and C<Pod::Hyperlink> object.
+
+=back
+
+=cut
+
+# set/return hyperlinks of the current POD
+sub hyperlink {
+ my $self = shift;
+ if($_[0]) {
+ push(@{$self->{_links}}, $_[0]);
+ return $_[0];
+ }
+ @{$self->{_links}};
+}
+
+## overrides for Pod::Parser
+
+sub end_pod {
+ ## Do some final checks and
+ ## print the number of errors found
+ my $self = shift;
+ my $infile = $self->input_file();
+ $infile = VMS::Filespec::unixify($infile) if $^O eq 'VMS';
+ my $out_fh = $self->output_handle();
+
+ if(@{$self->{_list_stack}}) {
+ # _TODO_ display, but don't count them for now
+ my $list;
+ while(($list = $self->_close_list('EOF',$infile)) &&
+ $list->indent() ne 'auto') {
+ $self->poderror({ -line => 'EOF', -file => $infile,
+ -severity => 'ERROR', -msg => "=over on line " .
+ $list->start() . " without closing =back" }); #"
+ }
+ }
+
+ # check validity of document internal hyperlinks
+ # first build the node names from the paragraph text
+ my %nodes;
+ foreach($self->node()) {
+ $nodes{$_} = 1;
+ if(/^(\S+)\s+/) {
+ # we have more than one word. Use the first as a node, too.
+ # This is used heavily in perlfunc.pod
+ $nodes{$1} ||= 2; # derived node
+ }
+ }
+ foreach($self->hyperlink()) {
+ my ($line,$link) = @$_;
+ # _TODO_ what if there is a link to the page itself by the name,
+ # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION">
+ if($link->node() && !$link->page() && $link->type() ne 'hyperlink') {
+ my $node = $self->_check_ptree($self->parse_text($link->node(),
+ $line), $line, $infile, 'L');
+ if($node && !$nodes{$node}) {
+ $self->poderror({ -line => $line || '', -file => $infile,
+ -severity => 'ERROR',
+ -msg => "unresolved internal link '$node'"});
+ }
+ }
+ }
+
+ # check the internal nodes for uniqueness. This pertains to
+ # =headX, =item and X<...>
+ foreach(grep($self->{_unique_nodes}->{$_} > 1,
+ keys %{$self->{_unique_nodes}})) {
+ $self->poderror({ -line => '-', -file => $infile,
+ -severity => 'WARNING',
+ -msg => "multiple occurence of link target '$_'"});
+ }
+
+ ## Print the number of errors found
+ my $num_errors = $self->num_errors();
+ if ($num_errors > 0) {
+ printf $out_fh ("$infile has $num_errors pod syntax %s.\n",
+ ($num_errors == 1) ? "error" : "errors");
+ }
+ elsif($self->{_commands} == 0) {
+ print $out_fh "$infile does not contain any pod commands.\n";
+ $self->num_errors(-1);
+ }
+ else {
+ print $out_fh "$infile pod syntax OK.\n";
+ }
+}
+
+# check a POD command directive
+sub command {
+ my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
+ my ($file, $line) = $pod_para->file_line;
+ ## Check the command syntax
+ my $arg; # this will hold the command argument
+ if (! $VALID_COMMANDS{$cmd}) {
+ $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR',
+ -msg => "Unknown command '$cmd'" });
+ }
+ else {
+ # found a valid command
+ if(!$self->{_commands}++ && $cmd !~ /^head/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "file does not start with =head" });
+ }
+ ## check syntax of particular command
+ if($cmd eq 'over') {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ my $indent = 4; # default
+ if($arg && $arg =~ /^\s*(\d+)\s*$/) {
+ $indent = $1;
+ } else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "No numeric argument for =over"});
+ }
+ # start a new list
+ $self->_open_list($indent,$line,$file);
+ }
+ elsif($cmd eq 'item') {
+ # are we in a list?
+ unless(@{$self->{_list_stack}}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "=item without previous =over" });
+ # auto-open in case we encounter many more
+ $self->_open_list('auto',$line,$file);
+ }
+ my $list = $self->{_list_stack}->[0];
+ # check whether the previous item had some contents
+ if(defined $self->{_list_item_contents} &&
+ $self->{_list_item_contents} == 0) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "previous =item has no contents" });
+ }
+ if($list->{_has_par}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "preceding non-item paragraph(s)" });
+ delete $list->{_has_par};
+ }
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line, $file);
+ if($arg && $arg =~ /(\S+)/) {
+ $arg =~ s/[\s\n]+$//;
+ my $type;
+ if($arg =~ /^[*]\s*(\S*.*)/) {
+ $type = 'bullet';
+ $self->{_list_item_contents} = $1 ? 1 : 0;
+ $arg = $1;
+ }
+ elsif($arg =~ /^\d+\.?\s*(\S*)/) {
+ $type = 'number';
+ $self->{_list_item_contents} = $1 ? 1 : 0;
+ $arg = $1;
+ }
+ else {
+ $type = 'definition';
+ $self->{_list_item_contents} = 1;
+ }
+ my $first = $list->type();
+ if($first && $first ne $type) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "=item type mismatch ('$first' vs. '$type')"});
+ }
+ else { # first item
+ $list->type($type);
+ }
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "No argument for =item" });
+ $arg = ' '; # empty
+ $self->{_list_item_contents} = 0;
+ }
+ # add this item
+ $list->item($arg);
+ # remember this node
+ $self->node($arg);
+ }
+ elsif($cmd eq 'back') {
+ # check if we have an open list
+ unless(@{$self->{_list_stack}}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "=back without previous =over" });
+ }
+ else {
+ # check for spurious characters
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ if($arg && $arg =~ /\S/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Spurious character(s) after =back" });
+ }
+ # close list
+ my $list = $self->_close_list($line,$file);
+ # check for empty lists
+ if(!$list->item() && $self->{-warnings}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "No items in =over (at line " .
+ $list->start() . ") / =back list"}); #"
+ }
+ }
+ }
+ elsif($cmd =~ /^head(\d+)/) {
+ # check whether the previous =head section had some contents
+ if(defined $self->{_commands_in_head} &&
+ $self->{_commands_in_head} == 0 &&
+ defined $self->{_last_head} &&
+ $self->{_last_head} >= $1) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "empty section in previous paragraph"});
+ }
+ $self->{_commands_in_head} = -1;
+ $self->{_last_head} = $1;
+ # check if there is an open list
+ if(@{$self->{_list_stack}}) {
+ my $list;
+ while(($list = $self->_close_list($line,$file)) &&
+ $list->indent() ne 'auto') {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "=over on line ". $list->start() .
+ " without closing =back (at $cmd)" });
+ }
+ }
+ # remember this node
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ $arg =~ s/[\s\n]+$//s;
+ $self->node($arg);
+ unless(length($arg)) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "empty =$cmd"});
+ }
+ if($cmd eq 'head1') {
+ $self->{_current_head1} = $arg;
+ } else {
+ $self->{_current_head1} = '';
+ }
+ }
+ elsif($cmd eq 'begin') {
+ if($self->{_have_begin}) {
+ # already have a begin
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Nested =begin's (first at line " .
+ $self->{_have_begin} . ")"});
+ }
+ else {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ unless($arg && $arg =~ /(\S+)/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "No argument for =begin"});
+ }
+ # remember the =begin
+ $self->{_have_begin} = "$line:$1";
+ }
+ }
+ elsif($cmd eq 'end') {
+ if($self->{_have_begin}) {
+ # close the existing =begin
+ $self->{_have_begin} = '';
+ # check for spurious characters
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ # the closing argument is optional
+ #if($arg && $arg =~ /\S/) {
+ # $self->poderror({ -line => $line, -file => $file,
+ # -severity => 'WARNING',
+ # -msg => "Spurious character(s) after =end" });
+ #}
+ }
+ else {
+ # don't have a matching =begin
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "=end without =begin" });
+ }
+ }
+ elsif($cmd eq 'for') {
+ unless($paragraph =~ /\s*(\S+)\s*/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "=for without formatter specification" });
+ }
+ $arg = ''; # do not expand paragraph below
+ }
+ elsif($cmd =~ /^(pod|cut)$/) {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ if($arg && $arg =~ /(\S+)/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Spurious text after =$cmd"});
+ }
+ }
+ $self->{_commands_in_head}++;
+ ## Check the interior sequences in the command-text
+ $self->interpolate_and_check($paragraph, $line,$file)
+ unless(defined $arg);
+ }
+}
+
+sub _open_list
+{
+ my ($self,$indent,$line,$file) = @_;
+ my $list = Pod::List->new(
+ -indent => $indent,
+ -start => $line,
+ -file => $file);
+ unshift(@{$self->{_list_stack}}, $list);
+ undef $self->{_list_item_contents};
+ $list;
+}
+
+sub _close_list
+{
+ my ($self,$line,$file) = @_;
+ my $list = shift(@{$self->{_list_stack}});
+ if(defined $self->{_list_item_contents} &&
+ $self->{_list_item_contents} == 0) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "previous =item has no contents" });
+ }
+ undef $self->{_list_item_contents};
+ $list;
+}
+
+# process a block of some text
+sub interpolate_and_check {
+ my ($self, $paragraph, $line, $file) = @_;
+ ## Check the interior sequences in the command-text
+ # and return the text
+ $self->_check_ptree(
+ $self->parse_text($paragraph,$line), $line, $file, '');
+}
+
+sub _check_ptree {
+ my ($self,$ptree,$line,$file,$nestlist) = @_;
+ local($_);
+ my $text = '';
+ # process each node in the parse tree
+ foreach(@$ptree) {
+ # regular text chunk
+ unless(ref) {
+ my $count;
+ # count the unescaped angle brackets
+ my $i = $_;
+ if($count = $i =~ tr/<>/<>/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "$count unescaped <> in paragraph" })
+ if($self->{-warnings});
+ }
+ $text .= $i;
+ next;
+ }
+ # have an interior sequence
+ my $cmd = $_->cmd_name();
+ my $contents = $_->parse_tree();
+ ($file,$line) = $_->file_line();
+ # check for valid tag
+ if (! $VALID_SEQUENCES{$cmd}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => qq(Unknown interior-sequence '$cmd')});
+ # expand it anyway
+ $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ next;
+ }
+ if($nestlist =~ /$cmd/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "nested commands $cmd<...$cmd<...>...>"});
+ # _TODO_ should we add the contents anyway?
+ # expand it anyway, see below
+ }
+ if($cmd eq 'E') {
+ # preserve entities
+ if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "garbled entity " . $_->raw_text()});
+ next;
+ }
+ my $ent = $$contents[0];
+ my $val;
+ if($ent =~ /^0x[0-9a-f]+$/i) {
+ # hexadec entity
+ $val = hex($ent);
+ }
+ elsif($ent =~ /^0\d+$/) {
+ # octal
+ $val = oct($ent);
+ }
+ elsif($ent =~ /^\d+$/) {
+ # numeric entity
+ $val = $ent;
+ }
+ if(defined $val) {
+ if($val>0 && $val<256) {
+ $text .= chr($val);
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Entity number out of range " . $_->raw_text()});
+ }
+ }
+ elsif($ENTITIES{$ent}) {
+ # known ISO entity
+ $text .= $ENTITIES{$ent};
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "Unknown entity " . $_->raw_text()});
+ $text .= "E<$ent>";
+ }
+ }
+ elsif($cmd eq 'L') {
+ # try to parse the hyperlink
+ my $link = Pod::Hyperlink->new($contents->raw_text());
+ unless(defined $link) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "malformed link " . $_->raw_text() ." : $@"});
+ next;
+ }
+ $link->line($line); # remember line
+ if($self->{-warnings}) {
+ foreach my $w ($link->warning()) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => $w });
+ }
+ }
+ # check the link text
+ $text .= $self->_check_ptree($self->parse_text($link->text(),
+ $line), $line, $file, "$nestlist$cmd");
+ # remember link
+ $self->hyperlink([$line,$link]);
+ }
+ elsif($cmd =~ /[BCFIS]/) {
+ # add the guts
+ $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ }
+ elsif($cmd eq 'Z') {
+ if(length($contents->raw_text())) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Nonempty Z<>"});
+ }
+ }
+ elsif($cmd eq 'X') {
+ my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ if($idx =~ /^\s*$/s) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Empty X<>"});
+ }
+ else {
+ # remember this node
+ $self->idx($idx);
+ }
+ }
+ else {
+ # not reached
+ die "internal error";
+ }
+ }
+ $text;
+}
+
+# process a block of verbatim text
+sub verbatim {
+ ## Nothing particular to check
+ my ($self, $paragraph, $line_num, $pod_para) = @_;
+
+ $self->_preproc_par($paragraph);
+
+ if($self->{_current_head1} eq 'NAME') {
+ my ($file, $line) = $pod_para->file_line;
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'Verbatim paragraph in NAME section' });
+ }
+}
+
+# process a block of regular text
+sub textblock {
+ my ($self, $paragraph, $line_num, $pod_para) = @_;
+ my ($file, $line) = $pod_para->file_line;
+
+ $self->_preproc_par($paragraph);
+
+ # skip this paragraph if in a =begin block
+ unless($self->{_have_begin}) {
+ my $block = $self->interpolate_and_check($paragraph, $line,$file);
+ if($self->{_current_head1} eq 'NAME') {
+ if($block =~ /^\s*(\S+?)\s*[,-]/) {
+ # this is the canonical name
+ $self->{-name} = $1 unless(defined $self->{-name});
+ }
+ }
+ }
+}
+
+sub _preproc_par
+{
+ my $self = shift;
+ $_[0] =~ s/[\s\n]+$//;
+ if($_[0]) {
+ $self->{_commands_in_head}++;
+ $self->{_list_item_contents}++ if(defined $self->{_list_item_contents});
+ if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) {
+ $self->{_list_stack}->[0]->{_has_par} = 1;
+ }
+ }
+}
+
+1;
+
+__END__
+
+=head1 AUTHOR
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt> (initial version),
+Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
diff --git a/contrib/perl5/lib/Pod/Find.pm b/contrib/perl5/lib/Pod/Find.pm
new file mode 100644
index 0000000..8de197b
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Find.pm
@@ -0,0 +1,278 @@
+#############################################################################
+# Pod/Find.pm -- finds files containing POD documentation
+#
+# Author: Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de>
+#
+# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code
+# from Nick Ing-Simmon's PodToHtml). All rights reserved.
+# This file is part of "PodParser". Pod::Find is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Find;
+
+use vars qw($VERSION);
+$VERSION = 0.12; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::Find - find POD documents in directory trees
+
+=head1 SYNOPSIS
+
+ use Pod::Find qw(pod_find simplify_name);
+ my %pods = pod_find({ -verbose => 1, -inc => 1 });
+ foreach(keys %pods) {
+ print "found library POD `$pods{$_}' in $_\n";
+ }
+
+ print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n";
+
+=head1 DESCRIPTION
+
+B<Pod::Find> provides a function B<pod_find> that searches for POD
+documents in a given set of files and directories. It returns a hash
+with the file names as keys and the POD name as value. The POD name
+is derived from the file name and its position in the directory tree.
+
+E.g. when searching in F<$HOME/perl5lib>, the file
+F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>,
+whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be
+I<Myclass::Subclass>. The name information can be used for POD
+translators.
+
+Only text files containing at least one valid POD command are found.
+
+A warning is printed if more than one POD file with the same POD name
+is found, e.g. F<CPAN.pm> in different directories. This usually
+indicates duplicate occurrences of modules in the I<@INC> search path.
+
+The function B<simplify_name> is equivalent to B<basename>, but also
+strips Perl-like extensions (.pm, .pl, .pod) and extensions like
+F<.bat>, F<.cmd> on Win32 and OS/2, respectively.
+
+Note that neither B<pod_find> nor B<simplify_name> are exported by
+default so be sure to specify them in the B<use> statement if you need
+them:
+
+ use Pod::Find qw(pod_find simplify_name);
+
+=head1 OPTIONS
+
+The first argument for B<pod_find> may be a hash reference with options.
+The rest are either directories that are searched recursively or files.
+The POD names of files are the plain basenames with any Perl-like extension
+(.pm, .pl, .pod) stripped.
+
+=over 4
+
+=item B<-verbose>
+
+Print progress information while scanning.
+
+=item B<-perl>
+
+Apply Perl-specific heuristics to find the correct PODs. This includes
+stripping Perl-like extensions, omitting subdirectories that are numeric
+but do I<not> match the current Perl interpreter's version id, suppressing
+F<site_perl> as a module hierarchy name etc.
+
+=item B<-script>
+
+Search for PODs in the current Perl interpreter's installation
+B<scriptdir>. This is taken from the local L<Config|Config> module.
+
+=item B<-inc>
+
+Search for PODs in the current Perl interpreter's I<@INC> paths. This
+automatically considers paths specified in the C<PERL5LIB> environment.
+
+=back
+
+=head1 AUTHOR
+
+Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>,
+heavily borrowing code from Nick Ing-Simmons' PodToHtml.
+
+=head1 SEE ALSO
+
+L<Pod::Parser>, L<Pod::Checker>
+
+=cut
+
+use strict;
+#use diagnostics;
+use Exporter;
+use File::Spec;
+use File::Find;
+use Cwd;
+
+use vars qw(@ISA @EXPORT_OK $VERSION);
+@ISA = qw(Exporter);
+@EXPORT_OK = qw(&pod_find &simplify_name);
+
+# package global variables
+my $SIMPLIFY_RX;
+
+# return a hash of the POD files found
+# first argument may be a hashref (options),
+# rest is a list of directories to search recursively
+sub pod_find
+{
+ my %opts;
+ if(ref $_[0]) {
+ %opts = %{shift()};
+ }
+
+ $opts{-verbose} ||= 0;
+ $opts{-perl} ||= 0;
+
+ my (@search) = @_;
+
+ if($opts{-script}) {
+ require Config;
+ push(@search, $Config::Config{scriptdir});
+ $opts{-perl} = 1;
+ }
+
+ if($opts{-inc}) {
+ push(@search, grep($_ ne '.',@INC));
+ $opts{-perl} = 1;
+ }
+
+ if($opts{-perl}) {
+ require Config;
+ # this code simplifies the POD name for Perl modules:
+ # * remove "site_perl"
+ # * remove e.g. "i586-linux" (from 'archname')
+ # * remove e.g. 5.00503
+ # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod)
+ $SIMPLIFY_RX =
+ qq!^(?i:site_perl/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!;
+
+ }
+
+ my %dirs_visited;
+ my %pods;
+ my %names;
+ my $pwd = cwd();
+
+ foreach my $try (@search) {
+ unless(File::Spec->file_name_is_absolute($try)) {
+ # make path absolute
+ $try = File::Spec->catfile($pwd,$try);
+ }
+ # simplify path
+ $try = File::Spec->canonpath($try);
+ my $name;
+ if(-f $try) {
+ if($name = _check_and_extract_name($try, $opts{-verbose})) {
+ _check_for_duplicates($try, $name, \%names, \%pods);
+ }
+ next;
+ }
+ my $root_rx = qq!^\Q$try\E/!;
+ File::Find::find( sub {
+ my $item = $File::Find::name;
+ if(-d) {
+ if($dirs_visited{$item}) {
+ warn "Directory '$item' already seen, skipping.\n"
+ if($opts{-verbose});
+ $File::Find::prune = 1;
+ return;
+ }
+ else {
+ $dirs_visited{$item} = 1;
+ }
+ if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) {
+ $File::Find::prune = 1;
+ warn "Perl $] version mismatch on $_, skipping.\n"
+ if($opts{-verbose});
+ }
+ return;
+ }
+ if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) {
+ _check_for_duplicates($item, $name, \%names, \%pods);
+ }
+ }, $try); # end of File::Find::find
+ }
+ chdir $pwd;
+ %pods;
+}
+
+sub _check_for_duplicates {
+ my ($file, $name, $names_ref, $pods_ref) = @_;
+ if($$names_ref{$name}) {
+ warn "Duplicate POD found (shadowing?): $name ($file)\n";
+ warn " Already seen in ",
+ join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n";
+ }
+ else {
+ $$names_ref{$name} = 1;
+ }
+ $$pods_ref{$file} = $name;
+}
+
+sub _check_and_extract_name {
+ my ($file, $verbose, $root_rx) = @_;
+
+ # check extension or executable flag
+ # this involves testing the .bat extension on Win32!
+ unless($file =~ /\.(pod|pm|plx?)\z/i || (-f $file && -x _ && -T _)) {
+ return undef;
+ }
+
+ # check for one line of POD
+ unless(open(POD,"<$file")) {
+ warn "Error: $file is unreadable: $!\n";
+ return undef;
+ }
+ local $/ = undef;
+ my $pod = <POD>;
+ close(POD);
+ unless($pod =~ /\n=(head\d|pod|over|item)\b/) {
+ warn "No POD in $file, skipping.\n"
+ if($verbose);
+ return;
+ }
+ undef $pod;
+
+ # strip non-significant path components
+ # _TODO_ what happens on e.g. Win32?
+ my $name = $file;
+ if(defined $root_rx) {
+ $name =~ s!$root_rx!!s;
+ $name =~ s!$SIMPLIFY_RX!!os if(defined $SIMPLIFY_RX);
+ }
+ else {
+ $name =~ s:^.*/::s;
+ }
+ _simplify($name);
+ $name =~ s!/+!::!g; #/
+ $name;
+}
+
+# basic simplification of the POD name:
+# basename & strip extension
+sub simplify_name {
+ my ($str) = @_;
+ # remove all path components
+ $str =~ s:^.*/::s;
+ _simplify($str);
+ $str;
+}
+
+# internal sub only
+sub _simplify {
+ # strip Perl's own extensions
+ $_[0] =~ s/\.(pod|pm|plx?)\z//i;
+ # strip meaningless extensions on Win32 and OS/2
+ $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /win|os2/i);
+}
+
+1;
+
diff --git a/contrib/perl5/lib/Pod/Functions.pm b/contrib/perl5/lib/Pod/Functions.pm
index 3cc9b38..03cbf71 100644
--- a/contrib/perl5/lib/Pod/Functions.pm
+++ b/contrib/perl5/lib/Pod/Functions.pm
@@ -65,6 +65,8 @@ while (<DATA>) {
}
}
+close DATA;
+
unless (caller) {
foreach $type ( @Type_Order ) {
$list = join(", ", sort @{$Kinds{$type}});
@@ -90,9 +92,9 @@ __DATA__
abs Math absolute value function
accept Socket accept an incoming socket connect
alarm Process schedule a SIGALRM
-atan2 Math arctangent of Y/X
+atan2 Math arctangent of Y/X in the range -PI to PI
bind Socket binds an address to a socket
-binmode I/O prepare binary files on old systems
+binmode I/O prepare binary files for I/O
bless Objects create an object
caller Flow,Namespace get context of the current subroutine call
chdir File change your current working directory
@@ -104,7 +106,7 @@ chr String get character this number represents
chroot File make directory new root for path lookups
close I/O close file (or pipe or socket) handle
closedir I/O close directory handle
-connect Socket connect to a remove socket
+connect Socket connect to a remote socket
continue Flow optional trailing block in a while or foreach
cos Math cosine function
crypt String one-way passwd-style encryption
@@ -123,12 +125,12 @@ endprotoent Network be done using protocols file
endpwent User be done using passwd file
endservent Network be done using services file
eof I/O test a filehandle for its end
-eval Flow,Misc catch exceptions or compile code
+eval Flow,Misc catch exceptions or compile and run code
exec Process abandon this program to run another
exists HASH test whether a hash key is present
exit Flow terminate this program
exp Math raise I<e> to a power
-fcntl File file control system all
+fcntl File file control system call
fileno I/O return file descriptor from filehandle
flock I/O lock an entire file with an advisory lock
fork Process create a new process just like this one
@@ -145,7 +147,7 @@ getlogin User return who logged in at this tty
getnetbyaddr Network get network record given its address
getnetbyname Network get networks record given name
getnetent Network get next networks record
-getpeername Socket find the other hend of a socket connection
+getpeername Socket find the other end of a socket connection
getpgrp Process get process group
getppid Process get parent process ID
getpriority Process get current nice value
@@ -180,6 +182,7 @@ link File create a hard link in the filesytem
listen Socket register your socket as a server
local Misc,Namespace create a temporary value for a global variable (dynamic scoping)
localtime Time convert UNIX time into record or string using local time
+lock Threads get a thread lock on a variable, subroutine, or method
log Math retrieve the natural logarithm for a number
lstat File stat a symbolic link
m// Regexp match a string with a regular expression pattern
@@ -210,9 +213,11 @@ qq/STRING/ String doubly quote a string
quotemeta Regexp quote regular expression magic characters
qw/STRING/ LIST quote a list of words
qx/STRING/ Process backquote quote a string
+qr/PATTERN/ Regexp Compile pattern
rand Math retrieve the next pseudorandom number
read I/O,Binary fixed-length buffered input from a filehandle
readdir I/O get a directory from a directory handle
+readline I/O fetch a record from a file
readlink File determine where a symbolic link is pointing
recv Socket receive a message over a Socket
redo Flow start this loop iteration over again
@@ -249,7 +254,7 @@ shmget SysV get SysV shared memory segment identifier
shmread SysV read SysV shared memory
shmwrite SysV write SysV shared memory
shutdown Socket close down just half of a socket connection
-sin Math return the sin of a number
+sin Math return the sine of a number
sleep Process block for some number of seconds
socket Socket create a socket
socketpair Socket create a pair of sockets
@@ -266,6 +271,7 @@ substr String get or alter a portion of a stirng
symlink File create a symbolic link to a file
syscall I/O,Binary execute an arbitrary system call
sysread I/O,Binary fixed-length unbuffered input from a filehandle
+sysseek I/O,Binary position I/O pointer on handle used with sysread and syswrite
system Process run a separate program
syswrite I/O,Binary fixed-length unbuffered output to a filehandle
tell I/O get current seekpointer on a filehandle
diff --git a/contrib/perl5/lib/Pod/Html.pm b/contrib/perl5/lib/Pod/Html.pm
index e71afa8..89e3d0f 100644
--- a/contrib/perl5/lib/Pod/Html.pm
+++ b/contrib/perl5/lib/Pod/Html.pm
@@ -1,22 +1,21 @@
package Pod::Html;
-
-use Pod::Functions;
-use Getopt::Long; # package for handling command-line parameters
+use strict;
require Exporter;
-use vars qw($VERSION);
-$VERSION = 1.01;
-@ISA = Exporter;
+
+use vars qw($VERSION @ISA @EXPORT);
+$VERSION = 1.03;
+@ISA = qw(Exporter);
@EXPORT = qw(pod2html htmlify);
-use Cwd;
use Carp;
+use Config;
+use Cwd;
+use File::Spec::Unix;
+use Getopt::Long;
+use Pod::Functions;
use locale; # make \w work right in non-ASCII lands
-use strict;
-
-use Config;
-
=head1 NAME
Pod::Html - module to convert pod files to HTML
@@ -38,12 +37,48 @@ Pod::Html takes the following arguments:
=over 4
+=item backlink
+
+ --backlink="Back to Top"
+
+Adds "Back to Top" links in front of every HEAD1 heading (except for
+the first). By default, no backlink are being generated.
+
+=item css
+
+ --css=stylesheet
+
+Specify the URL of a cascading style sheet.
+
+=item flush
+
+ --flush
+
+Flushes the item and directory caches.
+
+=item header
+
+ --header
+ --noheader
+
+Creates header and footer blocks containing the text of the NAME
+section. By default, no headers are being generated.
+
=item help
--help
Displays the usage message.
+=item htmldir
+
+ --htmldir=name
+
+Sets the directory in which the resulting HTML file is placed. This
+is used to generate relative links to other files. Not passing this
+causes all links to be absolute, since this is the value that tells
+Pod::Html the root of the documentation tree.
+
=item htmlroot
--htmlroot=name
@@ -51,6 +86,14 @@ Displays the usage message.
Sets the base URL for the HTML files. When cross-references are made,
the HTML root is prepended to the URL.
+=item index
+
+ --index
+ --noindex
+
+Generate an index at the top of the HTML file. This is the default
+behaviour.
+
=item infile
--infile=name
@@ -58,26 +101,6 @@ the HTML root is prepended to the URL.
Specify the pod file to convert. Input is taken from STDIN if no
infile is specified.
-=item outfile
-
- --outfile=name
-
-Specify the HTML file to create. Output goes to STDOUT if no outfile
-is specified.
-
-=item podroot
-
- --podroot=name
-
-Specify the base directory for finding library pods.
-
-=item podpath
-
- --podpath=name:...:name
-
-Specify which subdirectories of the podroot contain pod files whose
-HTML converted forms can be linked-to in cross-references.
-
=item libpods
--libpods=name:...:name
@@ -87,39 +110,46 @@ List of page names (eg, "perlfunc") which contain linkable C<=item>s.
=item netscape
--netscape
+ --nonetscape
-Use Netscape HTML directives when applicable.
-
-=item nonetscape
+Use Netscape HTML directives when applicable. By default, they will
+B<not> be used.
- --nonetscape
+=item outfile
-Do not use Netscape HTML directives (default).
+ --outfile=name
-=item index
+Specify the HTML file to create. Output goes to STDOUT if no outfile
+is specified.
- --index
+=item podpath
-Generate an index at the top of the HTML file (default behaviour).
+ --podpath=name:...:name
-=item noindex
+Specify which subdirectories of the podroot contain pod files whose
+HTML converted forms can be linked-to in cross-references.
- --noindex
+=item podroot
-Do not generate an index at the top of the HTML file.
+ --podroot=name
+Specify the base directory for finding library pods.
-=item recurse
+=item quiet
- --recurse
+ --quiet
+ --noquiet
-Recurse into subdirectories specified in podpath (default behaviour).
+Don't display I<mostly harmless> warning messages. These messages
+will be displayed by default. But this is not the same as C<verbose>
+mode.
-=item norecurse
+=item recurse
+ --recurse
--norecurse
-Do not recurse into subdirectories specified in podpath.
+Recurse into subdirectories specified in podpath (default behaviour).
=item title
@@ -130,8 +160,9 @@ Specify the title of the resulting HTML file.
=item verbose
--verbose
+ --noverbose
-Display progress messages.
+Display progress messages. By default, they won't be displayed.
=back
@@ -146,13 +177,13 @@ Display progress messages.
"--infile=foo.pod",
"--outfile=/perl/nmanual/foo.html");
-=head1 AUTHOR
+=head1 ENVIRONMENT
-Tom Christiansen, E<lt>tchrist@perl.comE<gt>.
+Uses $Config{pod2html} to setup default options.
-=head1 BUGS
+=head1 AUTHOR
-Has trouble with C<> etc in = commands.
+Tom Christiansen, E<lt>tchrist@perl.comE<gt>.
=head1 SEE ALSO
@@ -164,30 +195,35 @@ This program is distributed under the Artistic License.
=cut
-my $dircache = "pod2html-dircache";
-my $itemcache = "pod2html-itemcache";
+my $cache_ext = $^O eq 'VMS' ? ".tmp" : ".x~~";
+my $dircache = "pod2htmd$cache_ext";
+my $itemcache = "pod2htmi$cache_ext";
my @begin_stack = (); # begin/end stack
my @libpods = (); # files to search for links from C<> directives
my $htmlroot = "/"; # http-server base directory from which all
# relative paths in $podpath stem.
+my $htmldir = ""; # The directory to which the html pages
+ # will (eventually) be written.
my $htmlfile = ""; # write to stdout by default
+my $htmlfileurl = "" ; # The url that other files would use to
+ # refer to this file. This is only used
+ # to make relative urls that point to
+ # other files.
my $podfile = ""; # read from stdin by default
my @podpath = (); # list of directories containing library pods.
my $podroot = "."; # filesystem base directory from which all
# relative paths in $podpath stem.
+my $css = ''; # Cascading style sheet
my $recurse = 1; # recurse on subdirectories in $podpath.
+my $quiet = 0; # not quiet by default
my $verbose = 0; # not verbose by default
my $doindex = 1; # non-zero if we should generate an index
+my $backlink = ''; # text for "back to top" links
my $listlevel = 0; # current list depth
-my @listitem = (); # stack of HTML commands to use when a =item is
- # encountered. the top of the stack is the
- # current list.
-my @listdata = (); # similar to @listitem, but for the text after
- # an =item
-my @listend = (); # similar to @listitem, but the text to use to
- # end the list.
+my @listend = (); # the text to use to end the list.
+my $after_lpar = 0; # set to true after a par in an =item
my $ignore = 1; # whether or not to format text. we don't
# format text until we hit our first pod
# directive.
@@ -196,42 +232,45 @@ my %items_named = (); # for the multiples of the same item in perlfunc
my @items_seen = ();
my $netscape = 0; # whether or not to use netscape directives.
my $title; # title to give the pod(s)
+my $header = 0; # produce block header/footer
my $top = 1; # true if we are at the top of the doc. used
# to prevent the first <HR> directive.
my $paragraph; # which paragraph we're processing (used
# for error messages)
+my $ptQuote = 0; # status of double-quote conversion
my %pages = (); # associative array used to find the location
# of pages referenced by L<> links.
my %sections = (); # sections within this page
my %items = (); # associative array used to find the location
# of =item directives referenced by C<> links
+my %local_items = (); # local items - avoid destruction of %items
my $Is83; # is dos with short filenames (8.3)
sub init_globals {
-$dircache = "pod2html-dircache";
-$itemcache = "pod2html-itemcache";
+$dircache = "pod2htmd$cache_ext";
+$itemcache = "pod2htmi$cache_ext";
@begin_stack = (); # begin/end stack
@libpods = (); # files to search for links from C<> directives
$htmlroot = "/"; # http-server base directory from which all
# relative paths in $podpath stem.
+$htmldir = ""; # The directory to which the html pages
+ # will (eventually) be written.
$htmlfile = ""; # write to stdout by default
$podfile = ""; # read from stdin by default
@podpath = (); # list of directories containing library pods.
$podroot = "."; # filesystem base directory from which all
# relative paths in $podpath stem.
+$css = ''; # Cascading style sheet
$recurse = 1; # recurse on subdirectories in $podpath.
+$quiet = 0; # not quiet by default
$verbose = 0; # not verbose by default
$doindex = 1; # non-zero if we should generate an index
+$backlink = ''; # text for "back to top" links
$listlevel = 0; # current list depth
-@listitem = (); # stack of HTML commands to use when a =item is
- # encountered. the top of the stack is the
- # current list.
-@listdata = (); # similar to @listitem, but for the text after
- # an =item
-@listend = (); # similar to @listitem, but the text to use to
- # end the list.
+@listend = (); # the text to use to end the list.
+$after_lpar = 0; # set to true after a par in an =item
$ignore = 1; # whether or not to format text. we don't
# format text until we hit our first pod
# directive.
@@ -239,6 +278,7 @@ $ignore = 1; # whether or not to format text. we don't
@items_seen = ();
%items_named = ();
$netscape = 0; # whether or not to use netscape directives.
+$header = 0; # produce block header/footer
$title = ''; # title to give the pod(s)
$top = 1; # true if we are at the top of the doc. used
# to prevent the first <HR> directive.
@@ -252,9 +292,28 @@ $paragraph = ''; # which paragraph we're processing (used
# of pages referenced by L<> links.
#%items = (); # associative array used to find the location
# of =item directives referenced by C<> links
+%local_items = ();
$Is83=$^O eq 'dos';
}
+#
+# clean_data: global clean-up of pod data
+#
+sub clean_data($){
+ my( $dataref ) = @_;
+ my $i;
+ for( $i = 0; $i <= $#$dataref; $i++ ){
+ ${$dataref}[$i] =~ s/\s+\Z//;
+
+ # have a look for all-space lines
+ if( ${$dataref}[$i] =~ /^\s+$/m ){
+ my @chunks = split( /^\s+$/m, ${$dataref}[$i] );
+ splice( @$dataref, $i, 1, @chunks );
+ }
+ }
+}
+
+
sub pod2html {
local(@ARGV) = @_;
local($/);
@@ -283,19 +342,32 @@ sub pod2html {
}
$htmlfile = "-" unless $htmlfile; # stdout
$htmlroot = "" if $htmlroot eq "/"; # so we don't get a //
+ $htmldir =~ s#/\z## ; # so we don't get a //
+ if ( $htmlroot eq ''
+ && defined( $htmldir )
+ && $htmldir ne ''
+ && substr( $htmlfile, 0, length( $htmldir ) ) eq $htmldir
+ )
+ {
+ # Set the 'base' url for this file, so that we can use it
+ # as the location from which to calculate relative links
+ # to other files. If this is '', then absolute links will
+ # be used throughout.
+ $htmlfileurl= "$htmldir/" . substr( $htmlfile, length( $htmldir ) + 1);
+ }
# read the pod a paragraph at a time
warn "Scanning for sections in input file(s)\n" if $verbose;
$/ = "";
my @poddata = <POD>;
close(POD);
+ clean_data( \@poddata );
# scan the pod for =head[1-6] directives and build an index
my $index = scan_headings(\%sections, @poddata);
unless($index) {
- warn "No pod in $podfile\n" if $verbose;
- return;
+ warn "No headings in $podfile\n" if $verbose;
}
# open the output file
@@ -316,7 +388,7 @@ sub pod2html {
}
}
}
- if (!$title and $podfile =~ /\.pod$/) {
+ if (!$title and $podfile =~ /\.pod\z/) {
# probably a split pod so take first =head[12] as title
for (my $i = 0; $i < @poddata; $i++) {
last if ($title) = $poddata[$i] =~ /^=head[12]\s*(.*)/;
@@ -327,46 +399,63 @@ sub pod2html {
if ($title) {
$title =~ s/\s*\(.*\)//;
} else {
- warn "$0: no title for $podfile";
- $podfile =~ /^(.*)(\.[^.\/]+)?$/;
+ warn "$0: no title for $podfile" unless $quiet;
+ $podfile =~ /^(.*)(\.[^.\/]+)?\z/s;
$title = ($podfile eq "-" ? 'No Title' : $1);
warn "using $title" if $verbose;
}
+ my $csslink = $css ? qq(\n<LINK REL="stylesheet" HREF="$css" TYPE="text/css">) : '';
+ $csslink =~ s,\\,/,g;
+ $csslink =~ s,(/.):,$1|,;
+
+ my $block = $header ? <<END_OF_BLOCK : '';
+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
+<TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
+<FONT SIZE=+1><STRONG><P CLASS=block>&nbsp;$title</P></STRONG></FONT>
+</TD></TR>
+</TABLE>
+END_OF_BLOCK
+
print HTML <<END_OF_HEAD;
<HTML>
<HEAD>
-<TITLE>$title</TITLE>
+<TITLE>$title</TITLE>$csslink
<LINK REV="made" HREF="mailto:$Config{perladmin}">
</HEAD>
<BODY>
-
+$block
END_OF_HEAD
# load/reload/validate/cache %pages and %items
get_cache($dircache, $itemcache, \@podpath, $podroot, $recurse);
# scan the pod for =item directives
- scan_items("", \%items, @poddata);
+ scan_items( \%local_items, "", @poddata);
# put an index at the top of the file. note, if $doindex is 0 we
# still generate an index, but surround it with an html comment.
# that way some other program can extract it if desired.
$index =~ s/--+/-/g;
+ print HTML "<A NAME=\"__index__\"></A>\n";
print HTML "<!-- INDEX BEGIN -->\n";
print HTML "<!--\n" unless $doindex;
print HTML $index;
print HTML "-->\n" unless $doindex;
print HTML "<!-- INDEX END -->\n\n";
- print HTML "<HR>\n" if $doindex;
+ print HTML "<HR>\n" if $doindex and $index;
# now convert this file
- warn "Converting input file\n" if $verbose;
- foreach my $i (0..$#poddata) {
+ my $after_item; # set to true after an =item
+ warn "Converting input file $podfile\n" if $verbose;
+ foreach my $i (0..$#poddata){
+ $ptQuote = 0; # status of quote conversion
+
$_ = $poddata[$i];
$paragraph = $i+1;
if (/^(=.*)/s) { # is it a pod directive?
$ignore = 0;
+ $after_item = 0;
$_ = $1;
if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin
process_begin($1, $2);
@@ -380,14 +469,17 @@ END_OF_HEAD
next if @begin_stack && $begin_stack[-1] ne 'html';
if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading
- process_head($1, $2);
- } elsif (/^=item\s*(.*\S)/sm) { # =item text
- process_item($1);
+ process_head( $1, $2, $doindex && $index );
+ } elsif (/^=item\s*(.*\S)?/sm) { # =item text
+ warn "$0: $podfile: =item without bullet, number or text"
+ . " in paragraph $paragraph.\n" if !defined($1) or $1 eq '';
+ process_item( $1 );
+ $after_item = 1;
} elsif (/^=over\s*(.*)/) { # =over N
process_over();
} elsif (/^=back/) { # =back
process_back();
- } elsif (/^=for\s+(\S+)\s+(.*)/si) {# =for
+ } elsif (/^=for\s+(\S+)\s*(.*)/si) {# =for
process_for($1,$2);
} else {
/^=(\S*)\s*/;
@@ -401,14 +493,55 @@ END_OF_HEAD
next if $ignore;
next if @begin_stack && $begin_stack[-1] ne 'html';
my $text = $_;
- process_text(\$text, 1);
- print HTML "<P>\n$text";
+ if( $text =~ /\A\s+/ ){
+ process_pre( \$text );
+ print HTML "<PRE>\n$text</PRE>\n";
+
+ } else {
+ process_text( \$text );
+
+ # experimental: check for a paragraph where all lines
+ # have some ...\t...\t...\n pattern
+ if( $text =~ /\t/ ){
+ my @lines = split( "\n", $text );
+ if( @lines > 1 ){
+ my $all = 2;
+ foreach my $line ( @lines ){
+ if( $line =~ /\S/ && $line !~ /\t/ ){
+ $all--;
+ last if $all == 0;
+ }
+ }
+ if( $all > 0 ){
+ $text =~ s/\t+/<TD>/g;
+ $text =~ s/^/<TR><TD>/gm;
+ $text = '<TABLE CELLSPACING=0 CELLPADDING=0>' .
+ $text . '</TABLE>';
+ }
+ }
+ }
+ ## end of experimental
+
+ if( $after_item ){
+ print HTML "$text\n";
+ $after_lpar = 1;
+ } else {
+ print HTML "<P>$text</P>\n";
+ }
+ }
+ $after_item = 0;
}
}
# finish off any pending directives
finish_list();
+
+ # link to page index
+ print HTML "<P><A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A></P>\n"
+ if $doindex and $index and $backlink;
+
print HTML <<END_OF_TAIL;
+$block
</BODY>
</HTML>
@@ -435,40 +568,52 @@ Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
--libpods=<name>:...:<name> --recurse --verbose --index
--netscape --norecurse --noindex
- --flush - flushes the item and directory caches.
- --help - prints this message.
- --htmlroot - http-server base directory from which all relative paths
- in podpath stem (default is /).
- --index - generate an index at the top of the resulting html
- (default).
- --infile - filename for the pod to convert (input taken from stdin
- by default).
- --libpods - colon-separated list of pages to search for =item pod
- directives in as targets of C<> and implicit links (empty
- by default). note, these are not filenames, but rather
- page names like those that appear in L<> links.
- --netscape - will use netscape html directives when applicable.
- --nonetscape - will not use netscape directives (default).
- --outfile - filename for the resulting html file (output sent to
- stdout by default).
- --podpath - colon-separated list of directories containing library
- pods. empty by default.
- --podroot - filesystem base directory from which all relative paths
- in podpath stem (default is .).
- --noindex - don't generate an index at the top of the resulting html.
- --norecurse - don't recurse on those subdirectories listed in podpath.
- --recurse - recurse on those subdirectories listed in podpath
- (default behavior).
- --title - title that will appear in resulting html file.
- --verbose - self-explanatory
+ --backlink - set text for "back to top" links (default: none).
+ --css - stylesheet URL
+ --flush - flushes the item and directory caches.
+ --[no]header - produce block header/footer (default is no headers).
+ --help - prints this message.
+ --htmldir - directory for resulting HTML files.
+ --htmlroot - http-server base directory from which all relative paths
+ in podpath stem (default is /).
+ --[no]index - generate an index at the top of the resulting html
+ (default behaviour).
+ --infile - filename for the pod to convert (input taken from stdin
+ by default).
+ --libpods - colon-separated list of pages to search for =item pod
+ directives in as targets of C<> and implicit links (empty
+ by default). note, these are not filenames, but rather
+ page names like those that appear in L<> links.
+ --[no]netscape - will use netscape html directives when applicable.
+ (default is not to use them).
+ --outfile - filename for the resulting html file (output sent to
+ stdout by default).
+ --podpath - colon-separated list of directories containing library
+ pods (empty by default).
+ --podroot - filesystem base directory from which all relative paths
+ in podpath stem (default is .).
+ --[no]quiet - supress some benign warning messages (default is off).
+ --[no]recurse - recurse on those subdirectories listed in podpath
+ (default behaviour).
+ --title - title that will appear in resulting html file.
+ --[no]verbose - self-explanatory (off by default).
END_OF_USAGE
sub parse_command_line {
- my ($opt_flush,$opt_help,$opt_htmlroot,$opt_index,$opt_infile,$opt_libpods,$opt_netscape,$opt_outfile,$opt_podpath,$opt_podroot,$opt_norecurse,$opt_recurse,$opt_title,$opt_verbose);
+ my ($opt_backlink,$opt_css,$opt_flush,$opt_header,$opt_help,$opt_htmldir,
+ $opt_htmlroot,$opt_index,$opt_infile,$opt_libpods,$opt_netscape,
+ $opt_outfile,$opt_podpath,$opt_podroot,$opt_quiet,$opt_recurse,
+ $opt_title,$opt_verbose);
+
+ unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
my $result = GetOptions(
+ 'backlink=s' => \$opt_backlink,
+ 'css=s' => \$opt_css,
'flush' => \$opt_flush,
+ 'header!' => \$opt_header,
'help' => \$opt_help,
+ 'htmldir=s' => \$opt_htmldir,
'htmlroot=s' => \$opt_htmlroot,
'index!' => \$opt_index,
'infile=s' => \$opt_infile,
@@ -477,34 +622,37 @@ sub parse_command_line {
'outfile=s' => \$opt_outfile,
'podpath=s' => \$opt_podpath,
'podroot=s' => \$opt_podroot,
- 'norecurse' => \$opt_norecurse,
+ 'quiet!' => \$opt_quiet,
'recurse!' => \$opt_recurse,
'title=s' => \$opt_title,
- 'verbose' => \$opt_verbose,
+ 'verbose!' => \$opt_verbose,
);
usage("-", "invalid parameters") if not $result;
usage("-") if defined $opt_help; # see if the user asked for help
$opt_help = ""; # just to make -w shut-up.
- $podfile = $opt_infile if defined $opt_infile;
- $htmlfile = $opt_outfile if defined $opt_outfile;
-
@podpath = split(":", $opt_podpath) if defined $opt_podpath;
@libpods = split(":", $opt_libpods) if defined $opt_libpods;
+ $backlink = $opt_backlink if defined $opt_backlink;
+ $css = $opt_css if defined $opt_css;
+ $header = $opt_header if defined $opt_header;
+ $htmldir = $opt_htmldir if defined $opt_htmldir;
+ $htmlroot = $opt_htmlroot if defined $opt_htmlroot;
+ $doindex = $opt_index if defined $opt_index;
+ $podfile = $opt_infile if defined $opt_infile;
+ $netscape = $opt_netscape if defined $opt_netscape;
+ $htmlfile = $opt_outfile if defined $opt_outfile;
+ $podroot = $opt_podroot if defined $opt_podroot;
+ $quiet = $opt_quiet if defined $opt_quiet;
+ $recurse = $opt_recurse if defined $opt_recurse;
+ $title = $opt_title if defined $opt_title;
+ $verbose = $opt_verbose if defined $opt_verbose;
+
warn "Flushing item and directory caches\n"
if $opt_verbose && defined $opt_flush;
unlink($dircache, $itemcache) if defined $opt_flush;
-
- $htmlroot = $opt_htmlroot if defined $opt_htmlroot;
- $podroot = $opt_podroot if defined $opt_podroot;
-
- $doindex = $opt_index if defined $opt_index;
- $recurse = $opt_recurse if defined $opt_recurse;
- $title = $opt_title if defined $opt_title;
- $verbose = defined $opt_verbose ? 1 : 0;
- $netscape = $opt_netscape if defined $opt_netscape;
}
@@ -542,7 +690,7 @@ sub get_cache {
sub cache_key {
my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_;
return join('!', $dircache, $itemcache, $recurse,
- @$podpath, $podroot, stat($dircache), stat($itemcache));
+ @$podpath, $podroot, stat($dircache), stat($itemcache));
}
#
@@ -550,7 +698,6 @@ sub cache_key {
# are valid caches of %pages and %items. if they are valid then it loads
# them and returns a non-zero value.
#
-
sub load_cache {
my($dircache, $itemcache, $podpath, $podroot) = @_;
my($tests);
@@ -648,12 +795,14 @@ sub scan_podpath {
next unless defined $pages{$libpod} && $pages{$libpod};
# if there is a directory then use the .pod and .pm files within it.
- if ($pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) {
+ # NOTE: Only finds the first so-named directory in the tree.
+# if ($pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) {
+ if ($pages{$libpod} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) {
# find all the .pod and .pm files within the directory
$dirname = $1;
opendir(DIR, $dirname) ||
die "$0: error opening directory $dirname: $!\n";
- @files = grep(/(\.pod|\.pm)$/ && ! -d $_, readdir(DIR));
+ @files = grep(/(\.pod|\.pm)\z/ && ! -d $_, readdir(DIR));
closedir(DIR);
# scan each .pod and .pm file for =item directives
@@ -662,15 +811,17 @@ sub scan_podpath {
die "$0: error opening $dirname/$pod for input: $!\n";
@poddata = <POD>;
close(POD);
+ clean_data( \@poddata );
- scan_items("$dirname/$pod", @poddata);
+ scan_items( \%items, "$dirname/$pod", @poddata);
}
# use the names of files as =item directives too.
- foreach $pod (@files) {
- $pod =~ /^(.*)(\.pod|\.pm)$/;
- $items{$1} = "$dirname/$1.html" if $1;
- }
+### Don't think this should be done this way - confuses issues.(WL)
+### foreach $pod (@files) {
+### $pod =~ /^(.*)(\.pod|\.pm)$/;
+### $items{$1} = "$dirname/$1.html" if $1;
+### }
} elsif ($pages{$libpod} =~ /([^:]*\.pod):/ ||
$pages{$libpod} =~ /([^:]*\.pm):/) {
# scan the .pod or .pm file for =item directives
@@ -679,8 +830,9 @@ sub scan_podpath {
die "$0: error opening $pod for input: $!\n";
@poddata = <POD>;
close(POD);
+ clean_data( \@poddata );
- scan_items("$pod", @poddata);
+ scan_items( \%items, "$pod", @poddata);
} else {
warn "$0: shouldn't be here (line ".__LINE__."\n";
}
@@ -736,13 +888,13 @@ sub scan_dir {
$pages{$_} = "" unless defined $pages{$_};
$pages{$_} .= "$dir/$_:";
push(@subdirs, $_);
- } elsif (/\.pod$/) { # .pod
- s/\.pod$//;
+ } elsif (/\.pod\z/) { # .pod
+ s/\.pod\z//;
$pages{$_} = "" unless defined $pages{$_};
$pages{$_} .= "$dir/$_.pod:";
push(@pods, "$dir/$_.pod");
- } elsif (/\.pm$/) { # .pm
- s/\.pm$//;
+ } elsif (/\.pm\z/) { # .pm
+ s/\.pm\z//;
$pages{$_} = "" unless defined $pages{$_};
$pages{$_} .= "$dir/$_.pm:";
push(@pods, "$dir/$_.pm");
@@ -764,7 +916,7 @@ sub scan_dir {
#
sub scan_headings {
my($sections, @data) = @_;
- my($tag, $which_head, $title, $listdepth, $index);
+ my($tag, $which_head, $otitle, $listdepth, $index);
# here we need local $ignore = 0;
# unfortunately, we can't have it, because $ignore is lexical
@@ -777,9 +929,12 @@ sub scan_headings {
# pointing to each of them.
foreach my $line (@data) {
if ($line =~ /^=(head)([1-6])\s+(.*)/) {
- ($tag,$which_head, $title) = ($1,$2,$3);
- chomp($title);
- $$sections{htmlify(0,$title)} = 1;
+ ($tag, $which_head, $otitle) = ($1,$2,$3);
+
+ my $title = depod( $otitle );
+ my $name = htmlify( $title );
+ $$sections{$name} = 1;
+ $title = process_text( \$otitle );
while ($which_head != $listdepth) {
if ($which_head > $listdepth) {
@@ -792,8 +947,8 @@ sub scan_headings {
}
$index .= "\n" . ("\t" x $listdepth) . "<LI>" .
- "<A HREF=\"#" . htmlify(0,$title) . "\">" .
- html_escape(process_text(\$title, 0)) . "</A>";
+ "<A HREF=\"#" . $name . "\">" .
+ $title . "</A></LI>";
}
}
@@ -815,36 +970,30 @@ sub scan_headings {
# will use this information later on in resolving C<> links.
#
sub scan_items {
- my($pod, @poddata) = @_;
+ my( $itemref, $pod, @poddata ) = @_;
my($i, $item);
local $_;
- $pod =~ s/\.pod$//;
+ $pod =~ s/\.pod\z//;
$pod .= ".html" if $pod;
foreach $i (0..$#poddata) {
- $_ = $poddata[$i];
-
- # remove any formatting instructions
- s,[A-Z]<([^<>]*)>,$1,g;
-
- # figure out what kind of item it is and get the first word of
- # it's name.
- if (/^=item\s+(\w*)\s*.*$/s) {
- if ($1 eq "*") { # bullet list
- /\A=item\s+\*\s*(.*?)\s*\Z/s;
- $item = $1;
- } elsif ($1 =~ /^\d+/) { # numbered list
- /\A=item\s+\d+\.?(.*?)\s*\Z/s;
- $item = $1;
- } else {
-# /\A=item\s+(.*?)\s*\Z/s;
- /\A=item\s+(\w*)/s;
- $item = $1;
- }
-
- $items{$item} = "$pod" if $item;
+ my $txt = depod( $poddata[$i] );
+
+ # figure out what kind of item it is.
+ # Build string for referencing this item.
+ if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet
+ next unless $1;
+ $item = $1;
+ } elsif( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list
+ $item = $1;
+ } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item
+ $item = $1;
+ } else {
+ next;
}
+ my $fid = fragment_id( $item );
+ $$itemref{$fid} = "$pod" if $fid;
}
}
@@ -852,168 +1001,167 @@ sub scan_items {
# process_head - convert a pod head[1-6] tag and convert it to HTML format.
#
sub process_head {
- my($tag, $heading) = @_;
- my $firstword;
+ my($tag, $heading, $hasindex) = @_;
# figure out the level of the =head
$tag =~ /head([1-6])/;
my $level = $1;
- # can't have a heading full of spaces and speechmarks and so on
- $firstword = $heading; $firstword =~ s/\s*(\w+)\s.*/$1/;
-
- print HTML "<P>\n" unless $listlevel;
- print HTML "<HR>\n" unless $listlevel || $top;
- print HTML "<H$level>"; # unless $listlevel;
- #print HTML "<H$level>" unless $listlevel;
- my $convert = $heading; process_text(\$convert, 0);
- $convert = html_escape($convert);
- print HTML '<A NAME="' . htmlify(0,$heading) . "\">$convert</A>";
- print HTML "</H$level>"; # unless $listlevel;
- print HTML "\n";
+ if( $listlevel ){
+ warn "$0: $podfile: unterminated list at =head in paragraph $paragraph. ignoring.\n";
+ while( $listlevel ){
+ process_back();
+ }
+ }
+
+ print HTML "<P>\n";
+ if( $level == 1 && ! $top ){
+ print HTML "<A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A>\n"
+ if $hasindex and $backlink;
+ print HTML "<HR>\n"
+ }
+
+ my $name = htmlify( depod( $heading ) );
+ my $convert = process_text( \$heading );
+ print HTML "<H$level><A NAME=\"$name\">$convert</A></H$level>\n";
}
+
#
-# process_item - convert a pod item tag and convert it to HTML format.
+# emit_item_tag - print an =item's text
+# Note: The global $EmittedItem is used for inhibiting self-references.
#
-sub process_item {
- my $text = $_[0];
- my($i, $quote, $name);
+my $EmittedItem;
+
+sub emit_item_tag($$$){
+ my( $otext, $text, $compact ) = @_;
+ my $item = fragment_id( $text );
- my $need_preamble = 0;
- my $this_entry;
+ $EmittedItem = $item;
+ ### print STDERR "emit_item_tag=$item ($text)\n";
+ print HTML '<STRONG>';
+ if ($items_named{$item}++) {
+ print HTML process_text( \$otext );
+ } else {
+ my $name = 'item_' . $item;
+ print HTML qq{<A NAME="$name">}, process_text( \$otext ), '</A>';
+ }
+ print HTML "</STRONG><BR>\n";
+ undef( $EmittedItem );
+}
+
+sub emit_li {
+ my( $tag ) = @_;
+ if( $items_seen[$listlevel]++ == 0 ){
+ push( @listend, "</$tag>" );
+ print HTML "<$tag>\n";
+ }
+ print HTML $tag eq 'DL' ? '<DT>' : '<LI>';
+}
+
+#
+# process_item - convert a pod item tag and convert it to HTML format.
+#
+sub process_item {
+ my( $otext ) = @_;
# lots of documents start a list without doing an =over. this is
# bad! but, the proper thing to do seems to be to just assume
# they did do an =over. so warn them once and then continue.
- warn "$0: $podfile: unexpected =item directive in paragraph $paragraph. ignoring.\n"
- unless $listlevel;
- process_over() unless $listlevel;
+ if( $listlevel == 0 ){
+ warn "$0: $podfile: unexpected =item directive in paragraph $paragraph. ignoring.\n";
+ process_over();
+ }
- return unless $listlevel;
+ # formatting: insert a paragraph if preceding item has >1 paragraph
+ if( $after_lpar ){
+ print HTML "<P></P>\n";
+ $after_lpar = 0;
+ }
# remove formatting instructions from the text
- 1 while $text =~ s/[A-Z]<([^<>]*)>/$1/g;
- pre_escape(\$text);
-
- $need_preamble = $items_seen[$listlevel]++ == 0;
-
- # check if this is the first =item after an =over
- $i = $listlevel - 1;
- my $need_new = $listlevel >= @listitem;
-
- if ($text =~ /\A\*/) { # bullet
-
- if ($need_preamble) {
- push(@listend, "</UL>");
- print HTML "<UL>\n";
- }
-
- print HTML '<LI>';
- if ($text =~ /\A\*\s*(.+)\Z/s) {
- print HTML '<STRONG>';
- if ($items_named{$1}++) {
- print HTML html_escape($1);
- } else {
- my $name = 'item_' . htmlify(1,$1);
- print HTML qq(<A NAME="$name">), html_escape($1), '</A>';
- }
- print HTML '</STRONG>';
- }
-
- } elsif ($text =~ /\A[\d#]+/) { # numbered list
-
- if ($need_preamble) {
- push(@listend, "</OL>");
- print HTML "<OL>\n";
- }
-
- print HTML '<LI>';
- if ($text =~ /\A\d+\.?\s*(.+)\Z/s) {
- print HTML '<STRONG>';
- if ($items_named{$1}++) {
- print HTML html_escape($1);
- } else {
- my $name = 'item_' . htmlify(0,$1);
- print HTML qq(<A NAME="$name">), html_escape($1), '</A>';
- }
- print HTML '</STRONG>';
+ my $text = depod( $otext );
+
+ # all the list variants:
+ if( $text =~ /\A\*/ ){ # bullet
+ emit_li( 'UL' );
+ if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text
+ my $tag = $1;
+ $otext =~ s/\A\*\s+//;
+ emit_item_tag( $otext, $tag, 1 );
}
- } else { # all others
-
- if ($need_preamble) {
- push(@listend, '</DL>');
- print HTML "<DL>\n";
+ } elsif( $text =~ /\A\d+/ ){ # numbered list
+ emit_li( 'OL' );
+ if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text
+ my $tag = $1;
+ $otext =~ s/\A\d+\.?\s*//;
+ emit_item_tag( $otext, $tag, 1 );
}
- print HTML '<DT>';
- if ($text =~ /(\S+)/) {
- print HTML '<STRONG>';
- if ($items_named{$1}++) {
- print HTML html_escape($text);
- } else {
- my $name = 'item_' . htmlify(1,$text);
- print HTML qq(<A NAME="$name">), html_escape($text), '</A>';
- }
- print HTML '</STRONG>';
+ } else { # definition list
+ emit_li( 'DL' );
+ if ($text =~ /\A(.+)\Z/s ){ # should have text
+ emit_item_tag( $otext, $text, 1 );
}
print HTML '<DD>';
}
-
print HTML "\n";
}
#
-# process_over - process a pod over tag and start a corresponding HTML
-# list.
+# process_over - process a pod over tag and start a corresponding HTML list.
#
sub process_over {
# start a new list
$listlevel++;
+ push( @items_seen, 0 );
+ $after_lpar = 0;
}
#
# process_back - process a pod back tag and convert it to HTML format.
#
sub process_back {
- warn "$0: $podfile: unexpected =back directive in paragraph $paragraph. ignoring.\n"
- unless $listlevel;
- return unless $listlevel;
+ if( $listlevel == 0 ){
+ warn "$0: $podfile: unexpected =back directive in paragraph $paragraph. ignoring.\n";
+ return;
+ }
# close off the list. note, I check to see if $listend[$listlevel] is
# defined because an =item directive may have never appeared and thus
# $listend[$listlevel] may have never been initialized.
$listlevel--;
- print HTML $listend[$listlevel] if defined $listend[$listlevel];
- print HTML "\n";
-
- # don't need the corresponding perl code anymore
- pop(@listitem);
- pop(@listdata);
- pop(@listend);
+ if( defined $listend[$listlevel] ){
+ print HTML '<P></P>' if $after_lpar;
+ print HTML $listend[$listlevel];
+ print HTML "\n";
+ pop( @listend );
+ }
+ $after_lpar = 0;
- pop(@items_seen);
+ # clean up item count
+ pop( @items_seen );
}
#
-# process_cut - process a pod cut tag, thus stop ignoring pod directives.
+# process_cut - process a pod cut tag, thus start ignoring pod directives.
#
sub process_cut {
$ignore = 1;
}
#
-# process_pod - process a pod pod tag, thus ignore pod directives until we see a
-# corresponding cut.
+# process_pod - process a pod pod tag, thus stop ignoring pod directives
+# until we see a corresponding cut.
#
sub process_pod {
# no need to set $ignore to 0 cause the main loop did it
}
#
-# process_for - process a =for pod tag. if it's for html, split
+# process_for - process a =for pod tag. if it's for html, spit
# it out verbatim, if illustration, center it, otherwise ignore it.
#
sub process_for {
@@ -1053,54 +1201,69 @@ sub process_end {
if ($begin_stack[-1] ne $whom ) {
die "Unmatched begin/end at chunk $paragraph\n"
}
- pop @begin_stack;
+ pop( @begin_stack );
}
#
-# process_text - handles plaintext that appears in the input pod file.
-# there may be pod commands embedded within the text so those must be
-# converted to html commands.
+# process_pre - indented paragraph, made into <PRE></PRE>
#
-sub process_text {
- my($text, $escapeQuotes) = @_;
- my($result, $rest, $s1, $s2, $s3, $s4, $match, $bf);
- my($podcommand, $params, $tag, $quote);
-
+sub process_pre {
+ my( $text ) = @_;
+ my( $rest );
return if $ignore;
- $quote = 0; # status of double-quote conversion
- $result = "";
$rest = $$text;
- if ($rest =~ /^\s+/) { # preformatted text, no pod directives
- $rest =~ s/\n+\Z//;
- $rest =~ s#.*#
+ # insert spaces in place of tabs
+ $rest =~ s#.*#
my $line = $&;
1 while $line =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
$line;
#eg;
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
-
- # try and create links for all occurrences of perl.* within
- # the preformatted text.
- $rest =~ s{
- (\s*)(perl\w+)
- }{
- if (defined $pages{$2}) { # is a link
- qq($1<A HREF="$htmlroot/$pages{$2}">$2</A>);
- } elsif (defined $pages{dosify($2)}) { # is a link
- qq($1<A HREF="$htmlroot/$pages{dosify($2)}">$2</A>);
- } else {
- "$1$2";
- }
- }xeg;
- $rest =~ s/(<A HREF=)([^>:]*:)?([^>:]*)\.pod:([^>:]*:)?/$1$3.html/g;
-
- my $urls = '(' . join ('|', qw{
+ # convert some special chars to HTML escapes
+ $rest =~ s/&/&amp;/g;
+ $rest =~ s/</&lt;/g;
+ $rest =~ s/>/&gt;/g;
+ $rest =~ s/"/&quot;/g;
+
+ # try and create links for all occurrences of perl.* within
+ # the preformatted text.
+ $rest =~ s{
+ (\s*)(perl\w+)
+ }{
+ if ( defined $pages{$2} ){ # is a link
+ qq($1<A HREF="$htmlroot/$pages{$2}">$2</A>);
+ } elsif (defined $pages{dosify($2)}) { # is a link
+ qq($1<A HREF="$htmlroot/$pages{dosify($2)}">$2</A>);
+ } else {
+ "$1$2";
+ }
+ }xeg;
+ $rest =~ s{
+ (<A\ HREF="?) ([^>:]*:)? ([^>:]*) \.pod: ([^>:]*:)?
+ }{
+ my $url ;
+ if ( $htmlfileurl ne '' ){
+ # Here, we take advantage of the knowledge
+ # that $htmlfileurl ne '' implies $htmlroot eq ''.
+ # Since $htmlroot eq '', we need to prepend $htmldir
+ # on the fron of the link to get the absolute path
+ # of the link's target. We check for a leading '/'
+ # to avoid corrupting links that are #, file:, etc.
+ my $old_url = $3 ;
+ $old_url = "$htmldir$old_url" if $old_url =~ m{^\/};
+ $url = relativize_url( "$old_url.html", $htmlfileurl );
+ } else {
+ $url = "$3.html" ;
+ }
+ "$1$url" ;
+ }xeg;
+
+ # Look for embedded URLs and make them into links. We don't
+ # relativize them since they are best left as the author intended.
+
+ my $urls = '(' . join ('|', qw{
http
telnet
mailto
@@ -1112,15 +1275,16 @@ sub process_text {
} )
. ')';
- my $ltrs = '\w';
- my $gunk = '/#~:.?+=&%@!\-';
- my $punc = '.:?\-';
- my $any = "${ltrs}${gunk}${punc}";
+ my $ltrs = '\w';
+ my $gunk = '/#~:.?+=&%@!\-';
+ my $punc = '.:?\-';
+ my $any = "${ltrs}${gunk}${punc}";
- $rest =~ s{
+ $rest =~ s{
\b # start at word boundary
( # begin $1 {
$urls : # need resource and a colon
+ (?!:) # Ignore File::, among others.
[$any] +? # followed by on or more
# of any valid character, but
# be conservative and take only
@@ -1134,168 +1298,81 @@ sub process_text {
)
}{<A HREF="$1">$1</A>}igox;
- $result = "<PRE>" # text should be as it is (verbatim)
- . "$rest\n"
- . "</PRE>\n";
- } else { # formatted text
- # parse through the string, stopping each time we find a
- # pod-escape. once the string has been throughly processed
- # we can output it.
- while (length $rest) {
- # check to see if there are any possible pod directives in
- # the remaining part of the text.
- if ($rest =~ m/[BCEIFLSZ]</) {
- warn "\$rest\t= $rest\n" unless
- $rest =~ /\A
- ([^<]*?)
- ([BCEIFLSZ]?)
- <
- (.*)\Z/xs;
-
- $s1 = $1; # pure text
- $s2 = $2; # the type of pod-escape that follows
- $s3 = '<'; # '<'
- $s4 = $3; # the rest of the string
- } else {
- $s1 = $rest;
- $s2 = "";
- $s3 = "";
- $s4 = "";
- }
-
- if ($s3 eq '<' && $s2) { # a pod-escape
- $result .= ($escapeQuotes ? process_puretext($s1, \$quote) : $s1);
- $podcommand = "$s2<";
- $rest = $s4;
-
- # find the matching '>'
- $match = 1;
- $bf = 0;
- while ($match && !$bf) {
- $bf = 1;
- if ($rest =~ /\A([^<>]*[BCEIFLSZ]<)(.*)\Z/s) {
- $bf = 0;
- $match++;
- $podcommand .= $1;
- $rest = $2;
- } elsif ($rest =~ /\A([^>]*>)(.*)\Z/s) {
- $bf = 0;
- $match--;
- $podcommand .= $1;
- $rest = $2;
- }
- }
-
- if ($match != 0) {
- warn <<WARN;
-$0: $podfile: cannot find matching > for $s2 in paragraph $paragraph.
-WARN
- $result .= substr $podcommand, 0, 2;
- $rest = substr($podcommand, 2) . $rest;
- next;
- }
+ # text should be as it is (verbatim)
+ $$text = $rest;
+}
- # pull out the parameters to the pod-escape
- $podcommand =~ /^([BCFEILSZ]?)<(.*)>$/s;
- $tag = $1;
- $params = $2;
-
- # process the text within the pod-escape so that any escapes
- # which must occur do.
- process_text(\$params, 0) unless $tag eq 'L';
-
- $s1 = $params;
- if (!$tag || $tag eq " ") { # <> : no tag
- $s1 = "&lt;$params&gt;";
- } elsif ($tag eq "L") { # L<> : link
- $s1 = process_L($params);
- } elsif ($tag eq "I" || # I<> : italicize text
- $tag eq "B" || # B<> : bold text
- $tag eq "F") { # F<> : file specification
- $s1 = process_BFI($tag, $params);
- } elsif ($tag eq "C") { # C<> : literal code
- $s1 = process_C($params, 1);
- } elsif ($tag eq "E") { # E<> : escape
- $s1 = process_E($params);
- } elsif ($tag eq "Z") { # Z<> : zero-width character
- $s1 = process_Z($params);
- } elsif ($tag eq "S") { # S<> : non-breaking space
- $s1 = process_S($params);
- } elsif ($tag eq "X") { # S<> : non-breaking space
- $s1 = process_X($params);
- } else {
- warn "$0: $podfile: unhandled tag '$tag' in paragraph $paragraph\n";
- }
- $result .= "$s1";
- } else {
- # for pure text we must deal with implicit links and
- # double-quotes among other things.
- $result .= ($escapeQuotes ? process_puretext("$s1$s2$s3", \$quote) : "$s1$s2$s3");
- $rest = $s4;
- }
- }
- }
- $$text = $result;
+#
+# pure text processing
+#
+# pure_text/inIS_text: differ with respect to automatic C<> recognition.
+# we don't want this to happen within IS
+#
+sub pure_text($){
+ my $text = shift();
+ process_puretext( $text, \$ptQuote, 1 );
}
-sub html_escape {
- my $rest = $_[0];
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
- return $rest;
-}
+sub inIS_text($){
+ my $text = shift();
+ process_puretext( $text, \$ptQuote, 0 );
+}
#
# process_puretext - process pure text (without pod-escapes) converting
# double-quotes and handling implicit C<> links.
#
sub process_puretext {
- my($text, $quote) = @_;
- my(@words, $result, $rest, $lead, $trail);
+ my($text, $quote, $notinIS) = @_;
- # convert double-quotes to single-quotes
- $text =~ s/\A([^"]*)"/$1''/s if $$quote;
- while ($text =~ s/\A([^"]*)["]([^"]*)["]/$1``$2''/sg) {}
+ ## Guessing at func() or [$@%&]*var references in plain text is destined
+ ## to produce some strange looking ref's. uncomment to disable:
+ ## $notinIS = 0;
- $$quote = ($text =~ m/"/ ? 1 : 0);
- $text =~ s/\A([^"]*)"/$1``/s if $$quote;
+ my(@words, $lead, $trail);
+
+ # convert double-quotes to single-quotes
+ if( $$quote && $text =~ s/"/''/s ){
+ $$quote = 0;
+ }
+ while ($text =~ s/"([^"]*)"/``$1''/sg) {};
+ $$quote = 1 if $text =~ s/"/``/s;
# keep track of leading and trailing white-space
- $lead = ($text =~ /\A(\s*)/s ? $1 : "");
- $trail = ($text =~ /(\s*)\Z/s ? $1 : "");
+ $lead = ($text =~ s/\A(\s+)//s ? $1 : "");
+ $trail = ($text =~ s/(\s+)\Z//s ? $1 : "");
- # collapse all white space into a single space
- $text =~ s/\s+/ /g;
- @words = split(" ", $text);
+ # split at space/non-space boundaries
+ @words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text );
# process each word individually
foreach my $word (@words) {
+ # skip space runs
+ next if $word =~ /^\s*$/;
# see if we can infer a link
- if ($word =~ /^\w+\(/) {
+ if( $notinIS && $word =~ /^(\w+)\((.*)\)$/ ) {
# has parenthesis so should have been a C<> ref
- $word = process_C($word);
-# $word =~ /^[^()]*]\(/;
-# if (defined $items{$1} && $items{$1}) {
-# $word = "\n<CODE><A HREF=\"$htmlroot/$items{$1}#item_"
-# . htmlify(0,$word)
-# . "\">$word</A></CODE>";
-# } elsif (defined $items{$word} && $items{$word}) {
-# $word = "\n<CODE><A HREF=\"$htmlroot/$items{$word}#item_"
-# . htmlify(0,$word)
-# . "\">$word</A></CODE>";
-# } else {
-# $word = "\n<CODE><A HREF=\"#item_"
-# . htmlify(0,$word)
-# . "\">$word</A></CODE>";
-# }
- } elsif ($word =~ /^[\$\@%&*]+\w+$/) {
- # perl variables, should be a C<> ref
- $word = process_C($word, 1);
+ ## try for a pagename (perlXXX(1))?
+ my( $func, $args ) = ( $1, $2 );
+ if( $args =~ /^\d+$/ ){
+ my $url = page_sect( $word, '' );
+ if( defined $url ){
+ $word = "<A HREF=\"$url\">the $word manpage</A>";
+ next;
+ }
+ }
+ ## try function name for a link, append tt'ed argument list
+ $word = emit_C( $func, '', "($args)");
+
+#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing.
+## } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) {
+## # perl variables, should be a C<> ref
+## $word = emit_C( $word );
+
} elsif ($word =~ m,^\w+://\w,) {
# looks like a URL
+ # Don't relativize it: leave it as the author intended
$word = qq(<A HREF="$word">$word</A>);
} elsif ($word =~ /[\w.-]+\@[\w-]+\.\w/) {
# looks like an e-mail address
@@ -1311,42 +1388,283 @@ sub process_puretext {
}
}
- # build a new string based upon our conversion
- $result = "";
- $rest = join(" ", @words);
- while (length($rest) > 75) {
- if ( $rest =~ m/^(.{0,75})\s(.*?)$/o ||
- $rest =~ m/^(\S*)\s(.*?)$/o) {
+ # put everything back together
+ return $lead . join( '', @words ) . $trail;
+}
- $result .= "$1\n";
- $rest = $2;
+
+#
+# process_text - handles plaintext that appears in the input pod file.
+# there may be pod commands embedded within the text so those must be
+# converted to html commands.
+#
+
+sub process_text1($$;$$);
+sub pattern ($) { $_[0] ? '[^\S\n]+'.('>' x ($_[0] + 1)) : '>' }
+sub closing ($) { local($_) = shift; (defined && s/\s+$//) ? length : 0 }
+
+sub process_text {
+ return if $ignore;
+ my( $tref ) = @_;
+ my $res = process_text1( 0, $tref );
+ $$tref = $res;
+}
+
+sub process_text1($$;$$){
+ my( $lev, $rstr, $func, $closing ) = @_;
+ my $res = '';
+
+ unless (defined $func) {
+ $func = '';
+ $lev++;
+ }
+
+ if( $func eq 'B' ){
+ # B<text> - boldface
+ $res = '<STRONG>' . process_text1( $lev, $rstr ) . '</STRONG>';
+
+ } elsif( $func eq 'C' ){
+ # C<code> - can be a ref or <CODE></CODE>
+ # need to extract text
+ my $par = go_ahead( $rstr, 'C', $closing );
+
+ ## clean-up of the link target
+ my $text = depod( $par );
+
+ ### my $x = $par =~ /[BI]</ ? 'yes' : 'no' ;
+ ### print STDERR "-->call emit_C($par) lev=$lev, par with BI=$x\n";
+
+ $res = emit_C( $text, $lev > 1 || ($par =~ /[BI]</) );
+
+ } elsif( $func eq 'E' ){
+ # E<x> - convert to character
+ $$rstr =~ s/^(\w+)>//;
+ $res = "&$1;";
+
+ } elsif( $func eq 'F' ){
+ # F<filename> - italizice
+ $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+
+ } elsif( $func eq 'I' ){
+ # I<text> - italizice
+ $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+
+ } elsif( $func eq 'L' ){
+ # L<link> - link
+ ## L<text|cross-ref> => produce text, use cross-ref for linking
+ ## L<cross-ref> => make text from cross-ref
+ ## need to extract text
+ my $par = go_ahead( $rstr, 'L', $closing );
+
+ # some L<>'s that shouldn't be:
+ # a) full-blown URL's are emitted as-is
+ if( $par =~ m{^\w+://}s ){
+ return make_URL_href( $par );
+ }
+ # b) C<...> is stripped and treated as C<>
+ if( $par =~ /^C<(.*)>$/ ){
+ my $text = depod( $1 );
+ return emit_C( $text, $lev > 1 || ($par =~ /[BI]</) );
+ }
+
+ # analyze the contents
+ $par =~ s/\n/ /g; # undo word-wrapped tags
+ my $opar = $par;
+ my $linktext;
+ if( $par =~ s{^([^|]+)\|}{} ){
+ $linktext = $1;
+ }
+
+ # make sure sections start with a /
+ $par =~ s{^"}{/"};
+
+ my( $page, $section, $ident );
+
+ # check for link patterns
+ if( $par =~ m{^([^/]+?)/(?!")(.*?)$} ){ # name/ident
+ # we've got a name/ident (no quotes)
+ ( $page, $ident ) = ( $1, $2 );
+ ### print STDERR "--> L<$par> to page $page, ident $ident\n";
+
+ } elsif( $par =~ m{^(.*?)/"?(.*?)"?$} ){ # [name]/"section"
+ # even though this should be a "section", we go for ident first
+ ( $page, $ident ) = ( $1, $2 );
+ ### print STDERR "--> L<$par> to page $page, section $section\n";
+
+ } elsif( $par =~ /\s/ ){ # this must be a section with missing quotes
+ ( $page, $section ) = ( '', $par );
+ ### print STDERR "--> L<$par> to void page, section $section\n";
+
+ } else {
+ ( $page, $section ) = ( $par, '' );
+ ### print STDERR "--> L<$par> to page $par, void section\n";
+ }
+
+ # now, either $section or $ident is defined. the convoluted logic
+ # below tries to resolve L<> according to what the user specified.
+ # failing this, we try to find the next best thing...
+ my( $url, $ltext, $fid );
+
+ RESOLVE: {
+ if( defined $ident ){
+ ## try to resolve $ident as an item
+ ( $url, $fid ) = coderef( $page, $ident );
+ if( $url ){
+ if( ! defined( $linktext ) ){
+ $linktext = $ident;
+ $linktext .= " in " if $ident && $page;
+ $linktext .= "the $page manpage" if $page;
+ }
+ ### print STDERR "got coderef url=$url\n";
+ last RESOLVE;
+ }
+ ## no luck: go for a section (auto-quoting!)
+ $section = $ident;
+ }
+ ## now go for a section
+ my $htmlsection = htmlify( $section );
+ $url = page_sect( $page, $htmlsection );
+ if( $url ){
+ if( ! defined( $linktext ) ){
+ $linktext = $section;
+ $linktext .= " in " if $section && $page;
+ $linktext .= "the $page manpage" if $page;
+ }
+ ### print STDERR "got page/section url=$url\n";
+ last RESOLVE;
+ }
+ ## no luck: go for an ident
+ if( $section ){
+ $ident = $section;
+ } else {
+ $ident = $page;
+ $page = undef();
+ }
+ ( $url, $fid ) = coderef( $page, $ident );
+ if( $url ){
+ if( ! defined( $linktext ) ){
+ $linktext = $ident;
+ $linktext .= " in " if $ident && $page;
+ $linktext .= "the $page manpage" if $page;
+ }
+ ### print STDERR "got section=>coderef url=$url\n";
+ last RESOLVE;
+ }
+
+ # warning; show some text.
+ $linktext = $opar unless defined $linktext;
+ warn "$0: $podfile: cannot resolve L<$opar> in paragraph $paragraph.";
+ }
+
+ # now we have an URL or just plain code
+ $$rstr = $linktext . '>' . $$rstr;
+ if( defined( $url ) ){
+ $res = "<A HREF=\"$url\">" . process_text1( $lev, $rstr ) . '</A>';
+ } else {
+ $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+ }
+
+ } elsif( $func eq 'S' ){
+ # S<text> - non-breaking spaces
+ $res = process_text1( $lev, $rstr );
+ $res =~ s/ /&nbsp;/g;
+
+ } elsif( $func eq 'X' ){
+ # X<> - ignore
+ $$rstr =~ s/^[^>]*>//;
+
+ } elsif( $func eq 'Z' ){
+ # Z<> - empty
+ warn "$0: $podfile: invalid X<> in paragraph $paragraph."
+ unless $$rstr =~ s/^>//;
+
+ } else {
+ my $term = pattern $closing;
+ while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ){
+ # all others: either recurse into new function or
+ # terminate at closing angle bracket(s)
+ my $pt = $1;
+ $pt .= $2 if !$3 && $lev == 1;
+ $res .= $lev == 1 ? pure_text( $pt ) : inIS_text( $pt );
+ return $res if !$3 && $lev > 1;
+ if( $3 ){
+ $res .= process_text1( $lev, $rstr, $3, closing $4 );
+ }
+ }
+ if( $lev == 1 ){
+ $res .= pure_text( $$rstr );
} else {
- $result .= "$rest\n";
- $rest = "";
+ warn "$0: $podfile: undelimited $func<> in paragraph $paragraph.";
}
}
- $result .= $rest if $rest;
+ return $res;
+}
- # restore the leading and trailing white-space
- $result = "$lead$result$trail";
+#
+# go_ahead: extract text of an IS (can be nested)
+#
+sub go_ahead($$$){
+ my( $rstr, $func, $closing ) = @_;
+ my $res = '';
+ my @closing = ($closing);
+ while( $$rstr =~
+ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|@{[pattern $closing[0]]})//s ){
+ $res .= $1;
+ unless( $3 ){
+ shift @closing;
+ return $res unless @closing;
+ } else {
+ unshift @closing, closing $4;
+ }
+ $res .= $2;
+ }
+ warn "$0: $podfile: undelimited $func<> in paragraph $paragraph.";
+ return $res;
+}
- return $result;
+#
+# emit_C - output result of C<text>
+# $text is the depod-ed text
+#
+sub emit_C($;$$){
+ my( $text, $nocode, $args ) = @_;
+ $args = '' unless defined $args;
+ my $res;
+ my( $url, $fid ) = coderef( undef(), $text );
+
+ # need HTML-safe text
+ my $linktext = html_escape( "$text$args" );
+
+ if( defined( $url ) &&
+ (!defined( $EmittedItem ) || $EmittedItem ne $fid ) ){
+ $res = "<A HREF=\"$url\"><CODE>$linktext</CODE></A>";
+ } elsif( 0 && $nocode ){
+ $res = $linktext;
+ } else {
+ $res = "<CODE>$linktext</CODE>";
+ }
+ return $res;
}
#
-# pre_escape - convert & in text to $amp;
+# html_escape: make text safe for HTML
#
-sub pre_escape {
- my($str) = @_;
+sub html_escape {
+ my $rest = $_[0];
+ $rest =~ s/&/&amp;/g;
+ $rest =~ s/</&lt;/g;
+ $rest =~ s/>/&gt;/g;
+ $rest =~ s/"/&quot;/g;
+ return $rest;
+}
- $$str =~ s,&,&amp;,g;
-}
#
# dosify - convert filenames to 8.3
#
sub dosify {
my($str) = @_;
+ return lc($str) if $^O eq 'VMS'; # VMS just needs casing
if ($Is83) {
$str = lc $str;
$str =~ s/(\.\w+)/substr ($1,0,4)/ge;
@@ -1356,183 +1674,205 @@ sub dosify {
}
#
-# process_L - convert a pod L<> directive to a corresponding HTML link.
-# most of the links made are inferred rather than known about directly
-# (i.e it's not known whether the =head\d section exists in the target file,
-# or whether a .pod file exists in the case of split files). however, the
-# guessing usually works.
-#
-# Unlike the other directives, this should be called with an unprocessed
-# string, else tags in the link won't be matched.
+# page_sect - make an URL from the text of a L<>
#
-sub process_L {
- my($str) = @_;
- my($s1, $s2, $linktext, $page, $page83, $section, $link); # work strings
-
- $str =~ s/\n/ /g; # undo word-wrapped tags
- $s1 = $str;
- for ($s1) {
- # LREF: a la HREF L<show this text|man/section>
- $linktext = $1 if s:^([^|]+)\|::;
-
- # make sure sections start with a /
- s,^",/",g;
- s,^,/,g if (!m,/, && / /);
-
- # check if there's a section specified
- if (m,^(.*?)/"?(.*?)"?$,) { # yes
- ($page, $section) = ($1, $2);
- } else { # no
- ($page, $section) = ($str, "");
- }
-
- # check if we know that this is a section in this page
- if (!defined $pages{$page} && defined $sections{$page}) {
- $section = $page;
- $page = "";
- }
+sub page_sect($$) {
+ my( $page, $section ) = @_;
+ my( $linktext, $page83, $link); # work strings
+
+ # check if we know that this is a section in this page
+ if (!defined $pages{$page} && defined $sections{$page}) {
+ $section = $page;
+ $page = "";
+ ### print STDERR "reset page='', section=$section\n";
}
$page83=dosify($page);
$page=$page83 if (defined $pages{$page83});
if ($page eq "") {
- $link = "#" . htmlify(0,$section);
- $linktext = $section unless defined($linktext);
+ $link = "#" . htmlify( $section );
} elsif ( $page =~ /::/ ) {
- $linktext = ($section ? "$section" : "$page");
$page =~ s,::,/,g;
+ # Search page cache for an entry keyed under the html page name,
+ # then look to see what directory that page might be in. NOTE:
+ # this will only find one page. A better solution might be to produce
+ # an intermediate page that is an index to all such pages.
+ my $page_name = $page ;
+ $page_name =~ s,^.*/,,s ;
+ if ( defined( $pages{ $page_name } ) &&
+ $pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/
+ ) {
+ $page = $1 ;
+ }
+ else {
+ # NOTE: This branch assumes that all A::B pages are located in
+ # $htmlroot/A/B.html . This is often incorrect, since they are
+ # often in $htmlroot/lib/A/B.html or such like. Perhaps we could
+ # analyze the contents of %pages and figure out where any
+ # cousins of A::B are, then assume that. So, if A::B isn't found,
+ # but A::C is found in lib/A/C.pm, then A::B is assumed to be in
+ # lib/A/B.pm. This is also limited, but it's an improvement.
+ # Maybe a hints file so that the links point to the correct places
+ # nonetheless?
+
+ }
$link = "$htmlroot/$page.html";
- $link .= "#" . htmlify(0,$section) if ($section);
+ $link .= "#" . htmlify( $section ) if ($section);
} elsif (!defined $pages{$page}) {
- warn "$0: $podfile: cannot resolve L<$str> in paragraph $paragraph: no such page '$page'\n";
$link = "";
- $linktext = $page unless defined($linktext);
} else {
- $linktext = ($section ? "$section" : "the $page manpage") unless defined($linktext);
- $section = htmlify(0,$section) if $section ne "";
+ $section = htmlify( $section ) if $section ne "";
+ ### print STDERR "...section=$section\n";
# if there is a directory by the name of the page, then assume that an
# appropriate section will exist in the subdirectory
- if ($section ne "" && $pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) {
+# if ($section ne "" && $pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) {
+ if ($section ne "" && $pages{$page} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) {
$link = "$htmlroot/$1/$section.html";
+ ### print STDERR "...link=$link\n";
# since there is no directory by the name of the page, the section will
# have to exist within a .html of the same name. thus, make sure there
# is a .pod or .pm that might become that .html
} else {
- $section = "#$section";
+ $section = "#$section" if $section;
+ ### print STDERR "...section=$section\n";
+
# check if there is a .pod with the page name
if ($pages{$page} =~ /([^:]*)\.pod:/) {
$link = "$htmlroot/$1.html$section";
} elsif ($pages{$page} =~ /([^:]*)\.pm:/) {
$link = "$htmlroot/$1.html$section";
} else {
- warn "$0: $podfile: cannot resolve L$str in paragraph $paragraph: ".
- "no .pod or .pm found\n";
$link = "";
- $linktext = $section unless defined($linktext);
}
}
}
- process_text(\$linktext, 0);
if ($link) {
- $s1 = "<A HREF=\"$link\">$linktext</A>";
+ # Here, we take advantage of the knowledge that $htmlfileurl ne ''
+ # implies $htmlroot eq ''. This means that the link in question
+ # needs a prefix of $htmldir if it begins with '/'. The test for
+ # the initial '/' is done to avoid '#'-only links, and to allow
+ # for other kinds of links, like file:, ftp:, etc.
+ my $url ;
+ if ( $htmlfileurl ne '' ) {
+ $link = "$htmldir$link" if $link =~ m{^/}s;
+ $url = relativize_url( $link, $htmlfileurl );
+# print( " b: [$link,$htmlfileurl,$url]\n" );
+ }
+ else {
+ $url = $link ;
+ }
+ return $url;
+
} else {
- $s1 = "<EM>$linktext</EM>";
+ return undef();
}
- return $s1;
}
#
-# process_BFI - process any of the B<>, F<>, or I<> pod-escapes and
-# convert them to corresponding HTML directives.
+# relativize_url - convert an absolute URL to one relative to a base URL.
+# Assumes both end in a filename.
#
-sub process_BFI {
- my($tag, $str) = @_;
- my($s1); # work string
- my(%repltext) = ( 'B' => 'STRONG',
- 'F' => 'EM',
- 'I' => 'EM');
+sub relativize_url {
+ my ($dest,$source) = @_ ;
- # extract the modified text and convert to HTML
- $s1 = "<$repltext{$tag}>$str</$repltext{$tag}>";
- return $s1;
-}
-
-#
-# process_C - process the C<> pod-escape.
-#
-sub process_C {
- my($str, $doref) = @_;
- my($s1, $s2);
+ my ($dest_volume,$dest_directory,$dest_file) =
+ File::Spec::Unix->splitpath( $dest ) ;
+ $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ;
- $s1 = $str;
- $s1 =~ s/\([^()]*\)//g; # delete parentheses
- $s2 = $s1;
- $s1 =~ s/\W//g; # delete bogus characters
- $str = html_escape($str);
+ my ($source_volume,$source_directory,$source_file) =
+ File::Spec::Unix->splitpath( $source ) ;
+ $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ;
- # if there was a pod file that we found earlier with an appropriate
- # =item directive, then create a link to that page.
- if ($doref && defined $items{$s1}) {
- $s1 = ($items{$s1} ?
- "<A HREF=\"$htmlroot/$items{$s1}#item_" . htmlify(0,$s2) . "\">$str</A>" :
- "<A HREF=\"#item_" . htmlify(0,$s2) . "\">$str</A>");
- $s1 =~ s,(perl\w+/(\S+)\.html)#item_\2\b,$1,;
- confess "s1 has space: $s1" if $s1 =~ /HREF="[^"]*\s[^"]*"/;
- } else {
- $s1 = "<CODE>$str</CODE>";
- # warn "$0: $podfile: cannot resolve C<$str> in paragraph $paragraph\n" if $verbose
+ my $rel_path = '' ;
+ if ( $dest ne '' ) {
+ $rel_path = File::Spec::Unix->abs2rel( $dest, $source ) ;
}
+ if ( $rel_path ne '' &&
+ substr( $rel_path, -1 ) ne '/' &&
+ substr( $dest_file, 0, 1 ) ne '#'
+ ) {
+ $rel_path .= "/$dest_file" ;
+ }
+ else {
+ $rel_path .= "$dest_file" ;
+ }
- return $s1;
+ return $rel_path ;
}
+
#
-# process_E - process the E<> pod directive which seems to escape a character.
+# coderef - make URL from the text of a C<>
#
-sub process_E {
- my($str) = @_;
+sub coderef($$){
+ my( $page, $item ) = @_;
+ my( $url );
+
+ my $fid = fragment_id( $item );
+ if( defined( $page ) ){
+ # we have been given a $page...
+ $page =~ s{::}{/}g;
+
+ # Do we take it? Item could be a section!
+ my $base = $items{$fid} || "";
+ $base =~ s{[^/]*/}{};
+ if( $base ne "$page.html" ){
+ ### print STDERR "coderef( $page, $item ): items{$fid} = $items{$fid} = $base => discard page!\n";
+ $page = undef();
+ }
- for ($str) {
- s,([^/].*),\&$1\;,g;
+ } else {
+ # no page - local items precede cached items
+ if( defined( $fid ) ){
+ if( exists $local_items{$fid} ){
+ $page = $local_items{$fid};
+ } else {
+ $page = $items{$fid};
+ }
+ }
}
- return $str;
-}
+ # if there was a pod file that we found earlier with an appropriate
+ # =item directive, then create a link to that page.
+ if( defined $page ){
+ if( $page ){
+ if( exists $pages{$page} and $pages{$page} =~ /([^:.]*)\.[^:]*:/){
+ $page = $1 . '.html';
+ }
+ my $link = "$htmlroot/$page#item_$fid";
-#
-# process_Z - process the Z<> pod directive which really just amounts to
-# ignoring it. this allows someone to start a paragraph with an =
-#
-sub process_Z {
- my($str) = @_;
+ # Here, we take advantage of the knowledge that $htmlfileurl
+ # ne '' implies $htmlroot eq ''.
+ if ( $htmlfileurl ne '' ) {
+ $link = "$htmldir$link" ;
+ $url = relativize_url( $link, $htmlfileurl ) ;
+ } else {
+ $url = $link ;
+ }
+ } else {
+ $url = "#item_" . $fid;
+ }
- # there is no equivalent in HTML for this so just ignore it.
- $str = "";
- return $str;
+ confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
+ }
+ return( $url, $fid );
}
-#
-# process_S - process the S<> pod directive which means to convert all
-# spaces in the string to non-breaking spaces (in HTML-eze).
-#
-sub process_S {
- my($str) = @_;
- # convert all spaces in the text to non-breaking spaces in HTML.
- $str =~ s/ /&nbsp;/g;
- return $str;
-}
#
-# process_X - this is supposed to make an index entry. we'll just
-# ignore it.
-#
-sub process_X {
- return '';
+# Adapted from Nick Ing-Simmons' PodToHtml package.
+sub relative_url {
+ my $source_file = shift ;
+ my $destination_file = shift;
+
+ my $source = URI::file->new_abs($source_file);
+ my $uo = URI::file->new($destination_file,$source)->abs;
+ return $uo->rel->as_string;
}
@@ -1549,29 +1889,131 @@ sub finish_list {
#
# htmlify - converts a pod section specification to a suitable section
-# specification for HTML. if first arg is 1, only takes 1st word.
+# specification for HTML. Note that we keep spaces and special characters
+# except ", ? (Netscape problem) and the hyphen (writer's problem...).
#
sub htmlify {
- my($compact, $heading) = @_;
+ my( $heading) = @_;
+ $heading =~ s/(\s+)/ /g;
+ $heading =~ s/\s+\Z//;
+ $heading =~ s/\A\s+//;
+ # The hyphen is a disgrace to the English language.
+ $heading =~ s/[-"?]//g;
+ $heading = lc( $heading );
+ return $heading;
+}
- if ($compact) {
- $heading =~ /^(\w+)/;
- $heading = $1;
- }
+#
+# depod - convert text by eliminating all interior sequences
+# Note: can be called with copy or modify semantics
+#
+my %E2c;
+$E2c{lt} = '<';
+$E2c{gt} = '>';
+$E2c{sol} = '/';
+$E2c{verbar} = '|';
+$E2c{amp} = '&'; # in Tk's pods
+
+sub depod1($;$$);
+
+sub depod($){
+ my $string;
+ if( ref( $_[0] ) ){
+ $string = ${$_[0]};
+ ${$_[0]} = depod1( \$string );
+ } else {
+ $string = $_[0];
+ depod1( \$string );
+ }
+}
- # $heading = lc($heading);
- $heading =~ s/[^\w\s]/_/g;
- $heading =~ s/(\s+)/ /g;
- $heading =~ s/^\s*(.*?)\s*$/$1/s;
- $heading =~ s/ /_/g;
- $heading =~ s/\A(.{32}).*\Z/$1/s;
- $heading =~ s/\s+\Z//;
- $heading =~ s/_{2,}/_/g;
+sub depod1($;$$){
+ my( $rstr, $func, $closing ) = @_;
+ my $res = '';
+ return $res unless defined $$rstr;
+ if( ! defined( $func ) ){
+ # skip to next begin of an interior sequence
+ while( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?// ){
+ # recurse into its text
+ $res .= $1 . depod1( $rstr, $2, closing $3);
+ }
+ $res .= $$rstr;
+ } elsif( $func eq 'E' ){
+ # E<x> - convert to character
+ $$rstr =~ s/^(\w+)>//;
+ $res .= $E2c{$1} || "";
+ } elsif( $func eq 'X' ){
+ # X<> - ignore
+ $$rstr =~ s/^[^>]*>//;
+ } elsif( $func eq 'Z' ){
+ # Z<> - empty
+ $$rstr =~ s/^>//;
+ } else {
+ # all others: either recurse into new function or
+ # terminate at closing angle bracket
+ my $term = pattern $closing;
+ while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)// ){
+ $res .= $1;
+ last unless $3;
+ $res .= depod1( $rstr, $3, closing $4 );
+ }
+ ## If we're here and $2 ne '>': undelimited interior sequence.
+ ## Ignored, as this is called without proper indication of where we are.
+ ## Rely on process_text to produce diagnostics.
+ }
+ return $res;
+}
- return $heading;
+#
+# fragment_id - construct a fragment identifier from:
+# a) =item text
+# b) contents of C<...>
+#
+my @hc;
+sub fragment_id {
+ my $text = shift();
+ $text =~ s/\s+\Z//s;
+ if( $text ){
+ # a method or function?
+ return $1 if $text =~ /(\w+)\s*\(/;
+ return $1 if $text =~ /->\s*(\w+)\s*\(?/;
+
+ # a variable name?
+ return $1 if $text =~ /^([$@%*]\S+)/;
+
+ # some pattern matching operator?
+ return $1 if $text =~ m|^(\w+/).*/\w*$|;
+
+ # fancy stuff... like "do { }"
+ return $1 if $text =~ m|^(\w+)\s*{.*}$|;
+
+ # honour the perlfunc manpage: func [PAR[,[ ]PAR]...]
+ # and some funnies with ... Module ...
+ return $1 if $text =~ m{^([a-z\d]+)(\s+[A-Z\d,/& ]+)?$};
+ return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$};
+
+ # text? normalize!
+ $text =~ s/\s+/_/sg;
+ $text =~ s{(\W)}{
+ defined( $hc[ord($1)] ) ? $hc[ord($1)]
+ : ( $hc[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe;
+ $text = substr( $text, 0, 50 );
+ } else {
+ return undef();
+ }
}
-BEGIN {
+#
+# make_URL_href - generate HTML href from URL
+# Special treatment for CGI queries.
+#
+sub make_URL_href($){
+ my( $url ) = @_;
+ if( $url !~
+ s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{<A HREF="$1$2">$1</A>}i ){
+ $url = "<A HREF=\"$url\">$url</A>";
+ }
+ return $url;
}
1;
diff --git a/contrib/perl5/lib/Pod/InputObjects.pm b/contrib/perl5/lib/Pod/InputObjects.pm
new file mode 100644
index 0000000..849182b
--- /dev/null
+++ b/contrib/perl5/lib/Pod/InputObjects.pm
@@ -0,0 +1,933 @@
+#############################################################################
+# Pod/InputObjects.pm -- package which defines objects for input streams
+# and paragraphs and commands when parsing POD docs.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::InputObjects;
+
+use vars qw($VERSION);
+$VERSION = 1.12; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::InputObjects - objects representing POD input paragraphs, commands, etc.
+
+=head1 SYNOPSIS
+
+ use Pod::InputObjects;
+
+=head1 REQUIRES
+
+perl5.004, Carp
+
+=head1 EXPORTS
+
+Nothing.
+
+=head1 DESCRIPTION
+
+This module defines some basic input objects used by B<Pod::Parser> when
+reading and parsing POD text from an input source. The following objects
+are defined:
+
+=over 4
+
+=begin __PRIVATE__
+
+=item B<Pod::InputSource>
+
+An object corresponding to a source of POD input text. It is mostly a
+wrapper around a filehandle or C<IO::Handle>-type object (or anything
+that implements the C<getline()> method) which keeps track of some
+additional information relevant to the parsing of PODs.
+
+=end __PRIVATE__
+
+=item B<Pod::Paragraph>
+
+An object corresponding to a paragraph of POD input text. It may be a
+plain paragraph, a verbatim paragraph, or a command paragraph (see
+L<perlpod>).
+
+=item B<Pod::InteriorSequence>
+
+An object corresponding to an interior sequence command from the POD
+input text (see L<perlpod>).
+
+=item B<Pod::ParseTree>
+
+An object corresponding to a tree of parsed POD text. Each "node" in
+a parse-tree (or I<ptree>) is either a text-string or a reference to
+a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree
+in they order in which they were parsed from left-to-right.
+
+=back
+
+Each of these input objects are described in further detail in the
+sections which follow.
+
+=cut
+
+#############################################################################
+
+use strict;
+#use diagnostics;
+#use Carp;
+
+#############################################################################
+
+package Pod::InputSource;
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<Pod::InputSource>
+
+This object corresponds to an input source or stream of POD
+documentation. When parsing PODs, it is necessary to associate and store
+certain context information with each input source. All of this
+information is kept together with the stream itself in one of these
+C<Pod::InputSource> objects. Each such object is merely a wrapper around
+an C<IO::Handle> object of some kind (or at least something that
+implements the C<getline()> method). They have the following
+methods/attributes:
+
+=end __PRIVATE__
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<new()>
+
+ my $pod_input1 = Pod::InputSource->new(-handle => $filehandle);
+ my $pod_input2 = new Pod::InputSource(-handle => $filehandle,
+ -name => $name);
+ my $pod_input3 = new Pod::InputSource(-handle => \*STDIN);
+ my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN,
+ -name => "(STDIN)");
+
+This is a class method that constructs a C<Pod::InputSource> object and
+returns a reference to the new input source object. It takes one or more
+keyword arguments in the form of a hash. The keyword C<-handle> is
+required and designates the corresponding input handle. The keyword
+C<-name> is optional and specifies the name associated with the input
+handle (typically a file name).
+
+=end __PRIVATE__
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = { -name => '(unknown)',
+ -handle => undef,
+ -was_cutting => 0,
+ @_ };
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<name()>
+
+ my $filename = $pod_input->name();
+ $pod_input->name($new_filename_to_use);
+
+This method gets/sets the name of the input source (usually a filename).
+If no argument is given, it returns a string containing the name of
+the input source; otherwise it sets the name of the input source to the
+contents of the given argument.
+
+=end __PRIVATE__
+
+=cut
+
+sub name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## allow 'filename' as an alias for 'name'
+*filename = \&name;
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<handle()>
+
+ my $handle = $pod_input->handle();
+
+Returns a reference to the handle object from which input is read (the
+one used to contructed this input source object).
+
+=end __PRIVATE__
+
+=cut
+
+sub handle {
+ return $_[0]->{'-handle'};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<was_cutting()>
+
+ print "Yes.\n" if ($pod_input->was_cutting());
+
+The value of the C<cutting> state (that the B<cutting()> method would
+have returned) immediately before any input was read from this input
+stream. After all input from this stream has been read, the C<cutting>
+state is restored to this value.
+
+=end __PRIVATE__
+
+=cut
+
+sub was_cutting {
+ (@_ > 1) and $_[0]->{-was_cutting} = $_[1];
+ return $_[0]->{-was_cutting};
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::Paragraph;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::Paragraph>
+
+An object representing a paragraph of POD input text.
+It has the following methods/attributes:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 B<new()>
+
+ my $pod_para1 = Pod::Paragraph->new(-text => $text);
+ my $pod_para2 = Pod::Paragraph->new(-name => $cmd,
+ -text => $text);
+ my $pod_para3 = new Pod::Paragraph(-text => $text);
+ my $pod_para4 = new Pod::Paragraph(-name => $cmd,
+ -text => $text);
+ my $pod_para5 = Pod::Paragraph->new(-name => $cmd,
+ -text => $text,
+ -file => $filename,
+ -line => $line_number);
+
+This is a class method that constructs a C<Pod::Paragraph> object and
+returns a reference to the new paragraph object. It may be given one or
+two keyword arguments. The C<-text> keyword indicates the corresponding
+text of the POD paragraph. The C<-name> keyword indicates the name of
+the corresponding POD command, such as C<head1> or C<item> (it should
+I<not> contain the C<=> prefix); this is needed only if the POD
+paragraph corresponds to a command paragraph. The C<-file> and C<-line>
+keywords indicate the filename and line number corresponding to the
+beginning of the paragraph
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = {
+ -name => undef,
+ -text => (@_ == 1) ? $_[0] : undef,
+ -file => '<unknown-file>',
+ -line => 0,
+ -prefix => '=',
+ -separator => ' ',
+ -ptree => [],
+ @_
+ };
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<cmd_name()>
+
+ my $para_cmd = $pod_para->cmd_name();
+
+If this paragraph is a command paragraph, then this method will return
+the name of the command (I<without> any leading C<=> prefix).
+
+=cut
+
+sub cmd_name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## let name() be an alias for cmd_name()
+*name = \&cmd_name;
+
+##---------------------------------------------------------------------------
+
+=head2 B<text()>
+
+ my $para_text = $pod_para->text();
+
+This method will return the corresponding text of the paragraph.
+
+=cut
+
+sub text {
+ (@_ > 1) and $_[0]->{'-text'} = $_[1];
+ return $_[0]->{'-text'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<raw_text()>
+
+ my $raw_pod_para = $pod_para->raw_text();
+
+This method will return the I<raw> text of the POD paragraph, exactly
+as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ return $_[0]->{'-text'} unless (defined $_[0]->{'-name'});
+ return $_[0]->{'-prefix'} . $_[0]->{'-name'} .
+ $_[0]->{'-separator'} . $_[0]->{'-text'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<cmd_prefix()>
+
+ my $prefix = $pod_para->cmd_prefix();
+
+If this paragraph is a command paragraph, then this method will return
+the prefix used to denote the command (which should be the string "="
+or "==").
+
+=cut
+
+sub cmd_prefix {
+ return $_[0]->{'-prefix'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<cmd_separator()>
+
+ my $separator = $pod_para->cmd_separator();
+
+If this paragraph is a command paragraph, then this method will return
+the text used to separate the command name from the rest of the
+paragraph (if any).
+
+=cut
+
+sub cmd_separator {
+ return $_[0]->{'-separator'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<parse_tree()>
+
+ my $ptree = $pod_parser->parse_text( $pod_para->text() );
+ $pod_para->parse_tree( $ptree );
+ $ptree = $pod_para->parse_tree();
+
+This method will get/set the corresponding parse-tree of the paragraph's text.
+
+=cut
+
+sub parse_tree {
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+}
+
+## let ptree() be an alias for parse_tree()
+*ptree = \&parse_tree;
+
+##---------------------------------------------------------------------------
+
+=head2 B<file_line()>
+
+ my ($filename, $line_number) = $pod_para->file_line();
+ my $position = $pod_para->file_line();
+
+Returns the current filename and line number for the paragraph
+object. If called in an array context, it returns a list of two
+elements: first the filename, then the line number. If called in
+a scalar context, it returns a string containing the filename, followed
+by a colon (':'), followed by the line number.
+
+=cut
+
+sub file_line {
+ my @loc = ($_[0]->{'-file'} || '<unknown-file>',
+ $_[0]->{'-line'} || 0);
+ return (wantarray) ? @loc : join(':', @loc);
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::InteriorSequence;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::InteriorSequence>
+
+An object representing a POD interior sequence command.
+It has the following methods/attributes:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 B<new()>
+
+ my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd
+ -ldelim => $delimiter);
+ my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd,
+ -ldelim => $delimiter);
+ my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd,
+ -ldelim => $delimiter,
+ -file => $filename,
+ -line => $line_number);
+
+ my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree);
+ my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree);
+
+This is a class method that constructs a C<Pod::InteriorSequence> object
+and returns a reference to the new interior sequence object. It should
+be given two keyword arguments. The C<-ldelim> keyword indicates the
+corresponding left-delimiter of the interior sequence (e.g. 'E<lt>').
+The C<-name> keyword indicates the name of the corresponding interior
+sequence command, such as C<I> or C<B> or C<C>. The C<-file> and
+C<-line> keywords indicate the filename and line number corresponding
+to the beginning of the interior sequence. If the C<$ptree> argument is
+given, it must be the last argument, and it must be either string, or
+else an array-ref suitable for passing to B<Pod::ParseTree::new> (or
+it may be a reference to an Pod::ParseTree object).
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## See if first argument has no keyword
+ if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) {
+ ## Yup - need an implicit '-name' before first parameter
+ unshift @_, '-name';
+ }
+
+ ## See if odd number of args
+ if ((@_ % 2) != 0) {
+ ## Yup - need an implicit '-ptree' before the last parameter
+ splice @_, $#_, 0, '-ptree';
+ }
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = {
+ -name => (@_ == 1) ? $_[0] : undef,
+ -file => '<unknown-file>',
+ -line => 0,
+ -ldelim => '<',
+ -rdelim => '>',
+ @_
+ };
+
+ ## Initialize contents if they havent been already
+ my $ptree = $self->{'-ptree'} || new Pod::ParseTree();
+ if ( ref $ptree =~ /^(ARRAY)?$/ ) {
+ ## We have an array-ref, or a normal scalar. Pass it as an
+ ## an argument to the ptree-constructor
+ $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree);
+ }
+ $self->{'-ptree'} = $ptree;
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<cmd_name()>
+
+ my $seq_cmd = $pod_seq->cmd_name();
+
+The name of the interior sequence command.
+
+=cut
+
+sub cmd_name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## let name() be an alias for cmd_name()
+*name = \&cmd_name;
+
+##---------------------------------------------------------------------------
+
+## Private subroutine to set the parent pointer of all the given
+## children that are interior-sequences to be $self
+
+sub _set_child2parent_links {
+ my ($self, @children) = @_;
+ ## Make sure any sequences know who their parent is
+ for (@children) {
+ next unless (length and ref and ref ne 'SCALAR');
+ if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or
+ UNIVERSAL::can($_, 'nested'))
+ {
+ $_->nested($self);
+ }
+ }
+}
+
+## Private subroutine to unset child->parent links
+
+sub _unset_child2parent_links {
+ my $self = shift;
+ $self->{'-parent_sequence'} = undef;
+ my $ptree = $self->{'-ptree'};
+ for (@$ptree) {
+ next unless (length and ref and ref ne 'SCALAR');
+ $_->_unset_child2parent_links()
+ if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<prepend()>
+
+ $pod_seq->prepend($text);
+ $pod_seq1->prepend($pod_seq2);
+
+Prepends the given string or parse-tree or sequence object to the parse-tree
+of this interior sequence.
+
+=cut
+
+sub prepend {
+ my $self = shift;
+ $self->{'-ptree'}->prepend(@_);
+ _set_child2parent_links($self, @_);
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<append()>
+
+ $pod_seq->append($text);
+ $pod_seq1->append($pod_seq2);
+
+Appends the given string or parse-tree or sequence object to the parse-tree
+of this interior sequence.
+
+=cut
+
+sub append {
+ my $self = shift;
+ $self->{'-ptree'}->append(@_);
+ _set_child2parent_links($self, @_);
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<nested()>
+
+ $outer_seq = $pod_seq->nested || print "not nested";
+
+If this interior sequence is nested inside of another interior
+sequence, then the outer/parent sequence that contains it is
+returned. Otherwise C<undef> is returned.
+
+=cut
+
+sub nested {
+ my $self = shift;
+ (@_ == 1) and $self->{'-parent_sequence'} = shift;
+ return $self->{'-parent_sequence'} || undef;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<raw_text()>
+
+ my $seq_raw_text = $pod_seq->raw_text();
+
+This method will return the I<raw> text of the POD interior sequence,
+exactly as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ my $self = shift;
+ my $text = $self->{'-name'} . $self->{'-ldelim'};
+ for ( $self->{'-ptree'}->children ) {
+ $text .= (ref $_) ? $_->raw_text : $_;
+ }
+ $text .= $self->{'-rdelim'};
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<left_delimiter()>
+
+ my $ldelim = $pod_seq->left_delimiter();
+
+The leftmost delimiter beginning the argument text to the interior
+sequence (should be "<").
+
+=cut
+
+sub left_delimiter {
+ (@_ > 1) and $_[0]->{'-ldelim'} = $_[1];
+ return $_[0]->{'-ldelim'};
+}
+
+## let ldelim() be an alias for left_delimiter()
+*ldelim = \&left_delimiter;
+
+##---------------------------------------------------------------------------
+
+=head2 B<right_delimiter()>
+
+The rightmost delimiter beginning the argument text to the interior
+sequence (should be ">").
+
+=cut
+
+sub right_delimiter {
+ (@_ > 1) and $_[0]->{'-rdelim'} = $_[1];
+ return $_[0]->{'-rdelim'};
+}
+
+## let rdelim() be an alias for right_delimiter()
+*rdelim = \&right_delimiter;
+
+##---------------------------------------------------------------------------
+
+=head2 B<parse_tree()>
+
+ my $ptree = $pod_parser->parse_text($paragraph_text);
+ $pod_seq->parse_tree( $ptree );
+ $ptree = $pod_seq->parse_tree();
+
+This method will get/set the corresponding parse-tree of the interior
+sequence's text.
+
+=cut
+
+sub parse_tree {
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+}
+
+## let ptree() be an alias for parse_tree()
+*ptree = \&parse_tree;
+
+##---------------------------------------------------------------------------
+
+=head2 B<file_line()>
+
+ my ($filename, $line_number) = $pod_seq->file_line();
+ my $position = $pod_seq->file_line();
+
+Returns the current filename and line number for the interior sequence
+object. If called in an array context, it returns a list of two
+elements: first the filename, then the line number. If called in
+a scalar context, it returns a string containing the filename, followed
+by a colon (':'), followed by the line number.
+
+=cut
+
+sub file_line {
+ my @loc = ($_[0]->{'-file'} || '<unknown-file>',
+ $_[0]->{'-line'} || 0);
+ return (wantarray) ? @loc : join(':', @loc);
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<DESTROY()>
+
+This method performs any necessary cleanup for the interior-sequence.
+If you override this method then it is B<imperative> that you invoke
+the parent method from within your own method, otherwise
+I<interior-sequence storage will not be reclaimed upon destruction!>
+
+=cut
+
+sub DESTROY {
+ ## We need to get rid of all child->parent pointers throughout the
+ ## tree so their reference counts will go to zero and they can be
+ ## garbage-collected
+ _unset_child2parent_links(@_);
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::ParseTree;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::ParseTree>
+
+This object corresponds to a tree of parsed POD text. As POD text is
+scanned from left to right, it is parsed into an ordered list of
+text-strings and B<Pod::InteriorSequence> objects (in order of
+appearance). A B<Pod::ParseTree> object corresponds to this list of
+strings and sequences. Each interior sequence in the parse-tree may
+itself contain a parse-tree (since interior sequences may be nested).
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 B<new()>
+
+ my $ptree1 = Pod::ParseTree->new;
+ my $ptree2 = new Pod::ParseTree;
+ my $ptree4 = Pod::ParseTree->new($array_ref);
+ my $ptree3 = new Pod::ParseTree($array_ref);
+
+This is a class method that constructs a C<Pod::Parse_tree> object and
+returns a reference to the new parse-tree. If a single-argument is given,
+it must be a reference to an array, and is used to initialize the root
+(top) of the parse tree.
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ my $self = (@_ == 1 and ref $_[0]) ? $_[0] : [];
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<top()>
+
+ my $top_node = $ptree->top();
+ $ptree->top( $top_node );
+ $ptree->top( @children );
+
+This method gets/sets the top node of the parse-tree. If no arguments are
+given, it returns the topmost node in the tree (the root), which is also
+a B<Pod::ParseTree>. If it is given a single argument that is a reference,
+then the reference is assumed to a parse-tree and becomes the new top node.
+Otherwise, if arguments are given, they are treated as the new list of
+children for the top node.
+
+=cut
+
+sub top {
+ my $self = shift;
+ if (@_ > 0) {
+ @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
+ }
+ return $self;
+}
+
+## let parse_tree() & ptree() be aliases for the 'top' method
+*parse_tree = *ptree = \&top;
+
+##---------------------------------------------------------------------------
+
+=head2 B<children()>
+
+This method gets/sets the children of the top node in the parse-tree.
+If no arguments are given, it returns the list (array) of children
+(each of which should be either a string or a B<Pod::InteriorSequence>.
+Otherwise, if arguments are given, they are treated as the new list of
+children for the top node.
+
+=cut
+
+sub children {
+ my $self = shift;
+ if (@_ > 0) {
+ @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
+ }
+ return @{ $self };
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<prepend()>
+
+This method prepends the given text or parse-tree to the current parse-tree.
+If the first item on the parse-tree is text and the argument is also text,
+then the text is prepended to the first item (not added as a separate string).
+Otherwise the argument is added as a new string or parse-tree I<before>
+the current one.
+
+=cut
+
+use vars qw(@ptree); ## an alias used for performance reasons
+
+sub prepend {
+ my $self = shift;
+ local *ptree = $self;
+ for (@_) {
+ next unless length;
+ if (@ptree and !(ref $ptree[0]) and !(ref $_)) {
+ $ptree[0] = $_ . $ptree[0];
+ }
+ else {
+ unshift @ptree, $_;
+ }
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head2 B<append()>
+
+This method appends the given text or parse-tree to the current parse-tree.
+If the last item on the parse-tree is text and the argument is also text,
+then the text is appended to the last item (not added as a separate string).
+Otherwise the argument is added as a new string or parse-tree I<after>
+the current one.
+
+=cut
+
+sub append {
+ my $self = shift;
+ local *ptree = $self;
+ for (@_) {
+ next unless length;
+ if (@ptree and !(ref $ptree[-1]) and !(ref $_)) {
+ $ptree[-1] .= $_;
+ }
+ else {
+ push @ptree, $_;
+ }
+ }
+}
+
+=head2 B<raw_text()>
+
+ my $ptree_raw_text = $ptree->raw_text();
+
+This method will return the I<raw> text of the POD parse-tree
+exactly as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ my $self = shift;
+ my $text = "";
+ for ( @$self ) {
+ $text .= (ref $_) ? $_->raw_text : $_;
+ }
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+## Private routines to set/unset child->parent links
+
+sub _unset_child2parent_links {
+ my $self = shift;
+ local *ptree = $self;
+ for (@ptree) {
+ next unless (length and ref and ref ne 'SCALAR');
+ $_->_unset_child2parent_links()
+ if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
+ }
+}
+
+sub _set_child2parent_links {
+ ## nothing to do, Pod::ParseTrees cant have parent pointers
+}
+
+=head2 B<DESTROY()>
+
+This method performs any necessary cleanup for the parse-tree.
+If you override this method then it is B<imperative>
+that you invoke the parent method from within your own method,
+otherwise I<parse-tree storage will not be reclaimed upon destruction!>
+
+=cut
+
+sub DESTROY {
+ ## We need to get rid of all child->parent pointers throughout the
+ ## tree so their reference counts will go to zero and they can be
+ ## garbage-collected
+ _unset_child2parent_links(@_);
+}
+
+#############################################################################
+
+=head1 SEE ALSO
+
+See L<Pod::Parser>, L<Pod::Select>
+
+=head1 AUTHOR
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+=cut
+
+1;
diff --git a/contrib/perl5/lib/Pod/Man.pm b/contrib/perl5/lib/Pod/Man.pm
new file mode 100644
index 0000000..97a3828
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Man.pm
@@ -0,0 +1,1217 @@
+# Pod::Man -- Convert POD data to formatted *roff input.
+# $Id: Man.pm,v 1.2 2000/03/19 07:30:13 eagle Exp $
+#
+# Copyright 1999, 2000 by Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+#
+# This module is intended to be a replacement for the pod2man script
+# distributed with versions of Perl prior to 5.6, and attempts to match its
+# output except for some specific circumstances where other decisions seemed
+# to produce better output. It uses Pod::Parser and is designed to be easy
+# to subclass.
+#
+# Perl core hackers, please note that this module is also separately
+# maintained outside of the Perl core as part of the podlators. Please send
+# me any patches at the address above in addition to sending them to the
+# standard Perl mailing lists.
+
+############################################################################
+# Modules and declarations
+############################################################################
+
+package Pod::Man;
+
+require 5.004;
+
+use Carp qw(carp croak);
+use Pod::Parser ();
+
+use strict;
+use subs qw(makespace);
+use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION);
+
+@ISA = qw(Pod::Parser);
+
+# Don't use the CVS revision as the version, since this module is also in
+# Perl core and too many things could munge CVS magic revision strings.
+# This number should ideally be the same as the CVS revision in podlators,
+# however.
+$VERSION = 1.02;
+
+
+############################################################################
+# Preamble and *roff output tables
+############################################################################
+
+# The following is the static preamble which starts all *roff output we
+# generate. It's completely static except for the font to use as a
+# fixed-width font, which is designed by @CFONT@. $PREAMBLE should
+# therefore be run through s/\@CFONT\@/<font>/g before output.
+$PREAMBLE = <<'----END OF PREAMBLE----';
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb \" Begin verbatim text
+.ft @CFONT@
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
+.\" to do unbreakable dashes and therefore won't be available. \*(C` and
+.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` `
+. ds C' '
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr
+.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
+.\" index entries marked with X<> in POD. Of course, you'll have to process
+.\" the output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+. .
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it
+.\" makes way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+.bd B 3
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+----END OF PREAMBLE----
+
+# This table is taken nearly verbatim from Tom Christiansen's pod2man. It
+# assumes that the standard preamble has already been printed, since that's
+# what defines all of the accent marks. Note that some of these are quoted
+# with double quotes since they contain embedded single quotes, so use \\
+# uniformly for backslash for readability.
+%ESCAPES = (
+ 'amp' => '&', # ampersand
+ 'lt' => '<', # left chevron, less-than
+ 'gt' => '>', # right chevron, greater-than
+ 'quot' => '"', # double quote
+
+ 'Aacute' => "A\\*'", # capital A, acute accent
+ 'aacute' => "a\\*'", # small a, acute accent
+ 'Acirc' => 'A\\*^', # capital A, circumflex accent
+ 'acirc' => 'a\\*^', # small a, circumflex accent
+ 'AElig' => '\*(AE', # capital AE diphthong (ligature)
+ 'aelig' => '\*(ae', # small ae diphthong (ligature)
+ 'Agrave' => "A\\*`", # capital A, grave accent
+ 'agrave' => "A\\*`", # small a, grave accent
+ 'Aring' => 'A\\*o', # capital A, ring
+ 'aring' => 'a\\*o', # small a, ring
+ 'Atilde' => 'A\\*~', # capital A, tilde
+ 'atilde' => 'a\\*~', # small a, tilde
+ 'Auml' => 'A\\*:', # capital A, dieresis or umlaut mark
+ 'auml' => 'a\\*:', # small a, dieresis or umlaut mark
+ 'Ccedil' => 'C\\*,', # capital C, cedilla
+ 'ccedil' => 'c\\*,', # small c, cedilla
+ 'Eacute' => "E\\*'", # capital E, acute accent
+ 'eacute' => "e\\*'", # small e, acute accent
+ 'Ecirc' => 'E\\*^', # capital E, circumflex accent
+ 'ecirc' => 'e\\*^', # small e, circumflex accent
+ 'Egrave' => 'E\\*`', # capital E, grave accent
+ 'egrave' => 'e\\*`', # small e, grave accent
+ 'ETH' => '\\*(D-', # capital Eth, Icelandic
+ 'eth' => '\\*(d-', # small eth, Icelandic
+ 'Euml' => 'E\\*:', # capital E, dieresis or umlaut mark
+ 'euml' => 'e\\*:', # small e, dieresis or umlaut mark
+ 'Iacute' => "I\\*'", # capital I, acute accent
+ 'iacute' => "i\\*'", # small i, acute accent
+ 'Icirc' => 'I\\*^', # capital I, circumflex accent
+ 'icirc' => 'i\\*^', # small i, circumflex accent
+ 'Igrave' => 'I\\*`', # capital I, grave accent
+ 'igrave' => 'i\\*`', # small i, grave accent
+ 'Iuml' => 'I\\*:', # capital I, dieresis or umlaut mark
+ 'iuml' => 'i\\*:', # small i, dieresis or umlaut mark
+ 'Ntilde' => 'N\*~', # capital N, tilde
+ 'ntilde' => 'n\*~', # small n, tilde
+ 'Oacute' => "O\\*'", # capital O, acute accent
+ 'oacute' => "o\\*'", # small o, acute accent
+ 'Ocirc' => 'O\\*^', # capital O, circumflex accent
+ 'ocirc' => 'o\\*^', # small o, circumflex accent
+ 'Ograve' => 'O\\*`', # capital O, grave accent
+ 'ograve' => 'o\\*`', # small o, grave accent
+ 'Oslash' => 'O\\*/', # capital O, slash
+ 'oslash' => 'o\\*/', # small o, slash
+ 'Otilde' => 'O\\*~', # capital O, tilde
+ 'otilde' => 'o\\*~', # small o, tilde
+ 'Ouml' => 'O\\*:', # capital O, dieresis or umlaut mark
+ 'ouml' => 'o\\*:', # small o, dieresis or umlaut mark
+ 'szlig' => '\*8', # small sharp s, German (sz ligature)
+ 'THORN' => '\\*(Th', # capital THORN, Icelandic
+ 'thorn' => '\\*(th', # small thorn, Icelandic
+ 'Uacute' => "U\\*'", # capital U, acute accent
+ 'uacute' => "u\\*'", # small u, acute accent
+ 'Ucirc' => 'U\\*^', # capital U, circumflex accent
+ 'ucirc' => 'u\\*^', # small u, circumflex accent
+ 'Ugrave' => 'U\\*`', # capital U, grave accent
+ 'ugrave' => 'u\\*`', # small u, grave accent
+ 'Uuml' => 'U\\*:', # capital U, dieresis or umlaut mark
+ 'uuml' => 'u\\*:', # small u, dieresis or umlaut mark
+ 'Yacute' => "Y\\*'", # capital Y, acute accent
+ 'yacute' => "y\\*'", # small y, acute accent
+ 'yuml' => 'y\\*:', # small y, dieresis or umlaut mark
+);
+
+
+############################################################################
+# Static helper functions
+############################################################################
+
+# Protect leading quotes and periods against interpretation as commands.
+# Also protect anything starting with a backslash, since it could expand
+# or hide something that *roff would interpret as a command. This is
+# overkill, but it's much simpler than trying to parse *roff here.
+sub protect {
+ local $_ = shift;
+ s/^([.\'\\])/\\&$1/mg;
+ $_;
+}
+
+# Given a command and a single argument that may or may not contain double
+# quotes, handle double-quote formatting for it. If there are no double
+# quotes, just return the command followed by the argument in double quotes.
+# If there are double quotes, use an if statement to test for nroff, and for
+# nroff output the command followed by the argument in double quotes with
+# embedded double quotes doubled. For other formatters, remap paired double
+# quotes to `` and ''.
+sub switchquotes {
+ my $command = shift;
+ local $_ = shift;
+ my $extra = shift;
+ s/\\\*\([LR]\"/\"/g;
+ if (/\"/) {
+ s/\"/\"\"/g;
+ my $troff = $_;
+ $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g;
+ s/\"/\"\"/g if $extra;
+ $troff =~ s/\"/\"\"/g if $extra;
+ $_ = qq("$_") . ($extra ? " $extra" : '');
+ $troff = qq("$troff") . ($extra ? " $extra" : '');
+ return ".if n $command $_\n.el $command $troff\n";
+ } else {
+ $_ = qq("$_") . ($extra ? " $extra" : '');
+ return "$command $_\n";
+ }
+}
+
+# Translate a font string into an escape.
+sub toescape { (length ($_[0]) > 1 ? '\f(' : '\f') . $_[0] }
+
+
+############################################################################
+# Initialization
+############################################################################
+
+# Initialize the object. Here, we also process any additional options
+# passed to the constructor or set up defaults if none were given. center
+# is the centered title, release is the version number, and date is the date
+# for the documentation. Note that we can't know what file name we're
+# processing due to the architecture of Pod::Parser, so that *has* to either
+# be passed to the constructor or set separately with Pod::Man::name().
+sub initialize {
+ my $self = shift;
+
+ # Figure out the fixed-width font. If user-supplied, make sure that
+ # they are the right length.
+ for (qw/fixed fixedbold fixeditalic fixedbolditalic/) {
+ if (defined $$self{$_}) {
+ if (length ($$self{$_}) < 1 || length ($$self{$_}) > 2) {
+ croak "roff font should be 1 or 2 chars, not `$$self{$_}'";
+ }
+ } else {
+ $$self{$_} = '';
+ }
+ }
+
+ # Set the default fonts. We can't be sure what fixed bold-italic is
+ # going to be called, so default to just bold.
+ $$self{fixed} ||= 'CW';
+ $$self{fixedbold} ||= 'CB';
+ $$self{fixeditalic} ||= 'CI';
+ $$self{fixedbolditalic} ||= 'CB';
+
+ # Set up a table of font escapes. First number is fixed-width, second
+ # is bold, third is italic.
+ $$self{FONTS} = { '000' => '\fR', '001' => '\fI',
+ '010' => '\fB', '011' => '\f(BI',
+ '100' => toescape ($$self{fixed}),
+ '101' => toescape ($$self{fixeditalic}),
+ '110' => toescape ($$self{fixedbold}),
+ '111' => toescape ($$self{fixedbolditalic})};
+
+ # Extra stuff for page titles.
+ $$self{center} = 'User Contributed Perl Documentation'
+ unless defined $$self{center};
+ $$self{indent} = 4 unless defined $$self{indent};
+
+ # We used to try first to get the version number from a local binary,
+ # but we shouldn't need that any more. Get the version from the running
+ # Perl. Work a little magic to handle subversions correctly under both
+ # the pre-5.6 and the post-5.6 version numbering schemes.
+ if (!defined $$self{release}) {
+ my @version = ($] =~ /^(\d+)\.(\d{3})(\d{0,3})$/);
+ $version[2] ||= 0;
+ $version[2] *= 10 ** (3 - length $version[2]);
+ for (@version) { $_ += 0 }
+ $$self{release} = 'perl v' . join ('.', @version);
+ }
+
+ # Double quotes in things that will be quoted.
+ for (qw/center date release/) {
+ $$self{$_} =~ s/\"/\"\"/g if $$self{$_};
+ }
+
+ $$self{INDENT} = 0; # Current indentation level.
+ $$self{INDENTS} = []; # Stack of indentations.
+ $$self{INDEX} = []; # Index keys waiting to be printed.
+
+ $self->SUPER::initialize;
+}
+
+# For each document we process, output the preamble first. Note that the
+# fixed width font is a global default; once we interpolate it into the
+# PREAMBLE, it ain't ever changing. Maybe fix this later.
+sub begin_pod {
+ my $self = shift;
+
+ # Try to figure out the name and section from the file name.
+ my $section = $$self{section} || 1;
+ my $name = $$self{name};
+ if (!defined $name) {
+ $name = $self->input_file;
+ $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i);
+ $name =~ s/\.p(od|[lm])\z//i;
+ if ($section =~ /^1/) {
+ require File::Basename;
+ $name = uc File::Basename::basename ($name);
+ } else {
+ # Lose everything up to the first of
+ # */lib/*perl* standard or site_perl module
+ # */*perl*/lib from -D prefix=/opt/perl
+ # */*perl*/ random module hierarchy
+ # which works. Should be fixed to use File::Spec. Also handle
+ # a leading lib/ since that's what ExtUtils::MakeMaker creates.
+ for ($name) {
+ s%//+%/%g;
+ if ( s%^.*?/lib/[^/]*perl[^/]*/%%si
+ or s%^.*?/[^/]*perl[^/]*/(?:lib/)?%%si) {
+ s%^site(_perl)?/%%s; # site and site_perl
+ s%^(.*-$^O|$^O-.*)/%%so; # arch
+ s%^\d+\.\d+%%s; # version
+ }
+ s%^lib/%%;
+ s%/%::%g;
+ }
+ }
+ }
+
+ # Modification date header. Try to use the modification time of our
+ # input.
+ if (!defined $$self{date}) {
+ my $time = (stat $self->input_file)[9] || time;
+ my ($day, $month, $year) = (localtime $time)[3,4,5];
+ $month++;
+ $year += 1900;
+ $$self{date} = sprintf ('%4d-%02d-%02d', $year, $month, $day);
+ }
+
+ # Now, print out the preamble and the title.
+ $PREAMBLE =~ s/\@CFONT\@/$$self{fixed}/;
+ chomp $PREAMBLE;
+ print { $self->output_handle } <<"----END OF HEADER----";
+.\\" Automatically generated by Pod::Man version $VERSION
+.\\" @{[ scalar localtime ]}
+.\\"
+.\\" Standard preamble:
+.\\" ======================================================================
+$PREAMBLE
+.\\" ======================================================================
+.\\"
+.IX Title "$name $section"
+.TH $name $section "$$self{release}" "$$self{date}" "$$self{center}"
+.UC
+----END OF HEADER----
+#"# for cperl-mode
+
+ # Initialize a few per-file variables.
+ $$self{INDENT} = 0;
+ $$self{NEEDSPACE} = 0;
+}
+
+
+############################################################################
+# Core overrides
+############################################################################
+
+# Called for each command paragraph. Gets the command, the associated
+# paragraph, the line number, and a Pod::Paragraph object. Just dispatches
+# the command to a method named the same as the command. =cut is handled
+# internally by Pod::Parser.
+sub command {
+ my $self = shift;
+ my $command = shift;
+ return if $command eq 'pod';
+ return if ($$self{EXCLUDE} && $command ne 'end');
+ $command = 'cmd_' . $command;
+ $self->$command (@_);
+}
+
+# Called for a verbatim paragraph. Gets the paragraph, the line number, and
+# a Pod::Paragraph object. Rofficate backslashes, untabify, put a
+# zero-width character at the beginning of each line to protect against
+# commands, and wrap in .Vb/.Ve.
+sub verbatim {
+ my $self = shift;
+ return if $$self{EXCLUDE};
+ local $_ = shift;
+ return if /^\s+$/;
+ s/\s+$/\n/;
+ my $lines = tr/\n/\n/;
+ 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me;
+ s/\\/\\e/g;
+ s/^(\s*\S)/'\&' . $1/gme;
+ $self->makespace if $$self{NEEDSPACE};
+ $self->output (".Vb $lines\n$_.Ve\n");
+ $$self{NEEDSPACE} = 0;
+}
+
+# Called for a regular text block. Gets the paragraph, the line number, and
+# a Pod::Paragraph object. Perform interpolation and output the results.
+sub textblock {
+ my $self = shift;
+ return if $$self{EXCLUDE};
+ $self->output ($_[0]), return if $$self{VERBATIM};
+
+ # Perform a little magic to collapse multiple L<> references. We'll
+ # just rewrite the whole thing into actual text at this part, bypassing
+ # the whole internal sequence parsing thing.
+ my $text = shift;
+ $text =~ s{
+ (L< # A link of the form L</something>.
+ /
+ (
+ [:\w]+ # The item has to be a simple word...
+ (\(\))? # ...or simple function.
+ )
+ >
+ (
+ ,?\s+(and\s+)? # Allow lots of them, conjuncted.
+ L<
+ /
+ ( [:\w]+ ( \(\) )? )
+ >
+ )+
+ )
+ } {
+ local $_ = $1;
+ s{ L< / ( [^>]+ ) > } {$1}xg;
+ my @items = split /(?:,?\s+(?:and\s+)?)/;
+ my $string = 'the ';
+ my $i;
+ for ($i = 0; $i < @items; $i++) {
+ $string .= $items[$i];
+ $string .= ', ' if @items > 2 && $i != $#items;
+ $string .= ' ' if @items == 2 && $i == 2;
+ $string .= 'and ' if ($i == $#items - 1);
+ }
+ $string .= ' entries elsewhere in this document';
+ $string;
+ }gex;
+
+ # Parse the tree and output it. collapse knows about references to
+ # scalars as well as scalars and does the right thing with them.
+ $text = $self->parse ($text, @_);
+ $text =~ s/\n\s*$/\n/;
+ $self->makespace if $$self{NEEDSPACE};
+ $self->output (protect $self->mapfonts ($text));
+ $self->outindex;
+ $$self{NEEDSPACE} = 1;
+}
+
+# Called for an interior sequence. Takes a Pod::InteriorSequence object and
+# returns a reference to a scalar. This scalar is the final formatted text.
+# It's returned as a reference so that other interior sequences above us
+# know that the text has already been processed.
+sub sequence {
+ my ($self, $seq) = @_;
+ my $command = $seq->cmd_name;
+
+ # Zero-width characters.
+ if ($command eq 'Z') {
+ # Workaround to generate a blessable reference, needed by 5.005.
+ my $tmp = '\&';
+ return bless \ "$tmp", 'Pod::Man::String';
+ }
+
+ # C<>, L<>, X<>, and E<> don't apply guesswork to their contents.
+ local $_ = $self->collapse ($seq->parse_tree, $command =~ /^[CELX]$/);
+
+ # Handle E<> escapes.
+ if ($command eq 'E') {
+ if (/^\d+$/) {
+ return bless \ chr ($_), 'Pod::Man::String';
+ } elsif (exists $ESCAPES{$_}) {
+ return bless \ "$ESCAPES{$_}", 'Pod::Man::String';
+ } else {
+ carp "Unknown escape E<$1>";
+ return bless \ "E<$_>", 'Pod::Man::String';
+ }
+ }
+
+ # For all the other sequences, empty content produces no output.
+ return '' if $_ eq '';
+
+ # Handle formatting sequences.
+ if ($command eq 'B') {
+ return bless \ ('\f(BS' . $_ . '\f(BE'), 'Pod::Man::String';
+ } elsif ($command eq 'F') {
+ return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String';
+ } elsif ($command eq 'I') {
+ return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String';
+ } elsif ($command eq 'C') {
+ s/-/\\-/g;
+ s/__/_\\|_/g;
+ return bless \ ('\f(FS\*(C`' . $_ . "\\*(C'\\f(FE"),
+ 'Pod::Man::String';
+ }
+
+ # Handle links.
+ if ($command eq 'L') {
+ # A bug in lvalue subs in 5.6 requires the temporary variable.
+ my $tmp = $self->buildlink ($_);
+ return bless \ "$tmp", 'Pod::Man::String';
+ }
+
+ # Whitespace protection replaces whitespace with "\ ".
+ if ($command eq 'S') {
+ s/\s+/\\ /g;
+ return bless \ "$_", 'Pod::Man::String';
+ }
+
+ # Add an index entry to the list of ones waiting to be output.
+ if ($command eq 'X') { push (@{ $$self{INDEX} }, $_); return '' }
+
+ # Anything else is unknown.
+ carp "Unknown sequence $command<$_>";
+}
+
+
+############################################################################
+# Command paragraphs
+############################################################################
+
+# All command paragraphs take the paragraph and the line number.
+
+# First level heading. We can't output .IX in the NAME section due to a bug
+# in some versions of catman, so don't output a .IX for that section. .SH
+# already uses small caps, so remove any E<> sequences that would cause
+# them.
+sub cmd_head1 {
+ my $self = shift;
+ local $_ = $self->parse (@_);
+ s/\s+$//;
+ s/\\s-?\d//g;
+ $self->output (switchquotes ('.SH', $self->mapfonts ($_)));
+ $self->outindex (($_ eq 'NAME') ? () : ('Header', $_));
+ $$self{NEEDSPACE} = 0;
+}
+
+# Second level heading.
+sub cmd_head2 {
+ my $self = shift;
+ local $_ = $self->parse (@_);
+ s/\s+$//;
+ $self->output (switchquotes ('.Sh', $self->mapfonts ($_)));
+ $self->outindex ('Subsection', $_);
+ $$self{NEEDSPACE} = 0;
+}
+
+# Start a list. For indents after the first, wrap the outside indent in .RS
+# so that hanging paragraph tags will be correct.
+sub cmd_over {
+ my $self = shift;
+ local $_ = shift;
+ unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
+ if (@{ $$self{INDENTS} } > 0) {
+ $self->output (".RS $$self{INDENT}\n");
+ }
+ push (@{ $$self{INDENTS} }, $$self{INDENT});
+ $$self{INDENT} = ($_ + 0);
+}
+
+# End a list. If we've closed an embedded indent, we've mangled the hanging
+# paragraph indent, so temporarily replace it with .RS and set WEIRDINDENT.
+# We'll close that .RS at the next =back or =item.
+sub cmd_back {
+ my $self = shift;
+ $$self{INDENT} = pop @{ $$self{INDENTS} };
+ unless (defined $$self{INDENT}) {
+ carp "Unmatched =back";
+ $$self{INDENT} = 0;
+ }
+ if ($$self{WEIRDINDENT}) {
+ $self->output (".RE\n");
+ $$self{WEIRDINDENT} = 0;
+ }
+ if (@{ $$self{INDENTS} } > 0) {
+ $self->output (".RE\n");
+ $self->output (".RS $$self{INDENT}\n");
+ $$self{WEIRDINDENT} = 1;
+ }
+ $$self{NEEDSPACE} = 1;
+}
+
+# An individual list item. Emit an index entry for anything that's
+# interesting, but don't emit index entries for things like bullets and
+# numbers. rofficate bullets too while we're at it (so for nice output, use
+# * for your lists rather than o or . or - or some other thing). Newlines
+# in an item title are turned into spaces since *roff can't handle them
+# embedded.
+sub cmd_item {
+ my $self = shift;
+ local $_ = $self->parse (@_);
+ s/\s+$//;
+ s/\s*\n\s*/ /g;
+ my $index;
+ if (/\w/ && !/^\w[.\)]\s*$/) {
+ $index = $_;
+ $index =~ s/^\s*[-*+o.]?\s*//;
+ }
+ s/^\*(\s|\Z)/\\\(bu$1/;
+ if ($$self{WEIRDINDENT}) {
+ $self->output (".RE\n");
+ $$self{WEIRDINDENT} = 0;
+ }
+ $_ = $self->mapfonts ($_);
+ $self->output (switchquotes ('.Ip', $_, $$self{INDENT}));
+ $self->outindex ($index ? ('Item', $index) : ());
+ $$self{NEEDSPACE} = 0;
+}
+
+# Begin a block for a particular translator. Setting VERBATIM triggers
+# special handling in textblock().
+sub cmd_begin {
+ my $self = shift;
+ local $_ = shift;
+ my ($kind) = /^(\S+)/ or return;
+ if ($kind eq 'man' || $kind eq 'roff') {
+ $$self{VERBATIM} = 1;
+ } else {
+ $$self{EXCLUDE} = 1;
+ }
+}
+
+# End a block for a particular translator. We assume that all =begin/=end
+# pairs are properly closed.
+sub cmd_end {
+ my $self = shift;
+ $$self{EXCLUDE} = 0;
+ $$self{VERBATIM} = 0;
+}
+
+# One paragraph for a particular translator. Ignore it unless it's intended
+# for man or roff, in which case we output it verbatim.
+sub cmd_for {
+ my $self = shift;
+ local $_ = shift;
+ return unless s/^(?:man|roff)\b[ \t]*\n?//;
+ $self->output ($_);
+}
+
+
+############################################################################
+# Link handling
+############################################################################
+
+# Handle links. We can't actually make real hyperlinks, so this is all to
+# figure out what text and formatting we print out.
+sub buildlink {
+ my $self = shift;
+ local $_ = shift;
+
+ # Smash whitespace in case we were split across multiple lines.
+ s/\s+/ /g;
+
+ # If we were given any explicit text, just output it.
+ if (m{ ^ ([^|]+) \| }x) { return $1 }
+
+ # Okay, leading and trailing whitespace isn't important.
+ s/^\s+//;
+ s/\s+$//;
+
+ # Default to using the whole content of the link entry as a section
+ # name. Note that L<manpage/> forces a manpage interpretation, as does
+ # something looking like L<manpage(section)>. Do the same thing to
+ # L<manpage(section)> as we would to manpage(section) without the L<>;
+ # see guesswork(). If we've added italics, don't add the "manpage"
+ # text; markup is sufficient.
+ my ($manpage, $section) = ('', $_);
+ if (/^"\s*(.*?)\s*"$/) {
+ $section = '"' . $1 . '"';
+ } elsif (m{ ^ [-:.\w]+ (?: \( \S+ \) )? $ }x) {
+ ($manpage, $section) = ($_, '');
+ $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|('/e;
+ } elsif (m%/%) {
+ ($manpage, $section) = split (/\s*\/\s*/, $_, 2);
+ if ($manpage =~ /^[-:.\w]+(?:\(\S+\))?$/) {
+ $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|'/e;
+ }
+ $section =~ s/^\"\s*//;
+ $section =~ s/\s*\"$//;
+ }
+ if ($manpage && $manpage !~ /\\f\(IS/) {
+ $manpage = "the $manpage manpage";
+ }
+
+ # Now build the actual output text.
+ my $text = '';
+ if (!length ($section) && !length ($manpage)) {
+ carp "Invalid link $_";
+ } elsif (!length ($section)) {
+ $text = $manpage;
+ } elsif ($section =~ /^[:\w]+(?:\(\))?/) {
+ $text .= 'the ' . $section . ' entry';
+ $text .= (length $manpage) ? " in $manpage"
+ : " elsewhere in this document";
+ } else {
+ if ($section !~ /^".*"$/) { $section = '"' . $section . '"' }
+ $text .= 'the section on ' . $section;
+ $text .= " in $manpage" if length $manpage;
+ }
+ $text;
+}
+
+
+############################################################################
+# Escaping and fontification
+############################################################################
+
+# At this point, we'll have embedded font codes of the form \f(<font>[SE]
+# where <font> is one of B, I, or F. Turn those into the right font start
+# or end codes. B<someI<thing> else> should map to \fBsome\f(BIthing\fB
+# else\fR. The old pod2man didn't get this right; the second \fB was \fR,
+# so nested sequences didn't work right. We take care of this by using
+# variables as a combined pointer to our current font sequence, and set each
+# to the number of current nestings of start tags for that font. Use them
+# as a vector to look up what font sequence to use.
+sub mapfonts {
+ my $self = shift;
+ local $_ = shift;
+
+ my ($fixed, $bold, $italic) = (0, 0, 0);
+ my %magic = (F => \$fixed, B => \$bold, I => \$italic);
+ s { \\f\((.)(.) } {
+ ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
+ $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)};
+ }gxe;
+ $_;
+}
+
+
+############################################################################
+# *roff-specific parsing
+############################################################################
+
+# Called instead of parse_text, calls parse_text with the right flags.
+sub parse {
+ my $self = shift;
+ $self->parse_text ({ -expand_seq => 'sequence',
+ -expand_ptree => 'collapse' }, @_);
+}
+
+# Takes a parse tree and a flag saying whether or not to treat it as literal
+# text (not call guesswork on it), and returns the concatenation of all of
+# the text strings in that parse tree. If the literal flag isn't true,
+# guesswork() will be called on all plain scalars in the parse tree.
+# Assumes that everything in the parse tree is either a scalar or a
+# reference to a scalar.
+sub collapse {
+ my ($self, $ptree, $literal) = @_;
+ if ($literal) {
+ return join ('', map {
+ if (ref $_) {
+ $$_;
+ } else {
+ s/\\/\\e/g;
+ $_;
+ }
+ } $ptree->children);
+ } else {
+ return join ('', map {
+ ref ($_) ? $$_ : $self->guesswork ($_)
+ } $ptree->children);
+ }
+}
+
+# Takes a text block to perform guesswork on; this is guaranteed not to
+# contain any interior sequences. Returns the text block with remapping
+# done.
+sub guesswork {
+ my $self = shift;
+ local $_ = shift;
+
+ # rofficate backslashes.
+ s/\\/\\e/g;
+
+ # Ensure double underbars have a tiny space between them.
+ s/__/_\\|_/g;
+
+ # Make all caps a little smaller. Be careful here, since we don't want
+ # to make @ARGV into small caps, nor do we want to fix the MIME in
+ # MIME-Version, since it looks weird with the full-height V.
+ s{
+ ( ^ | [\s\(\"\'\`\[\{<>] )
+ ( [A-Z] [A-Z] [/A-Z+:\d_\$&-]* )
+ (?: (?= [\s>\}\]\)\'\".?!,;:] | -- ) | $ )
+ } { $1 . '\s-1' . $2 . '\s0' }egx;
+
+ # Turn PI into a pretty pi.
+ s{ (?: \\s-1 | \b ) PI (?: \\s0 | \b ) } {\\*\(PI}gx;
+
+ # Italize functions in the form func().
+ s{
+ \b
+ (
+ [:\w]+ (?:\\s-1)? \(\)
+ )
+ } { '\f(IS' . $1 . '\f(IE' }egx;
+
+ # func(n) is a reference to a manual page. Make it \fIfunc\fR\|(n).
+ s{
+ \b
+ (\w[-:.\w]+ (?:\\s-1)?)
+ (
+ \( [^\)] \)
+ )
+ } { '\f(IS' . $1 . '\f(IE\|' . $2 }egx;
+
+ # Convert simple Perl variable references to a fixed-width font.
+ s{
+ ( \s+ )
+ ( [\$\@%] [\w:]+ )
+ (?! \( )
+ } { $1 . '\f(FS' . $2 . '\f(FE'}egx;
+
+ # Translate -- into a real em dash if it's used like one and fix up
+ # dashes, but keep hyphens hyphens.
+ s{ (\G|^|.) (-+) (\b|.) } {
+ my ($pre, $dash, $post) = ($1, $2, $3);
+ if (length ($dash) == 1) {
+ ($pre =~ /[a-zA-Z]/) ? "$pre-$post" : "$pre\\-$post";
+ } elsif (length ($dash) == 2
+ && ((!$pre && !$post)
+ || ($pre =~ /\w/ && !$post)
+ || ($pre eq ' ' && $post eq ' ')
+ || ($pre eq '=' && $post ne '=')
+ || ($pre ne '=' && $post eq '='))) {
+ "$pre\\*(--$post";
+ } else {
+ $pre . ('\-' x length $dash) . $post;
+ }
+ }egxs;
+
+ # Fix up double quotes.
+ s{ \" ([^\"]+) \" } { '\*(L"' . $1 . '\*(R"' }egx;
+
+ # Make C++ into \*(C+, which is a squinched version.
+ s{ \b C\+\+ } {\\*\(C+}gx;
+
+ # All done.
+ $_;
+}
+
+
+############################################################################
+# Output formatting
+############################################################################
+
+# Make vertical whitespace.
+sub makespace {
+ my $self = shift;
+ $self->output ($$self{INDENT} > 0 ? ".Sp\n" : ".PP\n");
+}
+
+# Output any pending index entries, and optionally an index entry given as
+# an argument. Support multiple index entries in X<> separated by slashes,
+# and strip special escapes from index entries.
+sub outindex {
+ my ($self, $section, $index) = @_;
+ my @entries = map { split m%\s*/\s*% } @{ $$self{INDEX} };
+ return unless ($section || @entries);
+ $$self{INDEX} = [];
+ my $output;
+ if (@entries) {
+ my $output = '.IX Xref "'
+ . join (' ', map { s/\"/\"\"/; $_ } @entries)
+ . '"' . "\n";
+ }
+ if ($section) {
+ $index =~ s/\"/\"\"/;
+ $index =~ s/\\-/-/g;
+ $index =~ s/\\(?:s-?\d|.\(..|.)//g;
+ $output .= ".IX $section " . '"' . $index . '"' . "\n";
+ }
+ $self->output ($output);
+}
+
+# Output text to the output device.
+sub output { print { $_[0]->output_handle } $_[1] }
+
+__END__
+
+.\" These are some extra bits of roff that I don't want to lose track of
+.\" but that have been removed from the preamble to make it a bit shorter
+.\" since they're not currently being used. They're accents and special
+.\" characters we don't currently have escapes for.
+.if n \{\
+. ds ? ?
+. ds ! !
+. ds q
+.\}
+.if t \{\
+. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds v \h'-1'\o'\(aa\(ga'
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. ds oe oe
+. ds Oe OE
+.\}
+
+############################################################################
+# Documentation
+############################################################################
+
+=head1 NAME
+
+Pod::Man - Convert POD data to formatted *roff input
+
+=head1 SYNOPSIS
+
+ use Pod::Man;
+ my $parser = Pod::Man->new (release => $VERSION, section => 8);
+
+ # Read POD from STDIN and write to STDOUT.
+ $parser->parse_from_filehandle;
+
+ # Read POD from file.pod and write to file.1.
+ $parser->parse_from_file ('file.pod', 'file.1');
+
+=head1 DESCRIPTION
+
+Pod::Man is a module to convert documentation in the POD format (the
+preferred language for documenting Perl) into *roff input using the man
+macro set. The resulting *roff code is suitable for display on a terminal
+using nroff(1), normally via man(1), or printing using troff(1). It is
+conventionally invoked using the driver script B<pod2man>, but it can also
+be used directly.
+
+As a derived class from Pod::Parser, Pod::Man supports the same methods and
+interfaces. See L<Pod::Parser> for all the details; briefly, one creates a
+new parser with C<Pod::Man-E<gt>new()> and then calls either
+parse_from_filehandle() or parse_from_file().
+
+new() can take options, in the form of key/value pairs that control the
+behavior of the parser. See below for details.
+
+If no options are given, Pod::Man uses the name of the input file with any
+trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to
+section 1 unless the file ended in C<.pm> in which case it defaults to
+section 3, to a centered title of "User Contributed Perl Documentation", to
+a centered footer of the Perl version it is run with, and to a left-hand
+footer of the modification date of its input (or the current date if given
+STDIN for input).
+
+Pod::Man assumes that your *roff formatters have a fixed-width font named
+CW. If yours is called something else (like CR), use the C<fixed> option to
+specify it. This generally only matters for troff output for printing.
+Similarly, you can set the fonts used for bold, italic, and bold italic
+fixed-width output.
+
+Besides the obvious pod conversions, Pod::Man also takes care of formatting
+func(), func(n), and simple variable references like $foo or @bar so you
+don't have to use code escapes for them; complex expressions like
+C<$fred{'stuff'}> will still need to be escaped, though. It also translates
+dashes that aren't used as hyphens into en dashes, makes long dashes--like
+this--into proper em dashes, fixes "paired quotes," makes C++ and PI look
+right, puts a little space between double underbars, makes ALLCAPS a teeny
+bit smaller in troff(1), and escapes stuff that *roff treats as special so
+that you don't have to.
+
+The recognized options to new() are as follows. All options take a single
+argument.
+
+=over 4
+
+=item center
+
+Sets the centered page header to use instead of "User Contributed Perl
+Documentation".
+
+=item date
+
+Sets the left-hand footer. By default, the modification date of the input
+file will be used, or the current date if stat() can't find that file (the
+case if the input is from STDIN), and the date will be formatted as
+YYYY-MM-DD.
+
+=item fixed
+
+The fixed-width font to use for vertabim text and code. Defaults to CW.
+Some systems may want CR instead. Only matters for troff(1) output.
+
+=item fixedbold
+
+Bold version of the fixed-width font. Defaults to CB. Only matters for
+troff(1) output.
+
+=item fixeditalic
+
+Italic version of the fixed-width font (actually, something of a misnomer,
+since most fixed-width fonts only have an oblique version, not an italic
+version). Defaults to CI. Only matters for troff(1) output.
+
+=item fixedbolditalic
+
+Bold italic (probably actually oblique) version of the fixed-width font.
+Pod::Man doesn't assume you have this, and defaults to CB. Some systems
+(such as Solaris) have this font available as CX. Only matters for troff(1)
+output.
+
+=item release
+
+Set the centered footer. By default, this is the version of Perl you run
+Pod::Man under. Note that some system an macro sets assume that the
+centered footer will be a modification date and will prepend something like
+"Last modified: "; if this is the case, you may want to set C<release> to
+the last modified date and C<date> to the version number.
+
+=item section
+
+Set the section for the C<.TH> macro. The standard section numbering
+convention is to use 1 for user commands, 2 for system calls, 3 for
+functions, 4 for devices, 5 for file formats, 6 for games, 7 for
+miscellaneous information, and 8 for administrator commands. There is a lot
+of variation here, however; some systems (like Solaris) use 4 for file
+formats, 5 for miscellaneous information, and 7 for devices. Still others
+use 1m instead of 8, or some mix of both. About the only section numbers
+that are reliably consistent are 1, 2, and 3.
+
+By default, section 1 will be used unless the file ends in .pm in which case
+section 3 will be selected.
+
+=back
+
+The standard Pod::Parser method parse_from_filehandle() takes up to two
+arguments, the first being the file handle to read POD from and the second
+being the file handle to write the formatted output to. The first defaults
+to STDIN if not given, and the second defaults to STDOUT. The method
+parse_from_file() is almost identical, except that its two arguments are the
+input and output disk files instead. See L<Pod::Parser> for the specific
+details.
+
+=head1 DIAGNOSTICS
+
+=over 4
+
+=item roff font should be 1 or 2 chars, not `%s'
+
+(F) You specified a *roff font (using C<fixed>, C<fixedbold>, etc.) that
+wasn't either one or two characters. Pod::Man doesn't support *roff fonts
+longer than two characters, although some *roff extensions do (the canonical
+versions of nroff(1) and troff(1) don't either).
+
+=item Invalid link %s
+
+(W) The POD source contained a C<LE<lt>E<gt>> sequence that Pod::Man was
+unable to parse. You should never see this error message; it probably
+indicates a bug in Pod::Man.
+
+=item Unknown escape EE<lt>%sE<gt>
+
+(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Man didn't
+know about. C<EE<lt>%sE<gt>> was printed verbatim in the output.
+
+=item Unknown sequence %s
+
+(W) The POD source contained a non-standard interior sequence (something of
+the form C<XE<lt>E<gt>>) that Pod::Man didn't know about. It was ignored.
+
+=item Unmatched =back
+
+(W) Pod::Man encountered a C<=back> command that didn't correspond to an
+C<=over> command.
+
+=back
+
+=head1 BUGS
+
+The lint-like features and strict POD format checking done by B<pod2man> are
+not yet implemented and should be, along with the corresponding C<lax>
+option.
+
+The NAME section should be recognized specially and index entries emitted
+for everything in that section. This would have to be deferred until the
+next section, since extraneous things in NAME tends to confuse various man
+page processors.
+
+The handling of hyphens, en dashes, and em dashes is somewhat fragile, and
+one may get the wrong one under some circumstances. This should only matter
+for troff(1) output.
+
+When and whether to use small caps is somewhat tricky, and Pod::Man doesn't
+necessarily get it right.
+
+Pod::Man doesn't handle font names longer than two characters. Neither do
+most troff(1) implementations, but GNU troff does as an extension. It would
+be nice to support as an option for those who want to use it.
+
+The preamble added to each output file is rather verbose, and most of it is
+only necessary in the presence of EE<lt>E<gt> escapes for non-ASCII
+characters. It would ideally be nice if all of those definitions were only
+output if needed, perhaps on the fly as the characters are used.
+
+Some of the automagic applied to file names assumes Unix directory
+separators.
+
+Pod::Man is excessively slow.
+
+=head1 SEE ALSO
+
+L<Pod::Parser|Pod::Parser>, perlpod(1), pod2man(1), nroff(1), troff(1),
+man(1), man(7)
+
+Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual,"
+Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is
+the best documentation of standard nroff(1) and troff(1). At the time of
+this writing, it's available at http://www.cs.bell-labs.com/cm/cs/cstr.html.
+
+The man page documenting the man macro set may be man(5) instead of man(7)
+on your system. Also, please see pod2man(1) for extensive documentation on
+writing manual pages if you've not done it before and aren't familiar with
+the conventions.
+
+=head1 AUTHOR
+
+Russ Allbery E<lt>rra@stanford.eduE<gt>, based I<very> heavily on the
+original B<pod2man> by Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>.
+
+=cut
diff --git a/contrib/perl5/lib/Pod/ParseUtils.pm b/contrib/perl5/lib/Pod/ParseUtils.pm
new file mode 100644
index 0000000..2cb8cdc
--- /dev/null
+++ b/contrib/perl5/lib/Pod/ParseUtils.pm
@@ -0,0 +1,837 @@
+#############################################################################
+# Pod/ParseUtils.pm -- helpers for POD parsing and conversion
+#
+# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::ParseUtils;
+
+use vars qw($VERSION);
+$VERSION = 0.2; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+=head1 NAME
+
+Pod::ParseUtils - helpers for POD parsing and conversion
+
+=head1 SYNOPSIS
+
+ use Pod::ParseUtils;
+
+ my $list = new Pod::List;
+ my $link = Pod::Hyperlink->new('Pod::Parser');
+
+=head1 DESCRIPTION
+
+B<Pod::ParseUtils> contains a few object-oriented helper packages for
+POD parsing and processing (i.e. in POD formatters and translators).
+
+=cut
+
+#-----------------------------------------------------------------------------
+# Pod::List
+#
+# class to hold POD list info (=over, =item, =back)
+#-----------------------------------------------------------------------------
+
+package Pod::List;
+
+use Carp;
+
+=head2 Pod::List
+
+B<Pod::List> can be used to hold information about POD lists
+(written as =over ... =item ... =back) for further processing.
+The following methods are available:
+
+=over 4
+
+=item new()
+
+Create a new list object. Properties may be specified through a hash
+reference like this:
+
+ my $list = Pod::List->new({ -start => $., -indent => 4 });
+
+See the individual methods/properties for details.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-file} ||= 'unknown';
+ $self->{-start} ||= 'unknown';
+ $self->{-indent} ||= 4; # perlpod: "should be the default"
+ $self->{_items} = [];
+ $self->{-type} ||= '';
+}
+
+=item file()
+
+Without argument, retrieves the file name the list is in. This must
+have been set before by either specifying B<-file> in the B<new()>
+method or by calling the B<file()> method with a scalar argument.
+
+=cut
+
+# The POD file name the list appears in
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item start()
+
+Without argument, retrieves the line number where the list started.
+This must have been set before by either specifying B<-start> in the
+B<new()> method or by calling the B<start()> method with a scalar
+argument.
+
+=cut
+
+# The line in the file the node appears
+sub start {
+ return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start};
+}
+
+=item indent()
+
+Without argument, retrieves the indent level of the list as specified
+in C<=over n>. This must have been set before by either specifying
+B<-indent> in the B<new()> method or by calling the B<indent()> method
+with a scalar argument.
+
+=cut
+
+# indent level
+sub indent {
+ return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent};
+}
+
+=item type()
+
+Without argument, retrieves the list type, which can be an arbitrary value,
+e.g. C<OL>, C<UL>, ... when thinking the HTML way.
+This must have been set before by either specifying
+B<-type> in the B<new()> method or by calling the B<type()> method
+with a scalar argument.
+
+=cut
+
+# The type of the list (UL, OL, ...)
+sub type {
+ return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
+}
+
+=item rx()
+
+Without argument, retrieves a regular expression for simplifying the
+individual item strings once the list type has been determined. Usage:
+E.g. when converting to HTML, one might strip the leading number in
+an ordered list as C<E<lt>OLE<gt>> already prints numbers itself.
+This must have been set before by either specifying
+B<-rx> in the B<new()> method or by calling the B<rx()> method
+with a scalar argument.
+
+=cut
+
+# The regular expression to simplify the items
+sub rx {
+ return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx};
+}
+
+=item item()
+
+Without argument, retrieves the array of the items in this list.
+The items may be represented by any scalar.
+If an argument has been given, it is pushed on the list of items.
+
+=cut
+
+# The individual =items of this list
+sub item {
+ my ($self,$item) = @_;
+ if(defined $item) {
+ push(@{$self->{_items}}, $item);
+ return $item;
+ }
+ else {
+ return @{$self->{_items}};
+ }
+}
+
+=item parent()
+
+Without argument, retrieves information about the parent holding this
+list, which is represented as an arbitrary scalar.
+This must have been set before by either specifying
+B<-parent> in the B<new()> method or by calling the B<parent()> method
+with a scalar argument.
+
+=cut
+
+# possibility for parsers/translators to store information about the
+# lists's parent object
+sub parent {
+ return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent};
+}
+
+=item tag()
+
+Without argument, retrieves information about the list tag, which can be
+any scalar.
+This must have been set before by either specifying
+B<-tag> in the B<new()> method or by calling the B<tag()> method
+with a scalar argument.
+
+=back
+
+=cut
+
+# possibility for parsers/translators to store information about the
+# list's object
+sub tag {
+ return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag};
+}
+
+#-----------------------------------------------------------------------------
+# Pod::Hyperlink
+#
+# class to manipulate POD hyperlinks (L<>)
+#-----------------------------------------------------------------------------
+
+package Pod::Hyperlink;
+
+=head2 Pod::Hyperlink
+
+B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage:
+
+ my $link = Pod::Hyperlink->new('alternative text|page/"section in page"');
+
+The B<Pod::Hyperlink> class is mainly designed to parse the contents of the
+C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the
+different parts of a POD hyperlink for further processing. It can also be
+used to construct hyperlinks.
+
+=over 4
+
+=item new()
+
+The B<new()> method can either be passed a set of key/value pairs or a single
+scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object
+of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a
+failure, the error message is stored in C<$@>.
+
+=cut
+
+use Carp;
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my $self = +{};
+ bless $self, $class;
+ $self->initialize();
+ if(defined $_[0]) {
+ if(ref($_[0])) {
+ # called with a list of parameters
+ %$self = %{$_[0]};
+ $self->_construct_text();
+ }
+ else {
+ # called with L<> contents
+ return undef unless($self->parse($_[0]));
+ }
+ }
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-line} ||= 'undef';
+ $self->{-file} ||= 'undef';
+ $self->{-page} ||= '';
+ $self->{-node} ||= '';
+ $self->{-alttext} ||= '';
+ $self->{-type} ||= 'undef';
+ $self->{_warnings} = [];
+}
+
+=item parse($string)
+
+This method can be used to (re)parse a (new) hyperlink, i.e. the contents
+of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object.
+
+=cut
+
+sub parse {
+ my $self = shift;
+ local($_) = $_[0];
+ # syntax check the link and extract destination
+ my ($alttext,$page,$node,$type) = ('','','','');
+
+ $self->{_warnings} = [];
+
+ # collapse newlines with whitespace
+ if(s/\s*\n+\s*/ /g) {
+ $self->warning("collapsing newlines to blanks");
+ }
+ # strip leading/trailing whitespace
+ if(s/^[\s\n]+//) {
+ $self->warning("ignoring leading whitespace in link");
+ }
+ if(s/[\s\n]+$//) {
+ $self->warning("ignoring trailing whitespace in link");
+ }
+ unless(length($_)) {
+ _invalid_link("empty link");
+ return undef;
+ }
+
+ ## Check for different possibilities. This is tedious and error-prone
+ # we match all possibilities (alttext, page, section/item)
+ #warn "DEBUG: link=$_\n";
+
+ # only page
+ # problem: a lot of people use (), or (1) or the like to indicate
+ # man page sections. But this collides with L<func()> that is supposed
+ # to point to an internal funtion...
+ # I would like the following better, here and below:
+ #if(m!^(\w+(?:::\w+)*)$!) {
+ my $page_rx = '[\w.]+(?:::[\w.]+)*';
+ if(m!^($page_rx)$!o) {
+ $page = $1;
+ $type = 'page';
+ }
+ # alttext, page and "section"
+ elsif(m!^(.+?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$!o) {
+ ($alttext, $page, $node) = ($1, $2, $3);
+ $type = 'section';
+ }
+ # alttext and page
+ elsif(m!^(.+?)\s*[|]\s*($page_rx)$!o) {
+ ($alttext, $page) = ($1, $2);
+ $type = 'page';
+ }
+ # alttext and "section"
+ elsif(m!^(.+?)\s*[|]\s*(?:/\s*|)"(.+)"$!) {
+ ($alttext, $node) = ($1,$2);
+ $type = 'section';
+ }
+ # page and "section"
+ elsif(m!^($page_rx)\s*/\s*"(.+)"$!o) {
+ ($page, $node) = ($1, $2);
+ $type = 'section';
+ }
+ # page and item
+ elsif(m!^($page_rx)\s*/\s*(.+)$!o) {
+ ($page, $node) = ($1, $2);
+ $type = 'item';
+ }
+ # only "section"
+ elsif(m!^/?"(.+)"$!) {
+ $node = $1;
+ $type = 'section';
+ }
+ # only item
+ elsif(m!^\s*/(.+)$!) {
+ $node = $1;
+ $type = 'item';
+ }
+ # non-standard: Hyperlink
+ elsif(m!^((?:http|ftp|mailto|news):.+)$!i) {
+ $node = $1;
+ $type = 'hyperlink';
+ }
+ # alttext, page and item
+ elsif(m!^(.+?)\s*[|]\s*($page_rx)\s*/\s*(.+)$!o) {
+ ($alttext, $page, $node) = ($1, $2, $3);
+ $type = 'item';
+ }
+ # alttext and item
+ elsif(m!^(.+?)\s*[|]\s*/(.+)$!) {
+ ($alttext, $node) = ($1,$2);
+ }
+ # nonstandard: alttext and hyperlink
+ elsif(m!^(.+?)\s*[|]\s*((?:http|ftp|mailto|news):.+)$!) {
+ ($alttext, $node) = ($1,$2);
+ $type = 'hyperlink';
+ }
+ # must be an item or a "malformed" section (without "")
+ else {
+ $node = $_;
+ $type = 'item';
+ }
+ # collapse whitespace in nodes
+ $node =~ s/\s+/ /gs;
+
+ #if($page =~ /[(]\w*[)]$/) {
+ # $self->warning("section in '$page' deprecated");
+ #}
+ if($node =~ m:[|/]:) {
+ $self->warning("node '$node' contains non-escaped | or /");
+ }
+ if($alttext =~ m:[|/]:) {
+ $self->warning("alternative text '$node' contains non-escaped | or /");
+ }
+ $self->{-page} = $page;
+ $self->{-node} = $node;
+ $self->{-alttext} = $alttext;
+ #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n";
+ $self->{-type} = $type;
+ $self->_construct_text();
+ 1;
+}
+
+sub _construct_text {
+ my $self = shift;
+ my $alttext = $self->alttext();
+ my $type = $self->type();
+ my $section = $self->node();
+ my $page = $self->page();
+ my $page_ext = '';
+ $page =~ s/([(]\w*[)])$// && ($page_ext = $1);
+ if($alttext) {
+ $self->{_text} = $alttext;
+ }
+ elsif($type eq 'hyperlink') {
+ $self->{_text} = $section;
+ }
+ else {
+ $self->{_text} = (!$section ? '' :
+ $type eq 'item' ? "the $section entry" :
+ "the section on $section" ) .
+ ($page ? ($section ? ' in ':'') . "the $page$page_ext manpage" :
+ ' elsewhere in this document');
+ }
+ # for being marked up later
+ # use the non-standard markers P<> and Q<>, so that the resulting
+ # text can be parsed by the translators. It's their job to put
+ # the correct hypertext around the linktext
+ if($alttext) {
+ $self->{_markup} = "Q<$alttext>";
+ }
+ elsif($type eq 'hyperlink') {
+ $self->{_markup} = "Q<$section>";
+ }
+ else {
+ $self->{_markup} = (!$section ? '' :
+ $type eq 'item' ? "the Q<$section> entry" :
+ "the section on Q<$section>" ) .
+ ($page ? ($section ? ' in ':'') . "the P<$page>$page_ext manpage" :
+ ' elsewhere in this document');
+ }
+}
+
+=item markup($string)
+
+Set/retrieve the textual value of the link. This string contains special
+markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the
+translator's interior sequence expansion engine to the
+formatter-specific code to highlight/activate the hyperlink. The details
+have to be implemented in the translator.
+
+=cut
+
+#' retrieve/set markuped text
+sub markup {
+ return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup};
+}
+
+=item text()
+
+This method returns the textual representation of the hyperlink as above,
+but without markers (read only). Depending on the link type this is one of
+the following alternatives (the + and * denote the portions of the text
+that are marked up):
+
+ the +perl+ manpage
+ the *$|* entry in the +perlvar+ manpage
+ the section on *OPTIONS* in the +perldoc+ manpage
+ the section on *DESCRIPTION* elsewhere in this document
+
+=cut
+
+# The complete link's text
+sub text {
+ $_[0]->{_text};
+}
+
+=item warning()
+
+After parsing, this method returns any warnings encountered during the
+parsing process.
+
+=cut
+
+# Set/retrieve warnings
+sub warning {
+ my $self = shift;
+ if(@_) {
+ push(@{$self->{_warnings}}, @_);
+ return @_;
+ }
+ return @{$self->{_warnings}};
+}
+
+=item line(), file()
+
+Just simple slots for storing information about the line and the file
+the link was encountered in. Has to be filled in manually.
+
+=cut
+
+# The line in the file the link appears
+sub line {
+ return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line};
+}
+
+# The POD file name the link appears in
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item page()
+
+This method sets or returns the POD page this link points to.
+
+=cut
+
+# The POD page the link appears on
+sub page {
+ if (@_ > 1) {
+ $_[0]->{-page} = $_[1];
+ $_[0]->_construct_text();
+ }
+ $_[0]->{-page};
+}
+
+=item node()
+
+As above, but the destination node text of the link.
+
+=cut
+
+# The link destination
+sub node {
+ if (@_ > 1) {
+ $_[0]->{-node} = $_[1];
+ $_[0]->_construct_text();
+ }
+ $_[0]->{-node};
+}
+
+=item alttext()
+
+Sets or returns an alternative text specified in the link.
+
+=cut
+
+# Potential alternative text
+sub alttext {
+ if (@_ > 1) {
+ $_[0]->{-alttext} = $_[1];
+ $_[0]->_construct_text();
+ }
+ $_[0]->{-alttext};
+}
+
+=item type()
+
+The node type, either C<section> or C<item>. As an unofficial type,
+there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>>
+
+=cut
+
+# The type: item or headn
+sub type {
+ return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
+}
+
+=item link()
+
+Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>.
+
+=back
+
+=cut
+
+# The link itself
+sub link {
+ my $self = shift;
+ my $link = $self->page() || '';
+ if($self->node()) {
+ my $node = $self->node();
+ $text =~ s/\|/E<verbar>/g;
+ $text =~ s:/:E<sol>:g;
+ if($self->type() eq 'section') {
+ $link .= ($link ? '/' : '') . '"' . $node . '"';
+ }
+ elsif($self->type() eq 'hyperlink') {
+ $link = $self->node();
+ }
+ else { # item
+ $link .= '/' . $node;
+ }
+ }
+ if($self->alttext()) {
+ my $text = $self->alttext();
+ $text =~ s/\|/E<verbar>/g;
+ $text =~ s:/:E<sol>:g;
+ $link = "$text|$link";
+ }
+ $link;
+}
+
+sub _invalid_link {
+ my ($msg) = @_;
+ # this sets @_
+ #eval { die "$msg\n" };
+ #chomp $@;
+ $@ = $msg; # this seems to work, too!
+ undef;
+}
+
+#-----------------------------------------------------------------------------
+# Pod::Cache
+#
+# class to hold POD page details
+#-----------------------------------------------------------------------------
+
+package Pod::Cache;
+
+=head2 Pod::Cache
+
+B<Pod::Cache> holds information about a set of POD documents,
+especially the nodes for hyperlinks.
+The following methods are available:
+
+=over 4
+
+=item new()
+
+Create a new cache object. This object can hold an arbitrary number of
+POD documents of class Pod::Cache::Item.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my $self = [];
+ bless $self, $class;
+ return $self;
+}
+
+=item item()
+
+Add a new item to the cache. Without arguments, this method returns a
+list of all cache elements.
+
+=cut
+
+sub item {
+ my ($self,%param) = @_;
+ if(%param) {
+ my $item = Pod::Cache::Item->new(%param);
+ push(@$self, $item);
+ return $item;
+ }
+ else {
+ return @{$self};
+ }
+}
+
+=item find_page($name)
+
+Look for a POD document named C<$name> in the cache. Returns the
+reference to the corresponding Pod::Cache::Item object or undef if
+not found.
+
+=back
+
+=cut
+
+sub find_page {
+ my ($self,$page) = @_;
+ foreach(@$self) {
+ if($_->page() eq $page) {
+ return $_;
+ }
+ }
+ undef;
+}
+
+package Pod::Cache::Item;
+
+=head2 Pod::Cache::Item
+
+B<Pod::Cache::Item> holds information about individual POD documents,
+that can be grouped in a Pod::Cache object.
+It is intended to hold information about the hyperlink nodes of POD
+documents.
+The following methods are available:
+
+=over 4
+
+=item new()
+
+Create a new object.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-nodes} = [] unless(defined $self->{-nodes});
+}
+
+=item page()
+
+Set/retrieve the POD document name (e.g. "Pod::Parser").
+
+=cut
+
+# The POD page
+sub page {
+ return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page};
+}
+
+=item description()
+
+Set/retrieve the POD short description as found in the C<=head1 NAME>
+section.
+
+=cut
+
+# The POD description, taken out of NAME if present
+sub description {
+ return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description};
+}
+
+=item path()
+
+Set/retrieve the POD file storage path.
+
+=cut
+
+# The file path
+sub path {
+ return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path};
+}
+
+=item file()
+
+Set/retrieve the POD file name.
+
+=cut
+
+# The POD file name
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item nodes()
+
+Add a node (or a list of nodes) to the document's node list. Note that
+the order is kept, i.e. start with the first node and end with the last.
+If no argument is given, the current list of nodes is returned in the
+same order the nodes have been added.
+A node can be any scalar, but usually is a pair of node string and
+unique id for the C<find_node> method to work correctly.
+
+=cut
+
+# The POD nodes
+sub nodes {
+ my ($self,@nodes) = @_;
+ if(@nodes) {
+ push(@{$self->{-nodes}}, @nodes);
+ return @nodes;
+ }
+ else {
+ return @{$self->{-nodes}};
+ }
+}
+
+=item find_node($name)
+
+Look for a node or index entry named C<$name> in the object.
+Returns the unique id of the node (i.e. the second element of the array
+stored in the node arry) or undef if not found.
+
+=back
+
+=cut
+
+sub find_node {
+ my ($self,$node) = @_;
+ my @search;
+ push(@search, @{$self->{-nodes}}) if($self->{-nodes});
+ push(@search, @{$self->{-idx}}) if($self->{-idx});
+ foreach(@search) {
+ if($_->[0] eq $node) {
+ return $_->[1]; # id
+ }
+ }
+ undef;
+}
+
+=item idx()
+
+Add an index entry (or a list of them) to the document's index list. Note that
+the order is kept, i.e. start with the first node and end with the last.
+If no argument is given, the current list of index entries is returned in the
+same order the entries have been added.
+An index entry can be any scalar, but usually is a pair of string and
+unique id.
+
+=cut
+
+# The POD index entries
+sub idx {
+ my ($self,@idx) = @_;
+ if(@idx) {
+ push(@{$self->{-idx}}, @idx);
+ return @idx;
+ }
+ else {
+ return @{$self->{-idx}};
+ }
+}
+
+=head1 AUTHOR
+
+Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>, borrowing
+a lot of things from L<pod2man> and L<pod2roff> as well as other POD
+processing tools by Tom Christiansen, Brad Appleton and Russ Allbery.
+
+=head1 SEE ALSO
+
+L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>,
+L<pod2html>
+
+=cut
+
+1;
diff --git a/contrib/perl5/lib/Pod/Parser.pm b/contrib/perl5/lib/Pod/Parser.pm
new file mode 100644
index 0000000..48fc198
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Parser.pm
@@ -0,0 +1,1771 @@
+#############################################################################
+# Pod/Parser.pm -- package which defines a base class for parsing POD docs.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Parser;
+
+use vars qw($VERSION);
+$VERSION = 1.12; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::Parser - base class for creating POD filters and translators
+
+=head1 SYNOPSIS
+
+ use Pod::Parser;
+
+ package MyParser;
+ @ISA = qw(Pod::Parser);
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num) = @_;
+ ## Interpret the command and its text; sample actions might be:
+ if ($command eq 'head1') { ... }
+ elsif ($command eq 'head2') { ... }
+ ## ... other commands and their actions
+ my $out_fh = $parser->output_handle();
+ my $expansion = $parser->interpolate($paragraph, $line_num);
+ print $out_fh $expansion;
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num) = @_;
+ ## Format verbatim paragraph; sample actions might be:
+ my $out_fh = $parser->output_handle();
+ print $out_fh $paragraph;
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num) = @_;
+ ## Translate/Format this block of text; sample actions might be:
+ my $out_fh = $parser->output_handle();
+ my $expansion = $parser->interpolate($paragraph, $line_num);
+ print $out_fh $expansion;
+ }
+
+ sub interior_sequence {
+ my ($parser, $seq_command, $seq_argument) = @_;
+ ## Expand an interior sequence; sample actions might be:
+ return "*$seq_argument*" if ($seq_command eq 'B');
+ return "`$seq_argument'" if ($seq_command eq 'C');
+ return "_${seq_argument}_'" if ($seq_command eq 'I');
+ ## ... other sequence commands and their resulting text
+ }
+
+ package main;
+
+ ## Create a parser object and have it parse file whose name was
+ ## given on the command-line (use STDIN if no files were given).
+ $parser = new MyParser();
+ $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0);
+ for (@ARGV) { $parser->parse_from_file($_); }
+
+=head1 REQUIRES
+
+perl5.005, Pod::InputObjects, Exporter, Symbol, Carp
+
+=head1 EXPORTS
+
+Nothing.
+
+=head1 DESCRIPTION
+
+B<Pod::Parser> is a base class for creating POD filters and translators.
+It handles most of the effort involved with parsing the POD sections
+from an input stream, leaving subclasses free to be concerned only with
+performing the actual translation of text.
+
+B<Pod::Parser> parses PODs, and makes method calls to handle the various
+components of the POD. Subclasses of B<Pod::Parser> override these methods
+to translate the POD into whatever output format they desire.
+
+=head1 QUICK OVERVIEW
+
+To create a POD filter for translating POD documentation into some other
+format, you create a subclass of B<Pod::Parser> which typically overrides
+just the base class implementation for the following methods:
+
+=over 2
+
+=item *
+
+B<command()>
+
+=item *
+
+B<verbatim()>
+
+=item *
+
+B<textblock()>
+
+=item *
+
+B<interior_sequence()>
+
+=back
+
+You may also want to override the B<begin_input()> and B<end_input()>
+methods for your subclass (to perform any needed per-file and/or
+per-document initialization or cleanup).
+
+If you need to perform any preprocesssing of input before it is parsed
+you may want to override one or more of B<preprocess_line()> and/or
+B<preprocess_paragraph()>.
+
+Sometimes it may be necessary to make more than one pass over the input
+files. If this is the case you have several options. You can make the
+first pass using B<Pod::Parser> and override your methods to store the
+intermediate results in memory somewhere for the B<end_pod()> method to
+process. You could use B<Pod::Parser> for several passes with an
+appropriate state variable to control the operation for each pass. If
+your input source can't be reset to start at the beginning, you can
+store it in some other structure as a string or an array and have that
+structure implement a B<getline()> method (which is all that
+B<parse_from_filehandle()> uses to read input).
+
+Feel free to add any member data fields you need to keep track of things
+like current font, indentation, horizontal or vertical position, or
+whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA">
+to avoid name collisions.
+
+For the most part, the B<Pod::Parser> base class should be able to
+do most of the input parsing for you and leave you free to worry about
+how to intepret the commands and translate the result.
+
+Note that all we have described here in this quick overview is the
+simplest most straightforward use of B<Pod::Parser> to do stream-based
+parsing. It is also possible to use the B<Pod::Parser::parse_text> function
+to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">.
+
+=head1 PARSING OPTIONS
+
+A I<parse-option> is simply a named option of B<Pod::Parser> with a
+value that corresponds to a certain specified behavior. These various
+behaviors of B<Pod::Parser> may be enabled/disabled by setting or
+or unsetting one or more I<parse-options> using the B<parseopts()> method.
+The set of currently accepted parse-options is as follows:
+
+=over 3
+
+=item B<-want_nonPODs> (default: unset)
+
+Normally (by default) B<Pod::Parser> will only provide access to
+the POD sections of the input. Input paragraphs that are not part
+of the POD-format documentation are not made available to the caller
+(not even using B<preprocess_paragraph()>). Setting this option to a
+non-empty, non-zero value will allow B<preprocess_paragraph()> to see
+non-POD sections of the input as well as POD sections. The B<cutting()>
+method can be used to determine if the corresponding paragraph is a POD
+paragraph, or some other input paragraph.
+
+=item B<-process_cut_cmd> (default: unset)
+
+Normally (by default) B<Pod::Parser> handles the C<=cut> POD directive
+by itself and does not pass it on to the caller for processing. Setting
+this option to a non-empty, non-zero value will cause B<Pod::Parser> to
+pass the C<=cut> directive to the caller just like any other POD command
+(and hence it may be processed by the B<command()> method).
+
+B<Pod::Parser> will still interpret the C<=cut> directive to mean that
+"cutting mode" has been (re)entered, but the caller will get a chance
+to capture the actual C<=cut> paragraph itself for whatever purpose
+it desires.
+
+=item B<-warnings> (default: unset)
+
+Normally (by default) B<Pod::Parser> recognizes a bare minimum of
+pod syntax errors and warnings and issues diagnostic messages
+for errors, but not for warnings. (Use B<Pod::Checker> to do more
+thorough checking of POD syntax.) Setting this option to a non-empty,
+non-zero value will cause B<Pod::Parser> to issue diagnostics for
+the few warnings it recognizes as well as the errors.
+
+=back
+
+Please see L<"parseopts()"> for a complete description of the interface
+for the setting and unsetting of parse-options.
+
+=cut
+
+#############################################################################
+
+use vars qw(@ISA);
+use strict;
+#use diagnostics;
+use Pod::InputObjects;
+use Carp;
+use Exporter;
+require VMS::Filespec if $^O eq 'VMS';
+BEGIN {
+ if ($] < 5.6) {
+ require Symbol;
+ import Symbol;
+ }
+}
+@ISA = qw(Exporter);
+
+## These "variables" are used as local "glob aliases" for performance
+use vars qw(%myData %myOpts @input_stack);
+
+#############################################################################
+
+=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES
+
+B<Pod::Parser> provides several methods which most subclasses will probably
+want to override. These methods are as follows:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<command()>
+
+ $parser->command($cmd,$text,$line_num,$pod_para);
+
+This method should be overridden by subclasses to take the appropriate
+action when a POD command paragraph (denoted by a line beginning with
+"=") is encountered. When such a POD directive is seen in the input,
+this method is called and is passed:
+
+=over 3
+
+=item C<$cmd>
+
+the name of the command for this POD paragraph
+
+=item C<$text>
+
+the paragraph text for the given POD paragraph command.
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph command (see L<Pod::InputObjects>
+for details).
+
+=back
+
+B<Note> that this method I<is> called for C<=pod> paragraphs.
+
+The base class implementation of this method simply treats the raw POD
+command as normal block of paragraph text (invoking the B<textblock()>
+method with the command paragraph).
+
+=cut
+
+sub command {
+ my ($self, $cmd, $text, $line_num, $pod_para) = @_;
+ ## Just treat this like a textblock
+ $self->textblock($pod_para->raw_text(), $line_num, $pod_para);
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<verbatim()>
+
+ $parser->verbatim($text,$line_num,$pod_para);
+
+This method may be overridden by subclasses to take the appropriate
+action when a block of verbatim text is encountered. It is passed the
+following parameters:
+
+=over 3
+
+=item C<$text>
+
+the block of text for the verbatim paragraph
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph (see L<Pod::InputObjects>
+for details).
+
+=back
+
+The base class implementation of this method simply prints the textblock
+(unmodified) to the output filehandle.
+
+=cut
+
+sub verbatim {
+ my ($self, $text, $line_num, $pod_para) = @_;
+ my $out_fh = $self->{_OUTPUT};
+ print $out_fh $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<textblock()>
+
+ $parser->textblock($text,$line_num,$pod_para);
+
+This method may be overridden by subclasses to take the appropriate
+action when a normal block of POD text is encountered (although the base
+class method will usually do what you want). It is passed the following
+parameters:
+
+=over 3
+
+=item C<$text>
+
+the block of text for the a POD paragraph
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph (see L<Pod::InputObjects>
+for details).
+
+=back
+
+In order to process interior sequences, subclasses implementations of
+this method will probably want to invoke either B<interpolate()> or
+B<parse_text()>, passing it the text block C<$text>, and the corresponding
+line number in C<$line_num>, and then perform any desired processing upon
+the returned result.
+
+The base class implementation of this method simply prints the text block
+as it occurred in the input stream).
+
+=cut
+
+sub textblock {
+ my ($self, $text, $line_num, $pod_para) = @_;
+ my $out_fh = $self->{_OUTPUT};
+ print $out_fh $self->interpolate($text, $line_num);
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<interior_sequence()>
+
+ $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq);
+
+This method should be overridden by subclasses to take the appropriate
+action when an interior sequence is encountered. An interior sequence is
+an embedded command within a block of text which appears as a command
+name (usually a single uppercase character) followed immediately by a
+string of text which is enclosed in angle brackets. This method is
+passed the sequence command C<$seq_cmd> and the corresponding text
+C<$seq_arg>. It is invoked by the B<interpolate()> method for each interior
+sequence that occurs in the string that it is passed. It should return
+the desired text string to be used in place of the interior sequence.
+The C<$pod_seq> argument is a reference to a C<Pod::InteriorSequence>
+object which contains further information about the interior sequence.
+Please see L<Pod::InputObjects> for details if you need to access this
+additional information.
+
+Subclass implementations of this method may wish to invoke the
+B<nested()> method of C<$pod_seq> to see if it is nested inside
+some other interior-sequence (and if so, which kind).
+
+The base class implementation of the B<interior_sequence()> method
+simply returns the raw text of the interior sequence (as it occurred
+in the input) to the caller.
+
+=cut
+
+sub interior_sequence {
+ my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_;
+ ## Just return the raw text of the interior sequence
+ return $pod_seq->raw_text();
+}
+
+#############################################################################
+
+=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES
+
+B<Pod::Parser> provides several methods which subclasses may want to override
+to perform any special pre/post-processing. These methods do I<not> have to
+be overridden, but it may be useful for subclasses to take advantage of them.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<new()>
+
+ my $parser = Pod::Parser->new();
+
+This is the constructor for B<Pod::Parser> and its subclasses. You
+I<do not> need to override this method! It is capable of constructing
+subclass objects as well as base class objects, provided you use
+any of the following constructor invocation styles:
+
+ my $parser1 = MyParser->new();
+ my $parser2 = new MyParser();
+ my $parser3 = $parser2->new();
+
+where C<MyParser> is some subclass of B<Pod::Parser>.
+
+Using the syntax C<MyParser::new()> to invoke the constructor is I<not>
+recommended, but if you insist on being able to do this, then the
+subclass I<will> need to override the B<new()> constructor method. If
+you do override the constructor, you I<must> be sure to invoke the
+B<initialize()> method of the newly blessed object.
+
+Using any of the above invocations, the first argument to the
+constructor is always the corresponding package name (or object
+reference). No other arguments are required, but if desired, an
+associative array (or hash-table) my be passed to the B<new()>
+constructor, as in:
+
+ my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 );
+ my $parser2 = new MyParser( -myflag => 1 );
+
+All arguments passed to the B<new()> constructor will be treated as
+key/value pairs in a hash-table. The newly constructed object will be
+initialized by copying the contents of the given hash-table (which may
+have been empty). The B<new()> constructor for this class and all of its
+subclasses returns a blessed reference to the initialized object (hash-table).
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object.
+ my %params = @_;
+ my $self = { %params };
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<initialize()>
+
+ $parser->initialize();
+
+This method performs any necessary object initialization. It takes no
+arguments (other than the object instance of course, which is typically
+copied to a local variable named C<$self>). If subclasses override this
+method then they I<must> be sure to invoke C<$self-E<gt>SUPER::initialize()>.
+
+=cut
+
+sub initialize {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<begin_pod()>
+
+ $parser->begin_pod();
+
+This method is invoked at the beginning of processing for each POD
+document that is encountered in the input. Subclasses should override
+this method to perform any per-document initialization.
+
+=cut
+
+sub begin_pod {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<begin_input()>
+
+ $parser->begin_input();
+
+This method is invoked by B<parse_from_filehandle()> immediately I<before>
+processing input from a filehandle. The base class implementation does
+nothing, however, subclasses may override it to perform any per-file
+initializations.
+
+Note that if multiple files are parsed for a single POD document
+(perhaps the result of some future C<=include> directive) this method
+is invoked for every file that is parsed. If you wish to perform certain
+initializations once per document, then you should use B<begin_pod()>.
+
+=cut
+
+sub begin_input {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<end_input()>
+
+ $parser->end_input();
+
+This method is invoked by B<parse_from_filehandle()> immediately I<after>
+processing input from a filehandle. The base class implementation does
+nothing, however, subclasses may override it to perform any per-file
+cleanup actions.
+
+Please note that if multiple files are parsed for a single POD document
+(perhaps the result of some kind of C<=include> directive) this method
+is invoked for every file that is parsed. If you wish to perform certain
+cleanup actions once per document, then you should use B<end_pod()>.
+
+=cut
+
+sub end_input {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<end_pod()>
+
+ $parser->end_pod();
+
+This method is invoked at the end of processing for each POD document
+that is encountered in the input. Subclasses should override this method
+to perform any per-document finalization.
+
+=cut
+
+sub end_pod {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<preprocess_line()>
+
+ $textline = $parser->preprocess_line($text, $line_num);
+
+This method should be overridden by subclasses that wish to perform
+any kind of preprocessing for each I<line> of input (I<before> it has
+been determined whether or not it is part of a POD paragraph). The
+parameter C<$text> is the input line; and the parameter C<$line_num> is
+the line number of the corresponding text line.
+
+The value returned should correspond to the new text to use in its
+place. If the empty string or an undefined value is returned then no
+further processing will be performed for this line.
+
+Please note that the B<preprocess_line()> method is invoked I<before>
+the B<preprocess_paragraph()> method. After all (possibly preprocessed)
+lines in a paragraph have been assembled together and it has been
+determined that the paragraph is part of the POD documentation from one
+of the selected sections, then B<preprocess_paragraph()> is invoked.
+
+The base class implementation of this method returns the given text.
+
+=cut
+
+sub preprocess_line {
+ my ($self, $text, $line_num) = @_;
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<preprocess_paragraph()>
+
+ $textblock = $parser->preprocess_paragraph($text, $line_num);
+
+This method should be overridden by subclasses that wish to perform any
+kind of preprocessing for each block (paragraph) of POD documentation
+that appears in the input stream. The parameter C<$text> is the POD
+paragraph from the input file; and the parameter C<$line_num> is the
+line number for the beginning of the corresponding paragraph.
+
+The value returned should correspond to the new text to use in its
+place If the empty string is returned or an undefined value is
+returned, then the given C<$text> is ignored (not processed).
+
+This method is invoked after gathering up all the lines in a paragraph
+and after determining the cutting state of the paragraph,
+but before trying to further parse or interpret them. After
+B<preprocess_paragraph()> returns, the current cutting state (which
+is returned by C<$self-E<gt>cutting()>) is examined. If it evaluates
+to true then input text (including the given C<$text>) is cut (not
+processed) until the next POD directive is encountered.
+
+Please note that the B<preprocess_line()> method is invoked I<before>
+the B<preprocess_paragraph()> method. After all (possibly preprocessed)
+lines in a paragraph have been assembled together and either it has been
+determined that the paragraph is part of the POD documentation from one
+of the selected sections or the C<-want_nonPODs> option is true,
+then B<preprocess_paragraph()> is invoked.
+
+The base class implementation of this method returns the given text.
+
+=cut
+
+sub preprocess_paragraph {
+ my ($self, $text, $line_num) = @_;
+ return $text;
+}
+
+#############################################################################
+
+=head1 METHODS FOR PARSING AND PROCESSING
+
+B<Pod::Parser> provides several methods to process input text. These
+methods typically won't need to be overridden (and in some cases they
+can't be overridden), but subclasses may want to invoke them to exploit
+their functionality.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_text()>
+
+ $ptree1 = $parser->parse_text($text, $line_num);
+ $ptree2 = $parser->parse_text({%opts}, $text, $line_num);
+ $ptree3 = $parser->parse_text(\%opts, $text, $line_num);
+
+This method is useful if you need to perform your own interpolation
+of interior sequences and can't rely upon B<interpolate> to expand
+them in simple bottom-up order order.
+
+The parameter C<$text> is a string or block of text to be parsed
+for interior sequences; and the parameter C<$line_num> is the
+line number curresponding to the beginning of C<$text>.
+
+B<parse_text()> will parse the given text into a parse-tree of "nodes."
+and interior-sequences. Each "node" in the parse tree is either a
+text-string, or a B<Pod::InteriorSequence>. The result returned is a
+parse-tree of type B<Pod::ParseTree>. Please see L<Pod::InputObjects>
+for more information about B<Pod::InteriorSequence> and B<Pod::ParseTree>.
+
+If desired, an optional hash-ref may be specified as the first argument
+to customize certain aspects of the parse-tree that is created and
+returned. The set of recognized option keywords are:
+
+=over 3
+
+=item B<-expand_seq> =E<gt> I<code-ref>|I<method-name>
+
+Normally, the parse-tree returned by B<parse_text()> will contain an
+unexpanded C<Pod::InteriorSequence> object for each interior-sequence
+encountered. Specifying B<-expand_seq> tells B<parse_text()> to "expand"
+every interior-sequence it sees by invoking the referenced function
+(or named method of the parser object) and using the return value as the
+expanded result.
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $sequence )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $sequence )
+
+where C<$parser> is a reference to the parser object, and C<$sequence>
+is a reference to the interior-sequence object.
+[I<NOTE>: If the B<interior_sequence()> method is specified, then it is
+invoked according to the interface specified in L<"interior_sequence()">].
+
+=item B<-expand_text> =E<gt> I<code-ref>|I<method-name>
+
+Normally, the parse-tree returned by B<parse_text()> will contain a
+text-string for each contiguous sequence of characters outside of an
+interior-sequence. Specifying B<-expand_text> tells B<parse_text()> to
+"preprocess" every such text-string it sees by invoking the referenced
+function (or named method of the parser object) and using the return value
+as the preprocessed (or "expanded") result. [Note that if the result is
+an interior-sequence, then it will I<not> be expanded as specified by the
+B<-expand_seq> option; Any such recursive expansion needs to be handled by
+the specified callback routine.]
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $text, $ptree_node )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $text, $ptree_node )
+
+where C<$parser> is a reference to the parser object, C<$text> is the
+text-string encountered, and C<$ptree_node> is a reference to the current
+node in the parse-tree (usually an interior-sequence object or else the
+top-level node of the parse-tree).
+
+=item B<-expand_ptree> =E<gt> I<code-ref>|I<method-name>
+
+Rather than returning a C<Pod::ParseTree>, pass the parse-tree as an
+argument to the referenced subroutine (or named method of the parser
+object) and return the result instead of the parse-tree object.
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $ptree )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $ptree )
+
+where C<$parser> is a reference to the parser object, and C<$ptree>
+is a reference to the parse-tree object.
+
+=back
+
+=cut
+
+sub parse_text {
+ my $self = shift;
+ local $_ = '';
+
+ ## Get options and set any defaults
+ my %opts = (ref $_[0]) ? %{ shift() } : ();
+ my $expand_seq = $opts{'-expand_seq'} || undef;
+ my $expand_text = $opts{'-expand_text'} || undef;
+ my $expand_ptree = $opts{'-expand_ptree'} || undef;
+
+ my $text = shift;
+ my $line = shift;
+ my $file = $self->input_file();
+ my $cmd = "";
+
+ ## Convert method calls into closures, for our convenience
+ my $xseq_sub = $expand_seq;
+ my $xtext_sub = $expand_text;
+ my $xptree_sub = $expand_ptree;
+ if (defined $expand_seq and $expand_seq eq 'interior_sequence') {
+ ## If 'interior_sequence' is the method to use, we have to pass
+ ## more than just the sequence object, we also need to pass the
+ ## sequence name and text.
+ $xseq_sub = sub {
+ my ($self, $iseq) = @_;
+ my $args = join("", $iseq->parse_tree->children);
+ return $self->interior_sequence($iseq->name, $args, $iseq);
+ };
+ }
+ ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) };
+ ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) };
+ ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) };
+
+ ## Keep track of the "current" interior sequence, and maintain a stack
+ ## of "in progress" sequences.
+ ##
+ ## NOTE that we push our own "accumulator" at the very beginning of the
+ ## stack. It's really a parse-tree, not a sequence; but it implements
+ ## the methods we need so we can use it to gather-up all the sequences
+ ## and strings we parse. Thus, by the end of our parsing, it should be
+ ## the only thing left on our stack and all we have to do is return it!
+ ##
+ my $seq = Pod::ParseTree->new();
+ my @seq_stack = ($seq);
+ my ($ldelim, $rdelim) = ('', '');
+
+ ## Iterate over all sequence starts text (NOTE: split with
+ ## capturing parens keeps the delimiters)
+ $_ = $text;
+ my @tokens = split /([A-Z]<(?:<+\s+)?)/;
+ while ( @tokens ) {
+ $_ = shift @tokens;
+ ## Look for the beginning of a sequence
+ if ( /^([A-Z])(<(?:<+\s+)?)$/ ) {
+ ## Push a new sequence onto the stack of those "in-progress"
+ ($cmd, $ldelim) = ($1, $2);
+ $seq = Pod::InteriorSequence->new(
+ -name => $cmd,
+ -ldelim => $ldelim, -rdelim => '',
+ -file => $file, -line => $line
+ );
+ $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr/</>/;
+ (@seq_stack > 1) and $seq->nested($seq_stack[-1]);
+ push @seq_stack, $seq;
+ }
+ ## Look for sequence ending
+ elsif ( @seq_stack > 1 ) {
+ ## Make sure we match the right kind of closing delimiter
+ my ($seq_end, $post_seq) = ("", "");
+ if ( ($ldelim eq '<' and /\A(.*?)(>)/s)
+ or /\A(.*?)(\s+$rdelim)/s )
+ {
+ ## Found end-of-sequence, capture the interior and the
+ ## closing the delimiter, and put the rest back on the
+ ## token-list
+ $post_seq = substr($_, length($1) + length($2));
+ ($_, $seq_end) = ($1, $2);
+ (length $post_seq) and unshift @tokens, $post_seq;
+ }
+ if (length) {
+ ## In the middle of a sequence, append this text to it, and
+ ## dont forget to "expand" it if that's what the caller wanted
+ $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
+ $_ .= $seq_end;
+ }
+ if (length $seq_end) {
+ ## End of current sequence, record terminating delimiter
+ $seq->rdelim($seq_end);
+ ## Pop it off the stack of "in progress" sequences
+ pop @seq_stack;
+ ## Append result to its parent in current parse tree
+ $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq)
+ : $seq);
+ ## Remember the current cmd-name and left-delimiter
+ $cmd = (@seq_stack > 1) ? $seq_stack[-1]->name : '';
+ $ldelim = (@seq_stack > 1) ? $seq_stack[-1]->ldelim : '';
+ $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr/</>/;
+ }
+ }
+ elsif (length) {
+ ## In the middle of a sequence, append this text to it, and
+ ## dont forget to "expand" it if that's what the caller wanted
+ $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
+ }
+ ## Keep track of line count
+ $line += tr/\n//;
+ ## Remember the "current" sequence
+ $seq = $seq_stack[-1];
+ }
+
+ ## Handle unterminated sequences
+ my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef;
+ while (@seq_stack > 1) {
+ ($cmd, $file, $line) = ($seq->name, $seq->file_line);
+ $file = VMS::Filespec::unixify($file) if $^O eq 'VMS';
+ $ldelim = $seq->ldelim;
+ ($rdelim = $ldelim) =~ tr/</>/;
+ $rdelim =~ s/^(\S+)(\s*)$/$2$1/;
+ pop @seq_stack;
+ my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}".
+ " at line $line in file $file\n";
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $self->$errorsub($errmsg)
+ or warn($errmsg);
+ $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq);
+ $seq = $seq_stack[-1];
+ }
+
+ ## Return the resulting parse-tree
+ my $ptree = (pop @seq_stack)->parse_tree;
+ return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<interpolate()>
+
+ $textblock = $parser->interpolate($text, $line_num);
+
+This method translates all text (including any embedded interior sequences)
+in the given text string C<$text> and returns the interpolated result. The
+parameter C<$line_num> is the line number corresponding to the beginning
+of C<$text>.
+
+B<interpolate()> merely invokes a private method to recursively expand
+nested interior sequences in bottom-up order (innermost sequences are
+expanded first). If there is a need to expand nested sequences in
+some alternate order, use B<parse_text> instead.
+
+=cut
+
+sub interpolate {
+ my($self, $text, $line_num) = @_;
+ my %parse_opts = ( -expand_seq => 'interior_sequence' );
+ my $ptree = $self->parse_text( \%parse_opts, $text, $line_num );
+ return join "", $ptree->children();
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<parse_paragraph()>
+
+ $parser->parse_paragraph($text, $line_num);
+
+This method takes the text of a POD paragraph to be processed, along
+with its corresponding line number, and invokes the appropriate method
+(one of B<command()>, B<verbatim()>, or B<textblock()>).
+
+For performance reasons, this method is invoked directly without any
+dynamic lookup; Hence subclasses may I<not> override it!
+
+=end __PRIVATE__
+
+=cut
+
+sub parse_paragraph {
+ my ($self, $text, $line_num) = @_;
+ local *myData = $self; ## alias to avoid deref-ing overhead
+ local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
+ local $_;
+
+ ## See if we want to preprocess nonPOD paragraphs as well as POD ones.
+ my $wantNonPods = $myOpts{'-want_nonPODs'};
+
+ ## Update cutting status
+ $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/;
+
+ ## Perform any desired preprocessing if we wanted it this early
+ $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num);
+
+ ## Ignore up until next POD directive if we are cutting
+ return if $myData{_CUTTING};
+
+ ## Now we know this is block of text in a POD section!
+
+ ##-----------------------------------------------------------------
+ ## This is a hook (hack ;-) for Pod::Select to do its thing without
+ ## having to override methods, but also without Pod::Parser assuming
+ ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS
+ ## field exists then we assume there is an is_selected() method for
+ ## us to invoke (calling $self->can('is_selected') could verify this
+ ## but that is more overhead than I want to incur)
+ ##-----------------------------------------------------------------
+
+ ## Ignore this block if it isnt in one of the selected sections
+ if (exists $myData{_SELECTED_SECTIONS}) {
+ $self->is_selected($text) or return ($myData{_CUTTING} = 1);
+ }
+
+ ## If we havent already, perform any desired preprocessing and
+ ## then re-check the "cutting" state
+ unless ($wantNonPods) {
+ $text = $self->preprocess_paragraph($text, $line_num);
+ return 1 unless ((defined $text) and (length $text));
+ return 1 if ($myData{_CUTTING});
+ }
+
+ ## Look for one of the three types of paragraphs
+ my ($pfx, $cmd, $arg, $sep) = ('', '', '', '');
+ my $pod_para = undef;
+ if ($text =~ /^(={1,2})(?=\S)/) {
+ ## Looks like a command paragraph. Capture the command prefix used
+ ## ("=" or "=="), as well as the command-name, its paragraph text,
+ ## and whatever sequence of characters was used to separate them
+ $pfx = $1;
+ $_ = substr($text, length $pfx);
+ ($cmd, $sep, $text) = split /(\s+)/, $_, 2;
+ ## If this is a "cut" directive then we dont need to do anything
+ ## except return to "cutting" mode.
+ if ($cmd eq 'cut') {
+ $myData{_CUTTING} = 1;
+ return unless $myOpts{'-process_cut_cmd'};
+ }
+ }
+ ## Save the attributes indicating how the command was specified.
+ $pod_para = new Pod::Paragraph(
+ -name => $cmd,
+ -text => $text,
+ -prefix => $pfx,
+ -separator => $sep,
+ -file => $myData{_INFILE},
+ -line => $line_num
+ );
+ # ## Invoke appropriate callbacks
+ # if (exists $myData{_CALLBACKS}) {
+ # ## Look through the callback list, invoke callbacks,
+ # ## then see if we need to do the default actions
+ # ## (invoke_callbacks will return true if we do).
+ # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para);
+ # }
+ if (length $cmd) {
+ ## A command paragraph
+ $self->command($cmd, $text, $line_num, $pod_para);
+ }
+ elsif ($text =~ /^\s+/) {
+ ## Indented text - must be a verbatim paragraph
+ $self->verbatim($text, $line_num, $pod_para);
+ }
+ else {
+ ## Looks like an ordinary block of text
+ $self->textblock($text, $line_num, $pod_para);
+ }
+ return 1;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_from_filehandle()>
+
+ $parser->parse_from_filehandle($in_fh,$out_fh);
+
+This method takes an input filehandle (which is assumed to already be
+opened for reading) and reads the entire input stream looking for blocks
+(paragraphs) of POD documentation to be processed. If no first argument
+is given the default input filehandle C<STDIN> is used.
+
+The C<$in_fh> parameter may be any object that provides a B<getline()>
+method to retrieve a single line of input text (hence, an appropriate
+wrapper object could be used to parse PODs from a single string or an
+array of strings).
+
+Using C<$in_fh-E<gt>getline()>, input is read line-by-line and assembled
+into paragraphs or "blocks" (which are separated by lines containing
+nothing but whitespace). For each block of POD documentation
+encountered it will invoke a method to parse the given paragraph.
+
+If a second argument is given then it should correspond to a filehandle where
+output should be sent (otherwise the default output filehandle is
+C<STDOUT> if no output filehandle is currently in use).
+
+B<NOTE:> For performance reasons, this method caches the input stream at
+the top of the stack in a local variable. Any attempts by clients to
+change the stack contents during processing when in the midst executing
+of this method I<will not affect> the input stream used by the current
+invocation of this method.
+
+This method does I<not> usually need to be overridden by subclasses.
+
+=cut
+
+sub parse_from_filehandle {
+ my $self = shift;
+ my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
+ my ($in_fh, $out_fh) = @_;
+ $in_fh = \*STDIN unless ($in_fh);
+ local *myData = $self; ## alias to avoid deref-ing overhead
+ local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
+ local $_;
+
+ ## Put this stream at the top of the stack and do beginning-of-input
+ ## processing. NOTE that $in_fh might be reset during this process.
+ my $topstream = $self->_push_input_stream($in_fh, $out_fh);
+ (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} );
+
+ ## Initialize line/paragraph
+ my ($textline, $paragraph) = ('', '');
+ my ($nlines, $plines) = (0, 0);
+
+ ## Use <$fh> instead of $fh->getline where possible (for speed)
+ $_ = ref $in_fh;
+ my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh);
+
+ ## Read paragraphs line-by-line
+ while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) {
+ $textline = $self->preprocess_line($textline, ++$nlines);
+ next unless ((defined $textline) && (length $textline));
+ $_ = $paragraph; ## save previous contents
+
+ if ((! length $paragraph) && ($textline =~ /^==/)) {
+ ## '==' denotes a one-line command paragraph
+ $paragraph = $textline;
+ $plines = 1;
+ $textline = '';
+ } else {
+ ## Append this line to the current paragraph
+ $paragraph .= $textline;
+ ++$plines;
+ }
+
+ ## See if this line is blank and ends the current paragraph.
+ ## If it isnt, then keep iterating until it is.
+ next unless (($textline =~ /^([^\S\r\n]*)[\r\n]*$/)
+ && (length $paragraph));
+
+ ## Issue a warning about any non-empty blank lines
+ if (length($1) > 1 and $myOpts{'-warnings'} and ! $myData{_CUTTING}) {
+ my $errorsub = $self->errorsub();
+ my $file = $self->input_file();
+ $file = VMS::Filespec::unixify($file) if $^O eq 'VMS';
+ my $errmsg = "*** WARNING: line containing nothing but whitespace".
+ " in paragraph at line $nlines in file $file\n";
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $self->$errorsub($errmsg)
+ or warn($errmsg);
+ }
+
+ ## Now process the paragraph
+ parse_paragraph($self, $paragraph, ($nlines - $plines) + 1);
+ $paragraph = '';
+ $plines = 0;
+ }
+ ## Dont forget about the last paragraph in the file
+ if (length $paragraph) {
+ parse_paragraph($self, $paragraph, ($nlines - $plines) + 1)
+ }
+
+ ## Now pop the input stream off the top of the input stack.
+ $self->_pop_input_stream();
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_from_file()>
+
+ $parser->parse_from_file($filename,$outfile);
+
+This method takes a filename and does the following:
+
+=over 2
+
+=item *
+
+opens the input and output files for reading
+(creating the appropriate filehandles)
+
+=item *
+
+invokes the B<parse_from_filehandle()> method passing it the
+corresponding input and output filehandles.
+
+=item *
+
+closes the input and output files.
+
+=back
+
+If the special input filename "-" or "<&STDIN" is given then the STDIN
+filehandle is used for input (and no open or close is performed). If no
+input filename is specified then "-" is implied.
+
+If a second argument is given then it should be the name of the desired
+output file. If the special output filename "-" or ">&STDOUT" is given
+then the STDOUT filehandle is used for output (and no open or close is
+performed). If the special output filename ">&STDERR" is given then the
+STDERR filehandle is used for output (and no open or close is
+performed). If no output filehandle is currently in use and no output
+filename is specified, then "-" is implied.
+
+This method does I<not> usually need to be overridden by subclasses.
+
+=cut
+
+sub parse_from_file {
+ my $self = shift;
+ my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
+ my ($infile, $outfile) = @_;
+ my ($in_fh, $out_fh) = (gensym, gensym) if ($] < 5.6);
+ my ($close_input, $close_output) = (0, 0);
+ local *myData = $self;
+ local $_;
+
+ ## Is $infile a filename or a (possibly implied) filehandle
+ $infile = '-' unless ((defined $infile) && (length $infile));
+ if (($infile eq '-') || ($infile =~ /^<&(STDIN|0)$/i)) {
+ ## Not a filename, just a string implying STDIN
+ $myData{_INFILE} = "<standard input>";
+ $in_fh = \*STDIN;
+ }
+ elsif (ref $infile) {
+ ## Must be a filehandle-ref (or else assume its a ref to an object
+ ## that supports the common IO read operations).
+ $myData{_INFILE} = ${$infile};
+ $in_fh = $infile;
+ }
+ else {
+ ## We have a filename, open it for reading
+ $myData{_INFILE} = $infile;
+ open($in_fh, "< $infile") or
+ croak "Can't open $infile for reading: $!\n";
+ $close_input = 1;
+ }
+
+ ## NOTE: we need to be *very* careful when "defaulting" the output
+ ## file. We only want to use a default if this is the beginning of
+ ## the entire document (but *not* if this is an included file). We
+ ## determine this by seeing if the input stream stack has been set-up
+ ## already
+ ##
+ unless ((defined $outfile) && (length $outfile)) {
+ (defined $myData{_TOP_STREAM}) && ($out_fh = $myData{_OUTPUT})
+ || ($outfile = '-');
+ }
+ ## Is $outfile a filename or a (possibly implied) filehandle
+ if ((defined $outfile) && (length $outfile)) {
+ if (($outfile eq '-') || ($outfile =~ /^>&?(?:STDOUT|1)$/i)) {
+ ## Not a filename, just a string implying STDOUT
+ $myData{_OUTFILE} = "<standard output>";
+ $out_fh = \*STDOUT;
+ }
+ elsif ($outfile =~ /^>&(STDERR|2)$/i) {
+ ## Not a filename, just a string implying STDERR
+ $myData{_OUTFILE} = "<standard error>";
+ $out_fh = \*STDERR;
+ }
+ elsif (ref $outfile) {
+ ## Must be a filehandle-ref (or else assume its a ref to an
+ ## object that supports the common IO write operations).
+ $myData{_OUTFILE} = ${$outfile};
+ $out_fh = $outfile;
+ }
+ else {
+ ## We have a filename, open it for writing
+ $myData{_OUTFILE} = $outfile;
+ (-d $outfile) and croak "$outfile is a directory, not POD input!\n";
+ open($out_fh, "> $outfile") or
+ croak "Can't open $outfile for writing: $!\n";
+ $close_output = 1;
+ }
+ }
+
+ ## Whew! That was a lot of work to set up reasonably/robust behavior
+ ## in the case of a non-filename for reading and writing. Now we just
+ ## have to parse the input and close the handles when we're finished.
+ $self->parse_from_filehandle(\%opts, $in_fh, $out_fh);
+
+ $close_input and
+ close($in_fh) || croak "Can't close $infile after reading: $!\n";
+ $close_output and
+ close($out_fh) || croak "Can't close $outfile after writing: $!\n";
+}
+
+#############################################################################
+
+=head1 ACCESSOR METHODS
+
+Clients of B<Pod::Parser> should use the following methods to access
+instance data fields:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<errorsub()>
+
+ $parser->errorsub("method_name");
+ $parser->errorsub(\&warn_user);
+ $parser->errorsub(sub { print STDERR, @_ });
+
+Specifies the method or subroutine to use when printing error messages
+about POD syntax. The supplied method/subroutine I<must> return TRUE upon
+successful printing of the message. If C<undef> is given, then the B<warn>
+builtin is used to issue error messages (this is the default behavior).
+
+ my $errorsub = $parser->errorsub()
+ my $errmsg = "This is an error message!\n"
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $parser->$errorsub($errmsg)
+ or warn($errmsg);
+
+Returns a method name, or else a reference to the user-supplied subroutine
+used to print error messages. Returns C<undef> if the B<warn> builtin
+is used to issue error messages (this is the default behavior).
+
+=cut
+
+sub errorsub {
+ return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<cutting()>
+
+ $boolean = $parser->cutting();
+
+Returns the current C<cutting> state: a boolean-valued scalar which
+evaluates to true if text from the input file is currently being "cut"
+(meaning it is I<not> considered part of the POD document).
+
+ $parser->cutting($boolean);
+
+Sets the current C<cutting> state to the given value and returns the
+result.
+
+=cut
+
+sub cutting {
+ return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING};
+}
+
+##---------------------------------------------------------------------------
+
+##---------------------------------------------------------------------------
+
+=head1 B<parseopts()>
+
+When invoked with no additional arguments, B<parseopts> returns a hashtable
+of all the current parsing options.
+
+ ## See if we are parsing non-POD sections as well as POD ones
+ my %opts = $parser->parseopts();
+ $opts{'-want_nonPODs}' and print "-want_nonPODs\n";
+
+When invoked using a single string, B<parseopts> treats the string as the
+name of a parse-option and returns its corresponding value if it exists
+(returns C<undef> if it doesn't).
+
+ ## Did we ask to see '=cut' paragraphs?
+ my $want_cut = $parser->parseopts('-process_cut_cmd');
+ $want_cut and print "-process_cut_cmd\n";
+
+When invoked with multiple arguments, B<parseopts> treats them as
+key/value pairs and the specified parse-option names are set to the
+given values. Any unspecified parse-options are unaffected.
+
+ ## Set them back to the default
+ $parser->parseopts(-warnings => 0);
+
+When passed a single hash-ref, B<parseopts> uses that hash to completely
+reset the existing parse-options, all previous parse-option values
+are lost.
+
+ ## Reset all options to default
+ $parser->parseopts( { } );
+
+See L<"PARSING OPTIONS"> for more information on the name and meaning of each
+parse-option currently recognized.
+
+=cut
+
+sub parseopts {
+ local *myData = shift;
+ local *myOpts = ($myData{_PARSEOPTS} ||= {});
+ return %myOpts if (@_ == 0);
+ if (@_ == 1) {
+ local $_ = shift;
+ return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_};
+ }
+ my @newOpts = (%myOpts, @_);
+ $myData{_PARSEOPTS} = { @newOpts };
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<output_file()>
+
+ $fname = $parser->output_file();
+
+Returns the name of the output file being written.
+
+=cut
+
+sub output_file {
+ return $_[0]->{_OUTFILE};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<output_handle()>
+
+ $fhandle = $parser->output_handle();
+
+Returns the output filehandle object.
+
+=cut
+
+sub output_handle {
+ return $_[0]->{_OUTPUT};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<input_file()>
+
+ $fname = $parser->input_file();
+
+Returns the name of the input file being read.
+
+=cut
+
+sub input_file {
+ return $_[0]->{_INFILE};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<input_handle()>
+
+ $fhandle = $parser->input_handle();
+
+Returns the current input filehandle object.
+
+=cut
+
+sub input_handle {
+ return $_[0]->{_INPUT};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<input_streams()>
+
+ $listref = $parser->input_streams();
+
+Returns a reference to an array which corresponds to the stack of all
+the input streams that are currently in the middle of being parsed.
+
+While parsing an input stream, it is possible to invoke
+B<parse_from_file()> or B<parse_from_filehandle()> to parse a new input
+stream and then return to parsing the previous input stream. Each input
+stream to be parsed is pushed onto the end of this input stack
+before any of its input is read. The input stream that is currently
+being parsed is always at the end (or top) of the input stack. When an
+input stream has been exhausted, it is popped off the end of the
+input stack.
+
+Each element on this input stack is a reference to C<Pod::InputSource>
+object. Please see L<Pod::InputObjects> for more details.
+
+This method might be invoked when printing diagnostic messages, for example,
+to obtain the name and line number of the all input files that are currently
+being processed.
+
+=end __PRIVATE__
+
+=cut
+
+sub input_streams {
+ return $_[0]->{_INPUT_STREAMS};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<top_stream()>
+
+ $hashref = $parser->top_stream();
+
+Returns a reference to the hash-table that represents the element
+that is currently at the top (end) of the input stream stack
+(see L<"input_streams()">). The return value will be the C<undef>
+if the input stack is empty.
+
+This method might be used when printing diagnostic messages, for example,
+to obtain the name and line number of the current input file.
+
+=end __PRIVATE__
+
+=cut
+
+sub top_stream {
+ return $_[0]->{_TOP_STREAM} || undef;
+}
+
+#############################################################################
+
+=head1 PRIVATE METHODS AND DATA
+
+B<Pod::Parser> makes use of several internal methods and data fields
+which clients should not need to see or use. For the sake of avoiding
+name collisions for client data and methods, these methods and fields
+are briefly discussed here. Determined hackers may obtain further
+information about them by reading the B<Pod::Parser> source code.
+
+Private data fields are stored in the hash-object whose reference is
+returned by the B<new()> constructor for this class. The names of all
+private methods and data-fields used by B<Pod::Parser> begin with a
+prefix of "_" and match the regular expression C</^_\w+$/>.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head1 B<_push_input_stream()>
+
+ $hashref = $parser->_push_input_stream($in_fh,$out_fh);
+
+This method will push the given input stream on the input stack and
+perform any necessary beginning-of-document or beginning-of-file
+processing. The argument C<$in_fh> is the input stream filehandle to
+push, and C<$out_fh> is the corresponding output filehandle to use (if
+it is not given or is undefined, then the current output stream is used,
+which defaults to standard output if it doesnt exist yet).
+
+The value returned will be reference to the hash-table that represents
+the new top of the input stream stack. I<Please Note> that it is
+possible for this method to use default values for the input and output
+file handles. If this happens, you will need to look at the C<INPUT>
+and C<OUTPUT> instance data members to determine their new values.
+
+=end _PRIVATE_
+
+=cut
+
+sub _push_input_stream {
+ my ($self, $in_fh, $out_fh) = @_;
+ local *myData = $self;
+
+ ## Initialize stuff for the entire document if this is *not*
+ ## an included file.
+ ##
+ ## NOTE: we need to be *very* careful when "defaulting" the output
+ ## filehandle. We only want to use a default value if this is the
+ ## beginning of the entire document (but *not* if this is an included
+ ## file).
+ unless (defined $myData{_TOP_STREAM}) {
+ $out_fh = \*STDOUT unless (defined $out_fh);
+ $myData{_CUTTING} = 1; ## current "cutting" state
+ $myData{_INPUT_STREAMS} = []; ## stack of all input streams
+ }
+
+ ## Initialize input indicators
+ $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE});
+ $myData{_OUTPUT} = $out_fh if (defined $out_fh);
+ $in_fh = \*STDIN unless (defined $in_fh);
+ $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE});
+ $myData{_INPUT} = $in_fh;
+ my $input_top = $myData{_TOP_STREAM}
+ = new Pod::InputSource(
+ -name => $myData{_INFILE},
+ -handle => $in_fh,
+ -was_cutting => $myData{_CUTTING}
+ );
+ local *input_stack = $myData{_INPUT_STREAMS};
+ push(@input_stack, $input_top);
+
+ ## Perform beginning-of-document and/or beginning-of-input processing
+ $self->begin_pod() if (@input_stack == 1);
+ $self->begin_input();
+
+ return $input_top;
+}
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head1 B<_pop_input_stream()>
+
+ $hashref = $parser->_pop_input_stream();
+
+This takes no arguments. It will perform any necessary end-of-file or
+end-of-document processing and then pop the current input stream from
+the top of the input stack.
+
+The value returned will be reference to the hash-table that represents
+the new top of the input stream stack.
+
+=end _PRIVATE_
+
+=cut
+
+sub _pop_input_stream {
+ my ($self) = @_;
+ local *myData = $self;
+ local *input_stack = $myData{_INPUT_STREAMS};
+
+ ## Perform end-of-input and/or end-of-document processing
+ $self->end_input() if (@input_stack > 0);
+ $self->end_pod() if (@input_stack == 1);
+
+ ## Restore cutting state to whatever it was before we started
+ ## parsing this file.
+ my $old_top = pop(@input_stack);
+ $myData{_CUTTING} = $old_top->was_cutting();
+
+ ## Dont forget to reset the input indicators
+ my $input_top = undef;
+ if (@input_stack > 0) {
+ $input_top = $myData{_TOP_STREAM} = $input_stack[-1];
+ $myData{_INFILE} = $input_top->name();
+ $myData{_INPUT} = $input_top->handle();
+ } else {
+ delete $myData{_TOP_STREAM};
+ delete $myData{_INPUT_STREAMS};
+ }
+
+ return $input_top;
+}
+
+#############################################################################
+
+=head1 TREE-BASED PARSING
+
+If straightforward stream-based parsing wont meet your needs (as is
+likely the case for tasks such as translating PODs into structured
+markup languages like HTML and XML) then you may need to take the
+tree-based approach. Rather than doing everything in one pass and
+calling the B<interpolate()> method to expand sequences into text, it
+may be desirable to instead create a parse-tree using the B<parse_text()>
+method to return a tree-like structure which may contain an ordered list
+list of children (each of which may be a text-string, or a similar
+tree-like structure).
+
+Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and
+to the objects described in L<Pod::InputObjects>. The former describes
+the gory details and parameters for how to customize and extend the
+parsing behavior of B<Pod::Parser>. B<Pod::InputObjects> provides
+several objects that may all be used interchangeably as parse-trees. The
+most obvious one is the B<Pod::ParseTree> object. It defines the basic
+interface and functionality that all things trying to be a POD parse-tree
+should do. A B<Pod::ParseTree> is defined such that each "node" may be a
+text-string, or a reference to another parse-tree. Each B<Pod::Paragraph>
+object and each B<Pod::InteriorSequence> object also supports the basic
+parse-tree interface.
+
+The B<parse_text()> method takes a given paragraph of text, and
+returns a parse-tree that contains one or more children, each of which
+may be a text-string, or an InteriorSequence object. There are also
+callback-options that may be passed to B<parse_text()> to customize
+the way it expands or transforms interior-sequences, as well as the
+returned result. These callbacks can be used to create a parse-tree
+with custom-made objects (which may or may not support the parse-tree
+interface, depending on how you choose to do it).
+
+If you wish to turn an entire POD document into a parse-tree, that process
+is fairly straightforward. The B<parse_text()> method is the key to doing
+this successfully. Every paragraph-callback (i.e. the polymorphic methods
+for B<command()>, B<verbatim()>, and B<textblock()> paragraphs) takes
+a B<Pod::Paragraph> object as an argument. Each paragraph object has a
+B<parse_tree()> method that can be used to get or set a corresponding
+parse-tree. So for each of those paragraph-callback methods, simply call
+B<parse_text()> with the options you desire, and then use the returned
+parse-tree to assign to the given paragraph object.
+
+That gives you a parse-tree for each paragraph - so now all you need is
+an ordered list of paragraphs. You can maintain that yourself as a data
+element in the object/hash. The most straightforward way would be simply
+to use an array-ref, with the desired set of custom "options" for each
+invocation of B<parse_text>. Let's assume the desired option-set is
+given by the hash C<%options>. Then we might do something like the
+following:
+
+ package MyPodParserTree;
+
+ @ISA = qw( Pod::Parser );
+
+ ...
+
+ sub begin_pod {
+ my $self = shift;
+ $self->{'-paragraphs'} = []; ## initialize paragraph list
+ }
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({%options}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({%options}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ ...
+
+ package main;
+ ...
+ my $parser = new MyPodParserTree(...);
+ $parser->parse_from_file(...);
+ my $paragraphs_ref = $parser->{'-paragraphs'};
+
+Of course, in this module-author's humble opinion, I'd be more inclined to
+use the existing B<Pod::ParseTree> object than a simple array. That way
+everything in it, paragraphs and sequences, all respond to the same core
+interface for all parse-tree nodes. The result would look something like:
+
+ package MyPodParserTree2;
+
+ ...
+
+ sub begin_pod {
+ my $self = shift;
+ $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree
+ }
+
+ sub parse_tree {
+ ## convenience method to get/set the parse-tree for the entire POD
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+ }
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ ...
+
+ package main;
+ ...
+ my $parser = new MyPodParserTree2(...);
+ $parser->parse_from_file(...);
+ my $ptree = $parser->parse_tree;
+ ...
+
+Now you have the entire POD document as one great big parse-tree. You
+can even use the B<-expand_seq> option to B<parse_text> to insert
+whole different kinds of objects. Just don't expect B<Pod::Parser>
+to know what to do with them after that. That will need to be in your
+code. Or, alternatively, you can insert any object you like so long as
+it conforms to the B<Pod::ParseTree> interface.
+
+One could use this to create subclasses of B<Pod::Paragraphs> and
+B<Pod::InteriorSequences> for specific commands (or to create your own
+custom node-types in the parse-tree) and add some kind of B<emit()>
+method to each custom node/subclass object in the tree. Then all you'd
+need to do is recursively walk the tree in the desired order, processing
+the children (most likely from left to right) by formatting them if
+they are text-strings, or by calling their B<emit()> method if they
+are objects/references.
+
+=head1 SEE ALSO
+
+L<Pod::InputObjects>, L<Pod::Select>
+
+B<Pod::InputObjects> defines POD input objects corresponding to
+command paragraphs, parse-trees, and interior-sequences.
+
+B<Pod::Select> is a subclass of B<Pod::Parser> which provides the ability
+to selectively include and/or exclude sections of a POD document from being
+translated based upon the current heading, subheading, subsubheading, etc.
+
+=for __PRIVATE__
+B<Pod::Callbacks> is a subclass of B<Pod::Parser> which gives its users
+the ability the employ I<callback functions> instead of, or in addition
+to, overriding methods of the base class.
+
+=for __PRIVATE__
+B<Pod::Select> and B<Pod::Callbacks> do not override any
+methods nor do they define any new methods with the same name. Because
+of this, they may I<both> be used (in combination) as a base class of
+the same subclass in order to combine their functionality without
+causing any namespace clashes due to multiple inheritance.
+
+=head1 AUTHOR
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<Pod::Text> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
+1;
diff --git a/contrib/perl5/lib/Pod/Plainer.pm b/contrib/perl5/lib/Pod/Plainer.pm
new file mode 100644
index 0000000..373e8d0
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Plainer.pm
@@ -0,0 +1,69 @@
+package Pod::Plainer;
+use strict;
+use Pod::Parser;
+our @ISA = qw(Pod::Parser);
+our $VERSION = '0.01';
+
+our %E = qw( < lt > gt );
+
+sub escape_ltgt {
+ (undef, my $text) = @_;
+ $text =~ s/([<>])/E<$E{$1}>/g;
+ $text
+}
+
+sub simple_delimiters {
+ (undef, my $seq) = @_;
+ $seq -> left_delimiter( '<' );
+ $seq -> right_delimiter( '>' );
+ $seq;
+}
+
+sub textblock {
+ my($parser,$text,$line) = @_;
+ print {$parser->output_handle()}
+ $parser->parse_text(
+ { -expand_text => q(escape_ltgt),
+ -expand_seq => q(simple_delimiters) },
+ $text, $line ) -> raw_text();
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Plainer - Perl extension for converting Pod to old style Pod.
+
+=head1 SYNOPSIS
+
+ use Pod::Plainer;
+
+ my $parser = Pod::Plainer -> new ();
+ $parser -> parse_from_filehandle(\*STDIN);
+
+=head1 DESCRIPTION
+
+Pod::Plainer uses Pod::Parser which takes Pod with the (new)
+'CE<lt>E<lt> .. E<gt>E<gt>' constructs
+and returns the old(er) style with just 'CE<lt>E<gt>';
+'<' and '>' are replaced by 'EE<lt>ltE<gt>' and 'EE<lt>gtE<gt>'.
+
+This can be used to pre-process Pod before using tools which do not
+recognise the new style Pods.
+
+=head2 EXPORT
+
+None by default.
+
+=head1 AUTHOR
+
+Robin Barker, rmb1@cise.npl.co.uk
+
+=head1 SEE ALSO
+
+See L<Pod::Parser>.
+
+=cut
+
diff --git a/contrib/perl5/lib/Pod/Select.pm b/contrib/perl5/lib/Pod/Select.pm
new file mode 100644
index 0000000..5dd1595
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Select.pm
@@ -0,0 +1,745 @@
+#############################################################################
+# Pod/Select.pm -- function to select portions of POD docs
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Select;
+
+use vars qw($VERSION);
+$VERSION = 1.12; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::Select, podselect() - extract selected sections of POD from input
+
+=head1 SYNOPSIS
+
+ use Pod::Select;
+
+ ## Select all the POD sections for each file in @filelist
+ ## and print the result on standard output.
+ podselect(@filelist);
+
+ ## Same as above, but write to tmp.out
+ podselect({-output => "tmp.out"}, @filelist):
+
+ ## Select from the given filelist, only those POD sections that are
+ ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS.
+ podselect({-sections => ["NAME|SYNOPSIS", "OPTIONS"]}, @filelist):
+
+ ## Select the "DESCRIPTION" section of the PODs from STDIN and write
+ ## the result to STDERR.
+ podselect({-output => ">&STDERR", -sections => ["DESCRIPTION"]}, \*STDIN);
+
+or
+
+ use Pod::Select;
+
+ ## Create a parser object for selecting POD sections from the input
+ $parser = new Pod::Select();
+
+ ## Select all the POD sections for each file in @filelist
+ ## and print the result to tmp.out.
+ $parser->parse_from_file("<&STDIN", "tmp.out");
+
+ ## Select from the given filelist, only those POD sections that are
+ ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS.
+ $parser->select("NAME|SYNOPSIS", "OPTIONS");
+ for (@filelist) { $parser->parse_from_file($_); }
+
+ ## Select the "DESCRIPTION" and "SEE ALSO" sections of the PODs from
+ ## STDIN and write the result to STDERR.
+ $parser->select("DESCRIPTION");
+ $parser->add_selection("SEE ALSO");
+ $parser->parse_from_filehandle(\*STDIN, \*STDERR);
+
+=head1 REQUIRES
+
+perl5.005, Pod::Parser, Exporter, Carp
+
+=head1 EXPORTS
+
+podselect()
+
+=head1 DESCRIPTION
+
+B<podselect()> is a function which will extract specified sections of
+pod documentation from an input stream. This ability is provided by the
+B<Pod::Select> module which is a subclass of B<Pod::Parser>.
+B<Pod::Select> provides a method named B<select()> to specify the set of
+POD sections to select for processing/printing. B<podselect()> merely
+creates a B<Pod::Select> object and then invokes the B<podselect()>
+followed by B<parse_from_file()>.
+
+=head1 SECTION SPECIFICATIONS
+
+B<podselect()> and B<Pod::Select::select()> may be given one or more
+"section specifications" to restrict the text processed to only the
+desired set of sections and their corresponding subsections. A section
+specification is a string containing one or more Perl-style regular
+expressions separated by forward slashes ("/"). If you need to use a
+forward slash literally within a section title you can escape it with a
+backslash ("\/").
+
+The formal syntax of a section specification is:
+
+=over 4
+
+=item
+
+I<head1-title-regex>/I<head2-title-regex>/...
+
+=back
+
+Any omitted or empty regular expressions will default to ".*".
+Please note that each regular expression given is implicitly
+anchored by adding "^" and "$" to the beginning and end. Also, if a
+given regular expression starts with a "!" character, then the
+expression is I<negated> (so C<!foo> would match anything I<except>
+C<foo>).
+
+Some example section specifications follow.
+
+=over 4
+
+=item
+Match the C<NAME> and C<SYNOPSIS> sections and all of their subsections:
+
+C<NAME|SYNOPSIS>
+
+=item
+Match only the C<Question> and C<Answer> subsections of the C<DESCRIPTION>
+section:
+
+C<DESCRIPTION/Question|Answer>
+
+=item
+Match the C<Comments> subsection of I<all> sections:
+
+C</Comments>
+
+=item
+Match all subsections of C<DESCRIPTION> I<except> for C<Comments>:
+
+C<DESCRIPTION/!Comments>
+
+=item
+Match the C<DESCRIPTION> section but do I<not> match any of its subsections:
+
+C<DESCRIPTION/!.+>
+
+=item
+Match all top level sections but none of their subsections:
+
+C</!.+>
+
+=back
+
+=begin _NOT_IMPLEMENTED_
+
+=head1 RANGE SPECIFICATIONS
+
+B<podselect()> and B<Pod::Select::select()> may be given one or more
+"range specifications" to restrict the text processed to only the
+desired ranges of paragraphs in the desired set of sections. A range
+specification is a string containing a single Perl-style regular
+expression (a regex), or else two Perl-style regular expressions
+(regexs) separated by a ".." (Perl's "range" operator is "..").
+The regexs in a range specification are delimited by forward slashes
+("/"). If you need to use a forward slash literally within a regex you
+can escape it with a backslash ("\/").
+
+The formal syntax of a range specification is:
+
+=over 4
+
+=item
+
+/I<start-range-regex>/[../I<end-range-regex>/]
+
+=back
+
+Where each the item inside square brackets (the ".." followed by the
+end-range-regex) is optional. Each "range-regex" is of the form:
+
+ =cmd-expr text-expr
+
+Where I<cmd-expr> is intended to match the name of one or more POD
+commands, and I<text-expr> is intended to match the paragraph text for
+the command. If a range-regex is supposed to match a POD command, then
+the first character of the regex (the one after the initial '/')
+absolutely I<must> be an single '=' character; it may not be anything
+else (not even a regex meta-character) if it is supposed to match
+against the name of a POD command.
+
+If no I<=cmd-expr> is given then the text-expr will be matched against
+plain textblocks unless it is preceded by a space, in which case it is
+matched against verbatim text-blocks. If no I<text-expr> is given then
+only the command-portion of the paragraph is matched against.
+
+Note that these two expressions are each implicitly anchored. This
+means that when matching against the command-name, there will be an
+implicit '^' and '$' around the given I<=cmd-expr>; and when matching
+against the paragraph text there will be an implicit '\A' and '\Z'
+around the given I<text-expr>.
+
+Unlike with section-specs, the '!' character does I<not> have any special
+meaning (negation or otherwise) at the beginning of a range-spec!
+
+Some example range specifications follow.
+
+=over 4
+
+=item
+Match all C<=for html> paragraphs:
+
+C</=for html/>
+
+=item
+Match all paragraphs between C<=begin html> and C<=end html>
+(note that this will I<not> work correctly if such sections
+are nested):
+
+C</=begin html/../=end html/>
+
+=item
+Match all paragraphs between the given C<=item> name until the end of the
+current section:
+
+C</=item mine/../=head\d/>
+
+=item
+Match all paragraphs between the given C<=item> until the next item, or
+until the end of the itemized list (note that this will I<not> work as
+desired if the item contains an itemized list nested within it):
+
+C</=item mine/../=(item|back)/>
+
+=back
+
+=end _NOT_IMPLEMENTED_
+
+=cut
+
+#############################################################################
+
+use strict;
+#use diagnostics;
+use Carp;
+use Pod::Parser 1.04;
+use vars qw(@ISA @EXPORT $MAX_HEADING_LEVEL);
+
+@ISA = qw(Pod::Parser);
+@EXPORT = qw(&podselect);
+
+## Maximum number of heading levels supported for '=headN' directives
+*MAX_HEADING_LEVEL = \3;
+
+#############################################################################
+
+=head1 OBJECT METHODS
+
+The following methods are provided in this module. Each one takes a
+reference to the object itself as an implicit first parameter.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+## =begin _PRIVATE_
+##
+## =head1 B<_init_headings()>
+##
+## Initialize the current set of active section headings.
+##
+## =cut
+##
+## =end _PRIVATE_
+
+use vars qw(%myData @section_headings);
+
+sub _init_headings {
+ my $self = shift;
+ local *myData = $self;
+
+ ## Initialize current section heading titles if necessary
+ unless (defined $myData{_SECTION_HEADINGS}) {
+ local *section_headings = $myData{_SECTION_HEADINGS} = [];
+ for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
+ $section_headings[$i] = '';
+ }
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<curr_headings()>
+
+ ($head1, $head2, $head3, ...) = $parser->curr_headings();
+ $head1 = $parser->curr_headings(1);
+
+This method returns a list of the currently active section headings and
+subheadings in the document being parsed. The list of headings returned
+corresponds to the most recently parsed paragraph of the input.
+
+If an argument is given, it must correspond to the desired section
+heading number, in which case only the specified section heading is
+returned. If there is no current section heading at the specified
+level, then C<undef> is returned.
+
+=cut
+
+sub curr_headings {
+ my $self = shift;
+ $self->_init_headings() unless (defined $self->{_SECTION_HEADINGS});
+ my @headings = @{ $self->{_SECTION_HEADINGS} };
+ return (@_ > 0 and $_[0] =~ /^\d+$/) ? $headings[$_[0] - 1] : @headings;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<select()>
+
+ $parser->select($section_spec1,$section_spec2,...);
+
+This method is used to select the particular sections and subsections of
+POD documentation that are to be printed and/or processed. The existing
+set of selected sections is I<replaced> with the given set of sections.
+See B<add_selection()> for adding to the current set of selected
+sections.
+
+Each of the C<$section_spec> arguments should be a section specification
+as described in L<"SECTION SPECIFICATIONS">. The section specifications
+are parsed by this method and the resulting regular expressions are
+stored in the invoking object.
+
+If no C<$section_spec> arguments are given, then the existing set of
+selected sections is cleared out (which means C<all> sections will be
+processed).
+
+This method should I<not> normally be overridden by subclasses.
+
+=cut
+
+use vars qw(@selected_sections);
+
+sub select {
+ my $self = shift;
+ my @sections = @_;
+ local *myData = $self;
+ local $_;
+
+### NEED TO DISCERN A SECTION-SPEC FROM A RANGE-SPEC (look for m{^/.+/$}?)
+
+ ##---------------------------------------------------------------------
+ ## The following is a blatant hack for backward compatibility, and for
+ ## implementing add_selection(). If the *first* *argument* is the
+ ## string "+", then the remaining section specifications are *added*
+ ## to the current set of selections; otherwise the given section
+ ## specifications will *replace* the current set of selections.
+ ##
+ ## This should probably be fixed someday, but for the present time,
+ ## it seems incredibly unlikely that "+" would ever correspond to
+ ## a legitimate section heading
+ ##---------------------------------------------------------------------
+ my $add = ($sections[0] eq "+") ? shift(@sections) : "";
+
+ ## Reset the set of sections to use
+ unless (@sections > 0) {
+ delete $myData{_SELECTED_SECTIONS} unless ($add);
+ return;
+ }
+ $myData{_SELECTED_SECTIONS} = []
+ unless ($add && exists $myData{_SELECTED_SECTIONS});
+ local *selected_sections = $myData{_SELECTED_SECTIONS};
+
+ ## Compile each spec
+ my $spec;
+ for $spec (@sections) {
+ if ( defined($_ = &_compile_section_spec($spec)) ) {
+ ## Store them in our sections array
+ push(@selected_sections, $_);
+ }
+ else {
+ carp "Ignoring section spec \"$spec\"!\n";
+ }
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<add_selection()>
+
+ $parser->add_selection($section_spec1,$section_spec2,...);
+
+This method is used to add to the currently selected sections and
+subsections of POD documentation that are to be printed and/or
+processed. See <select()> for replacing the currently selected sections.
+
+Each of the C<$section_spec> arguments should be a section specification
+as described in L<"SECTION SPECIFICATIONS">. The section specifications
+are parsed by this method and the resulting regular expressions are
+stored in the invoking object.
+
+This method should I<not> normally be overridden by subclasses.
+
+=cut
+
+sub add_selection {
+ my $self = shift;
+ $self->select("+", @_);
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<clear_selections()>
+
+ $parser->clear_selections();
+
+This method takes no arguments, it has the exact same effect as invoking
+<select()> with no arguments.
+
+=cut
+
+sub clear_selections {
+ my $self = shift;
+ $self->select();
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<match_section()>
+
+ $boolean = $parser->match_section($heading1,$heading2,...);
+
+Returns a value of true if the given section and subsection heading
+titles match any of the currently selected section specifications in
+effect from prior calls to B<select()> and B<add_selection()> (or if
+there are no explictly selected/deselected sections).
+
+The arguments C<$heading1>, C<$heading2>, etc. are the heading titles of
+the corresponding sections, subsections, etc. to try and match. If
+C<$headingN> is omitted then it defaults to the current corresponding
+section heading title in the input.
+
+This method should I<not> normally be overridden by subclasses.
+
+=cut
+
+sub match_section {
+ my $self = shift;
+ my (@headings) = @_;
+ local *myData = $self;
+
+ ## Return true if no restrictions were explicitly specified
+ my $selections = (exists $myData{_SELECTED_SECTIONS})
+ ? $myData{_SELECTED_SECTIONS} : undef;
+ return 1 unless ((defined $selections) && (@{$selections} > 0));
+
+ ## Default any unspecified sections to the current one
+ my @current_headings = $self->curr_headings();
+ for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
+ (defined $headings[$i]) or $headings[$i] = $current_headings[$i];
+ }
+
+ ## Look for a match against the specified section expressions
+ my ($section_spec, $regex, $negated, $match);
+ for $section_spec ( @{$selections} ) {
+ ##------------------------------------------------------
+ ## Each portion of this spec must match in order for
+ ## the spec to be matched. So we will start with a
+ ## match-value of 'true' and logically 'and' it with
+ ## the results of matching a given element of the spec.
+ ##------------------------------------------------------
+ $match = 1;
+ for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
+ $regex = $section_spec->[$i];
+ $negated = ($regex =~ s/^\!//);
+ $match &= ($negated ? ($headings[$i] !~ /${regex}/)
+ : ($headings[$i] =~ /${regex}/));
+ last unless ($match);
+ }
+ return 1 if ($match);
+ }
+ return 0; ## no match
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<is_selected()>
+
+ $boolean = $parser->is_selected($paragraph);
+
+This method is used to determine if the block of text given in
+C<$paragraph> falls within the currently selected set of POD sections
+and subsections to be printed or processed. This method is also
+responsible for keeping track of the current input section and
+subsections. It is assumed that C<$paragraph> is the most recently read
+(but not yet processed) input paragraph.
+
+The value returned will be true if the C<$paragraph> and the rest of the
+text in the same section as C<$paragraph> should be selected (included)
+for processing; otherwise a false value is returned.
+
+=cut
+
+sub is_selected {
+ my ($self, $paragraph) = @_;
+ local $_;
+ local *myData = $self;
+
+ $self->_init_headings() unless (defined $myData{_SECTION_HEADINGS});
+
+ ## Keep track of current sections levels and headings
+ $_ = $paragraph;
+ if (/^=((?:sub)*)(?:head(?:ing)?|sec(?:tion)?)(\d*)\s+(.*)\s*$/) {
+ ## This is a section heading command
+ my ($level, $heading) = ($2, $3);
+ $level = 1 + (length($1) / 3) if ((! length $level) || (length $1));
+ ## Reset the current section heading at this level
+ $myData{_SECTION_HEADINGS}->[$level - 1] = $heading;
+ ## Reset subsection headings of this one to empty
+ for (my $i = $level; $i < $MAX_HEADING_LEVEL; ++$i) {
+ $myData{_SECTION_HEADINGS}->[$i] = '';
+ }
+ }
+
+ return $self->match_section();
+}
+
+#############################################################################
+
+=head1 EXPORTED FUNCTIONS
+
+The following functions are exported by this module. Please note that
+these are functions (not methods) and therefore C<do not> take an
+implicit first argument.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<podselect()>
+
+ podselect(\%options,@filelist);
+
+B<podselect> will print the raw (untranslated) POD paragraphs of all
+POD sections in the given input files specified by C<@filelist>
+according to the given options.
+
+If any argument to B<podselect> is a reference to a hash
+(associative array) then the values with the following keys are
+processed as follows:
+
+=over 4
+
+=item B<-output>
+
+A string corresponding to the desired output file (or ">&STDOUT"
+or ">&STDERR"). The default is to use standard output.
+
+=item B<-sections>
+
+A reference to an array of sections specifications (as described in
+L<"SECTION SPECIFICATIONS">) which indicate the desired set of POD
+sections and subsections to be selected from input. If no section
+specifications are given, then all sections of the PODs are used.
+
+=begin _NOT_IMPLEMENTED_
+
+=item B<-ranges>
+
+A reference to an array of range specifications (as described in
+L<"RANGE SPECIFICATIONS">) which indicate the desired range of POD
+paragraphs to be selected from the desired input sections. If no range
+specifications are given, then all paragraphs of the desired sections
+are used.
+
+=end _NOT_IMPLEMENTED_
+
+=back
+
+All other arguments should correspond to the names of input files
+containing POD sections. A file name of "-" or "<&STDIN" will
+be interpeted to mean standard input (which is the default if no
+filenames are given).
+
+=cut
+
+sub podselect {
+ my(@argv) = @_;
+ my %defaults = ();
+ my $pod_parser = new Pod::Select(%defaults);
+ my $num_inputs = 0;
+ my $output = ">&STDOUT";
+ my %opts = ();
+ local $_;
+ for (@argv) {
+ if (ref($_)) {
+ next unless (ref($_) eq 'HASH');
+ %opts = (%defaults, %{$_});
+
+ ##-------------------------------------------------------------
+ ## Need this for backward compatibility since we formerly used
+ ## options that were all uppercase words rather than ones that
+ ## looked like Unix command-line options.
+ ## to be uppercase keywords)
+ ##-------------------------------------------------------------
+ %opts = map {
+ my ($key, $val) = (lc $_, $opts{$_});
+ $key =~ s/^(?=\w)/-/;
+ $key =~ /^-se[cl]/ and $key = '-sections';
+ #! $key eq '-range' and $key .= 's';
+ ($key => $val);
+ } (keys %opts);
+
+ ## Process the options
+ (exists $opts{'-output'}) and $output = $opts{'-output'};
+
+ ## Select the desired sections
+ $pod_parser->select(@{ $opts{'-sections'} })
+ if ( (defined $opts{'-sections'})
+ && ((ref $opts{'-sections'}) eq 'ARRAY') );
+
+ #! ## Select the desired paragraph ranges
+ #! $pod_parser->select(@{ $opts{'-ranges'} })
+ #! if ( (defined $opts{'-ranges'})
+ #! && ((ref $opts{'-ranges'}) eq 'ARRAY') );
+ }
+ else {
+ $pod_parser->parse_from_file($_, $output);
+ ++$num_inputs;
+ }
+ }
+ $pod_parser->parse_from_file("-") unless ($num_inputs > 0);
+}
+
+#############################################################################
+
+=head1 PRIVATE METHODS AND DATA
+
+B<Pod::Select> makes uses a number of internal methods and data fields
+which clients should not need to see or use. For the sake of avoiding
+name collisions with client data and methods, these methods and fields
+are briefly discussed here. Determined hackers may obtain further
+information about them by reading the B<Pod::Select> source code.
+
+Private data fields are stored in the hash-object whose reference is
+returned by the B<new()> constructor for this class. The names of all
+private methods and data-fields used by B<Pod::Select> begin with a
+prefix of "_" and match the regular expression C</^_\w+$/>.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head1 B<_compile_section_spec()>
+
+ $listref = $parser->_compile_section_spec($section_spec);
+
+This function (note it is a function and I<not> a method) takes a
+section specification (as described in L<"SECTION SPECIFICATIONS">)
+given in C<$section_sepc>, and compiles it into a list of regular
+expressions. If C<$section_spec> has no syntax errors, then a reference
+to the list (array) of corresponding regular expressions is returned;
+otherwise C<undef> is returned and an error message is printed (using
+B<carp>) for each invalid regex.
+
+=end _PRIVATE_
+
+=cut
+
+sub _compile_section_spec {
+ my ($section_spec) = @_;
+ my (@regexs, $negated);
+
+ ## Compile the spec into a list of regexs
+ local $_ = $section_spec;
+ s|\\\\|\001|g; ## handle escaped backward slashes
+ s|\\/|\002|g; ## handle escaped forward slashes
+
+ ## Parse the regexs for the heading titles
+ @regexs = split('/', $_, $MAX_HEADING_LEVEL);
+
+ ## Set default regex for ommitted levels
+ for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
+ $regexs[$i] = '.*' unless ((defined $regexs[$i])
+ && (length $regexs[$i]));
+ }
+ ## Modify the regexs as needed and validate their syntax
+ my $bad_regexs = 0;
+ for (@regexs) {
+ $_ .= '.+' if ($_ eq '!');
+ s|\001|\\\\|g; ## restore escaped backward slashes
+ s|\002|\\/|g; ## restore escaped forward slashes
+ $negated = s/^\!//; ## check for negation
+ eval "/$_/"; ## check regex syntax
+ if ($@) {
+ ++$bad_regexs;
+ carp "Bad regular expression /$_/ in \"$section_spec\": $@\n";
+ }
+ else {
+ ## Add the forward and rear anchors (and put the negator back)
+ $_ = '^' . $_ unless (/^\^/);
+ $_ = $_ . '$' unless (/\$$/);
+ $_ = '!' . $_ if ($negated);
+ }
+ }
+ return (! $bad_regexs) ? [ @regexs ] : undef;
+}
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head2 $self->{_SECTION_HEADINGS}
+
+A reference to an array of the current section heading titles for each
+heading level (note that the first heading level title is at index 0).
+
+=end _PRIVATE_
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head2 $self->{_SELECTED_SECTIONS}
+
+A reference to an array of references to arrays. Each subarray is a list
+of anchored regular expressions (preceded by a "!" if the expression is to
+be negated). The index of the expression in the subarray should correspond
+to the index of the heading title in C<$self-E<gt>{_SECTION_HEADINGS}>
+that it is to be matched against.
+
+=end _PRIVATE_
+
+=cut
+
+#############################################################################
+
+=head1 SEE ALSO
+
+L<Pod::Parser>
+
+=head1 AUTHOR
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<pod2text> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
+1;
+
diff --git a/contrib/perl5/lib/Pod/Text.pm b/contrib/perl5/lib/Pod/Text.pm
index 549bab5..d93e5a4 100644
--- a/contrib/perl5/lib/Pod/Text.pm
+++ b/contrib/perl5/lib/Pod/Text.pm
@@ -1,551 +1,743 @@
-package Pod::Text;
-
-=head1 NAME
+# Pod::Text -- Convert POD data to formatted ASCII text.
+# $Id: Text.pm,v 2.3 1999/10/07 09:41:57 eagle Exp $
+#
+# Copyright 1999 by Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+#
+# This module is intended to be a replacement for Pod::Text, and attempts to
+# match its output except for some specific circumstances where other
+# decisions seemed to produce better output. It uses Pod::Parser and is
+# designed to be very easy to subclass.
+
+############################################################################
+# Modules and declarations
+############################################################################
-Pod::Text - convert POD data to formatted ASCII text
-
-=head1 SYNOPSIS
+package Pod::Text;
- use Pod::Text;
+require 5.004;
- pod2text("perlfunc.pod");
+use Carp qw(carp croak);
+use Exporter ();
+use Pod::Select ();
-Also:
+use strict;
+use vars qw(@ISA @EXPORT %ESCAPES $VERSION);
- pod2text [B<-a>] [B<->I<width>] < input.pod
+# We inherit from Pod::Select instead of Pod::Parser so that we can be used
+# by Pod::Usage.
+@ISA = qw(Pod::Select Exporter);
-=head1 DESCRIPTION
+# We have to export pod2text for backward compatibility.
+@EXPORT = qw(pod2text);
-Pod::Text is a module that can convert documentation in the POD format (such
-as can be found throughout the Perl distribution) into formatted ASCII.
-Termcap is optionally supported for boldface/underline, and can enabled via
-C<$Pod::Text::termcap=1>. If termcap has not been enabled, then backspaces
-will be used to simulate bold and underlined text.
+($VERSION = (split (' ', q$Revision: 2.3 $ ))[1]) =~ s/\.(\d)$/.0$1/;
+
+
+############################################################################
+# Table of supported E<> escapes
+############################################################################
+
+# This table is taken near verbatim from Pod::PlainText in Pod::Parser,
+# which got it near verbatim from the original Pod::Text. It is therefore
+# credited to Tom Christiansen, and I'm glad I didn't have to write it. :)
+# "iexcl" to "divide" added by Tim Jenness
+%ESCAPES = (
+ 'amp' => '&', # ampersand
+ 'lt' => '<', # left chevron, less-than
+ 'gt' => '>', # right chevron, greater-than
+ 'quot' => '"', # double quote
+
+ "Aacute" => "\xC1", # capital A, acute accent
+ "aacute" => "\xE1", # small a, acute accent
+ "Acirc" => "\xC2", # capital A, circumflex accent
+ "acirc" => "\xE2", # small a, circumflex accent
+ "AElig" => "\xC6", # capital AE diphthong (ligature)
+ "aelig" => "\xE6", # small ae diphthong (ligature)
+ "Agrave" => "\xC0", # capital A, grave accent
+ "agrave" => "\xE0", # small a, grave accent
+ "Aring" => "\xC5", # capital A, ring
+ "aring" => "\xE5", # small a, ring
+ "Atilde" => "\xC3", # capital A, tilde
+ "atilde" => "\xE3", # small a, tilde
+ "Auml" => "\xC4", # capital A, dieresis or umlaut mark
+ "auml" => "\xE4", # small a, dieresis or umlaut mark
+ "Ccedil" => "\xC7", # capital C, cedilla
+ "ccedil" => "\xE7", # small c, cedilla
+ "Eacute" => "\xC9", # capital E, acute accent
+ "eacute" => "\xE9", # small e, acute accent
+ "Ecirc" => "\xCA", # capital E, circumflex accent
+ "ecirc" => "\xEA", # small e, circumflex accent
+ "Egrave" => "\xC8", # capital E, grave accent
+ "egrave" => "\xE8", # small e, grave accent
+ "ETH" => "\xD0", # capital Eth, Icelandic
+ "eth" => "\xF0", # small eth, Icelandic
+ "Euml" => "\xCB", # capital E, dieresis or umlaut mark
+ "euml" => "\xEB", # small e, dieresis or umlaut mark
+ "Iacute" => "\xCD", # capital I, acute accent
+ "iacute" => "\xED", # small i, acute accent
+ "Icirc" => "\xCE", # capital I, circumflex accent
+ "icirc" => "\xEE", # small i, circumflex accent
+ "Igrave" => "\xCD", # capital I, grave accent
+ "igrave" => "\xED", # small i, grave accent
+ "Iuml" => "\xCF", # capital I, dieresis or umlaut mark
+ "iuml" => "\xEF", # small i, dieresis or umlaut mark
+ "Ntilde" => "\xD1", # capital N, tilde
+ "ntilde" => "\xF1", # small n, tilde
+ "Oacute" => "\xD3", # capital O, acute accent
+ "oacute" => "\xF3", # small o, acute accent
+ "Ocirc" => "\xD4", # capital O, circumflex accent
+ "ocirc" => "\xF4", # small o, circumflex accent
+ "Ograve" => "\xD2", # capital O, grave accent
+ "ograve" => "\xF2", # small o, grave accent
+ "Oslash" => "\xD8", # capital O, slash
+ "oslash" => "\xF8", # small o, slash
+ "Otilde" => "\xD5", # capital O, tilde
+ "otilde" => "\xF5", # small o, tilde
+ "Ouml" => "\xD6", # capital O, dieresis or umlaut mark
+ "ouml" => "\xF6", # small o, dieresis or umlaut mark
+ "szlig" => "\xDF", # small sharp s, German (sz ligature)
+ "THORN" => "\xDE", # capital THORN, Icelandic
+ "thorn" => "\xFE", # small thorn, Icelandic
+ "Uacute" => "\xDA", # capital U, acute accent
+ "uacute" => "\xFA", # small u, acute accent
+ "Ucirc" => "\xDB", # capital U, circumflex accent
+ "ucirc" => "\xFB", # small u, circumflex accent
+ "Ugrave" => "\xD9", # capital U, grave accent
+ "ugrave" => "\xF9", # small u, grave accent
+ "Uuml" => "\xDC", # capital U, dieresis or umlaut mark
+ "uuml" => "\xFC", # small u, dieresis or umlaut mark
+ "Yacute" => "\xDD", # capital Y, acute accent
+ "yacute" => "\xFD", # small y, acute accent
+ "yuml" => "\xFF", # small y, dieresis or umlaut mark
+
+ "lchevron" => "\xAB", # left chevron (double less than) laquo
+ "rchevron" => "\xBB", # right chevron (double greater than) raquo
+
+ "iexcl" => "\xA1", # inverted exclamation mark
+ "cent" => "\xA2", # cent sign
+ "pound" => "\xA3", # (UK) pound sign
+ "curren" => "\xA4", # currency sign
+ "yen" => "\xA5", # yen sign
+ "brvbar" => "\xA6", # broken vertical bar
+ "sect" => "\xA7", # section sign
+ "uml" => "\xA8", # diaresis
+ "copy" => "\xA9", # Copyright symbol
+ "ordf" => "\xAA", # feminine ordinal indicator
+ "laquo" => "\xAB", # left pointing double angle quotation mark
+ "not" => "\xAC", # not sign
+ "shy" => "\xAD", # soft hyphen
+ "reg" => "\xAE", # registered trademark
+ "macr" => "\xAF", # macron, overline
+ "deg" => "\xB0", # degree sign
+ "plusmn" => "\xB1", # plus-minus sign
+ "sup2" => "\xB2", # superscript 2
+ "sup3" => "\xB3", # superscript 3
+ "acute" => "\xB4", # acute accent
+ "micro" => "\xB5", # micro sign
+ "para" => "\xB6", # pilcrow sign = paragraph sign
+ "middot" => "\xB7", # middle dot = Georgian comma
+ "cedil" => "\xB8", # cedilla
+ "sup1" => "\xB9", # superscript 1
+ "ordm" => "\xBA", # masculine ordinal indicator
+ "raquo" => "\xBB", # right pointing double angle quotation mark
+ "frac14" => "\xBC", # vulgar fraction one quarter
+ "frac12" => "\xBD", # vulgar fraction one half
+ "frac34" => "\xBE", # vulgar fraction three quarters
+ "iquest" => "\xBF", # inverted question mark
+ "times" => "\xD7", # multiplication sign
+ "divide" => "\xF7", # division sign
+);
-A separate F<pod2text> program is included that is primarily a wrapper for
-Pod::Text.
-The single function C<pod2text()> can take the optional options B<-a>
-for an alternative output format, then a B<->I<width> option with the
-max terminal width, followed by one or two arguments. The first
-should be the name of a file to read the pod from, or "E<lt>&STDIN" to read from
-STDIN. A second argument, if provided, should be a filehandle glob where
-output should be sent.
+############################################################################
+# Initialization
+############################################################################
-=head1 AUTHOR
+# Initialize the object. Must be sure to call our parent initializer.
+sub initialize {
+ my $self = shift;
-Tom Christiansen E<lt>F<tchrist@mox.perl.com>E<gt>
+ $$self{alt} = 0 unless defined $$self{alt};
+ $$self{indent} = 4 unless defined $$self{indent};
+ $$self{loose} = 0 unless defined $$self{loose};
+ $$self{sentence} = 0 unless defined $$self{sentence};
+ $$self{width} = 76 unless defined $$self{width};
-=head1 TODO
+ $$self{INDENTS} = []; # Stack of indentations.
+ $$self{MARGIN} = $$self{indent}; # Current left margin in spaces.
-Cleanup work. The input and output locations need to be more flexible,
-termcap shouldn't be a global variable, and the terminal speed needs to
-be properly calculated.
+ $self->SUPER::initialize;
+}
-=cut
-use Term::Cap;
-require Exporter;
-@ISA = Exporter;
-@EXPORT = qw(pod2text);
-
-use vars qw($VERSION);
-$VERSION = "1.0203";
+############################################################################
+# Core overrides
+############################################################################
+
+# Called for each command paragraph. Gets the command, the associated
+# paragraph, the line number, and a Pod::Paragraph object. Just dispatches
+# the command to a method named the same as the command. =cut is handled
+# internally by Pod::Parser.
+sub command {
+ my $self = shift;
+ my $command = shift;
+ return if $command eq 'pod';
+ return if ($$self{EXCLUDE} && $command ne 'end');
+ $self->item ("\n") if defined $$self{ITEM};
+ $command = 'cmd_' . $command;
+ $self->$command (@_);
+}
-use locale; # make \w work right in non-ASCII lands
+# Called for a verbatim paragraph. Gets the paragraph, the line number, and
+# a Pod::Paragraph object. Just output it verbatim, but with tabs converted
+# to spaces.
+sub verbatim {
+ my $self = shift;
+ return if $$self{EXCLUDE};
+ $self->item if defined $$self{ITEM};
+ local $_ = shift;
+ return if /^\s*$/;
+ s/^(\s*\S+)/(' ' x $$self{MARGIN}) . $1/gme;
+ $self->output ($_);
+}
-$termcap=0;
+# Called for a regular text block. Gets the paragraph, the line number, and
+# a Pod::Paragraph object. Perform interpolation and output the results.
+sub textblock {
+ my $self = shift;
+ return if $$self{EXCLUDE};
+ $self->output ($_[0]), return if $$self{VERBATIM};
+ local $_ = shift;
+ my $line = shift;
-$opt_alt_format = 0;
+ # Perform a little magic to collapse multiple L<> references. This is
+ # here mostly for backwards-compatibility. We'll just rewrite the whole
+ # thing into actual text at this part, bypassing the whole internal
+ # sequence parsing thing.
+ s{
+ (
+ L< # A link of the form L</something>.
+ /
+ (
+ [:\w]+ # The item has to be a simple word...
+ (\(\))? # ...or simple function.
+ )
+ >
+ (
+ ,?\s+(and\s+)? # Allow lots of them, conjuncted.
+ L<
+ /
+ (
+ [:\w]+
+ (\(\))?
+ )
+ >
+ )+
+ )
+ } {
+ local $_ = $1;
+ s%L</([^>]+)>%$1%g;
+ my @items = split /(?:,?\s+(?:and\s+)?)/;
+ my $string = "the ";
+ my $i;
+ for ($i = 0; $i < @items; $i++) {
+ $string .= $items[$i];
+ $string .= ", " if @items > 2 && $i != $#items;
+ $string .= " and " if ($i == $#items - 1);
+ }
+ $string .= " entries elsewhere in this document";
+ $string;
+ }gex;
+
+ # Now actually interpolate and output the paragraph.
+ $_ = $self->interpolate ($_, $line);
+ s/\s+$/\n/;
+ if (defined $$self{ITEM}) {
+ $self->item ($_ . "\n");
+ } else {
+ $self->output ($self->reformat ($_ . "\n"));
+ }
+}
-#$use_format=1;
+# Called for an interior sequence. Gets the command, argument, and a
+# Pod::InteriorSequence object and is expected to return the resulting text.
+# Calls code, bold, italic, file, and link to handle those types of
+# sequences, and handles S<>, E<>, X<>, and Z<> directly.
+sub interior_sequence {
+ my $self = shift;
+ my $command = shift;
+ local $_ = shift;
+ return '' if ($command eq 'X' || $command eq 'Z');
-$UNDL = "\x1b[4m";
-$INV = "\x1b[7m";
-$BOLD = "\x1b[1m";
-$NORM = "\x1b[0m";
+ # Expand escapes into the actual character now, carping if invalid.
+ if ($command eq 'E') {
+ if (/^\d+$/) {
+ return chr;
+ } else {
+ return $ESCAPES{$_} if defined $ESCAPES{$_};
+ carp "Unknown escape: E<$_>";
+ return "E<$_>";
+ }
+ }
-sub pod2text {
-shift if $opt_alt_format = ($_[0] eq '-a');
+ # For all the other sequences, empty content produces no output.
+ return if $_ eq '';
-if($termcap and !$setuptermcap) {
- $setuptermcap=1;
+ # For S<>, compress all internal whitespace and then map spaces to \01.
+ # When we output the text, we'll map this back.
+ if ($command eq 'S') {
+ s/\s{2,}/ /g;
+ tr/ /\01/;
+ return $_;
+ }
- my($term) = Tgetent Term::Cap { TERM => undef, OSPEED => 9600 };
- $UNDL = $term->{'_us'};
- $INV = $term->{'_mr'};
- $BOLD = $term->{'_md'};
- $NORM = $term->{'_me'};
+ # Anything else needs to get dispatched to another method.
+ if ($command eq 'B') { return $self->seq_b ($_) }
+ elsif ($command eq 'C') { return $self->seq_c ($_) }
+ elsif ($command eq 'F') { return $self->seq_f ($_) }
+ elsif ($command eq 'I') { return $self->seq_i ($_) }
+ elsif ($command eq 'L') { return $self->seq_l ($_) }
+ else { carp "Unknown sequence $command<$_>" }
}
-$SCREEN = ($_[0] =~ /^-(\d+)/ && (shift, $1))
- || $ENV{COLUMNS}
- || ($ENV{TERMCAP} =~ /co#(\d+)/)[0]
- || ($^O ne 'MSWin32' && $^O ne 'dos' && (`stty -a 2>/dev/null` =~ /(\d+) columns/)[0])
- || 72;
+# Called for each paragraph that's actually part of the POD. We take
+# advantage of this opportunity to untabify the input.
+sub preprocess_paragraph {
+ my $self = shift;
+ local $_ = shift;
+ 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me;
+ $_;
+}
-@_ = ("<&STDIN") unless @_;
-local($file,*OUTPUT) = @_;
-*OUTPUT = *STDOUT if @_<2;
-local $: = $:;
-$: = " \n" if $opt_alt_format; # Do not break ``-L/lib/'' into ``- L/lib/''.
+############################################################################
+# Command paragraphs
+############################################################################
-$/ = "";
+# All command paragraphs take the paragraph and the line number.
-$FANCY = 0;
+# First level heading.
+sub cmd_head1 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $_ = $self->interpolate ($_, shift);
+ if ($$self{alt}) {
+ $self->output ("\n==== $_ ====\n\n");
+ } else {
+ $_ .= "\n" if $$self{loose};
+ $self->output ($_ . "\n");
+ }
+}
-$cutting = 1;
-$DEF_INDENT = 4;
-$indent = $DEF_INDENT;
-$needspace = 0;
-$begun = "";
+# Second level heading.
+sub cmd_head2 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $_ = $self->interpolate ($_, shift);
+ if ($$self{alt}) {
+ $self->output ("\n== $_ ==\n\n");
+ } else {
+ $self->output (' ' x ($$self{indent} / 2) . $_ . "\n\n");
+ }
+}
-open(IN, $file) || die "Couldn't open $file: $!";
+# Start a list.
+sub cmd_over {
+ my $self = shift;
+ local $_ = shift;
+ unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
+ push (@{ $$self{INDENTS} }, $$self{MARGIN});
+ $$self{MARGIN} += ($_ + 0);
+}
-POD_DIRECTIVE: while (<IN>) {
- if ($cutting) {
- next unless /^=/;
- $cutting = 0;
- }
- if ($begun) {
- if (/^=end\s+$begun/) {
- $begun = "";
- }
- elsif ($begun eq "text") {
- print OUTPUT $_;
- }
- next;
- }
- 1 while s{^(.*?)(\t+)(.*)$}{
- $1
- . (' ' x (length($2) * 8 - length($1) % 8))
- . $3
- }me;
- # Translate verbatim paragraph
- if (/^\s/) {
- output($_);
- next;
+# End a list.
+sub cmd_back {
+ my $self = shift;
+ $$self{MARGIN} = pop @{ $$self{INDENTS} };
+ unless (defined $$self{MARGIN}) {
+ carp "Unmatched =back";
+ $$self{MARGIN} = $$self{indent};
}
+}
- if (/^=for\s+(\S+)\s*(.*)/s) {
- if ($1 eq "text") {
- print OUTPUT $2,"";
- } else {
- # ignore unknown for
- }
- next;
- }
- elsif (/^=begin\s+(\S+)\s*(.*)/s) {
- $begun = $1;
- if ($1 eq "text") {
- print OUTPUT $2."";
- }
- next;
- }
+# An individual list item.
+sub cmd_item {
+ my $self = shift;
+ if (defined $$self{ITEM}) { $self->item }
+ local $_ = shift;
+ s/\s+$//;
+ $$self{ITEM} = $self->interpolate ($_);
+}
-sub prepare_for_output {
-
- s/\s*$/\n/;
- &init_noremap;
-
- # need to hide E<> first; they're processed in clear_noremap
- s/(E<[^<>]+>)/noremap($1)/ge;
- $maxnest = 10;
- while ($maxnest-- && /[A-Z]</) {
- unless ($FANCY) {
- if ($opt_alt_format) {
- s/[BC]<(.*?)>/``$1''/sg;
- s/F<(.*?)>/"$1"/sg;
- } else {
- s/C<(.*?)>/`$1'/sg;
- }
- } else {
- s/C<(.*?)>/noremap("E<lchevron>${1}E<rchevron>")/sge;
- }
- # s/[IF]<(.*?)>/italic($1)/ge;
- s/I<(.*?)>/*$1*/sg;
- # s/[CB]<(.*?)>/bold($1)/ge;
- s/X<.*?>//sg;
-
- # LREF: a la HREF L<show this text|man/section>
- s:L<([^|>]+)\|[^>]+>:$1:g;
-
- # LREF: a manpage(3f)
- s:L<([a-zA-Z][^\s\/]+)(\([^\)]+\))?>:the $1$2 manpage:g;
- # LREF: an =item on another manpage
- s{
- L<
- ([^/]+)
- /
- (
- [:\w]+
- (\(\))?
- )
- >
- } {the "$2" entry in the $1 manpage}gx;
-
- # LREF: an =item on this manpage
- s{
- ((?:
- L<
- /
- (
- [:\w]+
- (\(\))?
- )
- >
- (,?\s+(and\s+)?)?
- )+)
- } { internal_lrefs($1) }gex;
-
- # LREF: a =head2 (head1?), maybe on a manpage, maybe right here
- # the "func" can disambiguate
- s{
- L<
- (?:
- ([a-zA-Z]\S+?) /
- )?
- "?(.*?)"?
- >
- }{
- do {
- $1 # if no $1, assume it means on this page.
- ? "the section on \"$2\" in the $1 manpage"
- : "the section on \"$2\""
- }
- }sgex;
-
- s/[A-Z]<(.*?)>/$1/sg;
+# Begin a block for a particular translator. Setting VERBATIM triggers
+# special handling in textblock().
+sub cmd_begin {
+ my $self = shift;
+ local $_ = shift;
+ my ($kind) = /^(\S+)/ or return;
+ if ($kind eq 'text') {
+ $$self{VERBATIM} = 1;
+ } else {
+ $$self{EXCLUDE} = 1;
}
- clear_noremap(1);
}
- &prepare_for_output;
-
- if (s/^=//) {
- # $needspace = 0; # Assume this.
- # s/\n/ /g;
- ($Cmd, $_) = split(' ', $_, 2);
- # clear_noremap(1);
- if ($Cmd eq 'cut') {
- $cutting = 1;
- }
- elsif ($Cmd eq 'pod') {
- $cutting = 0;
- }
- elsif ($Cmd eq 'head1') {
- makespace();
- if ($opt_alt_format) {
- print OUTPUT "\n";
- s/^(.+?)[ \t]*$/==== $1 ====/;
- }
- print OUTPUT;
- # print OUTPUT uc($_);
- $needspace = $opt_alt_format;
- }
- elsif ($Cmd eq 'head2') {
- makespace();
- # s/(\w+)/\u\L$1/g;
- #print ' ' x $DEF_INDENT, $_;
- # print "\xA7";
- s/(\w)/\xA7 $1/ if $FANCY;
- if ($opt_alt_format) {
- s/^(.+?)[ \t]*$/== $1 ==/;
- print OUTPUT "\n", $_;
- } else {
- print OUTPUT ' ' x ($DEF_INDENT/2), $_, "\n";
- }
- $needspace = $opt_alt_format;
- }
- elsif ($Cmd eq 'over') {
- push(@indent,$indent);
- $indent += ($_ + 0) || $DEF_INDENT;
- }
- elsif ($Cmd eq 'back') {
- $indent = pop(@indent);
- warn "Unmatched =back\n" unless defined $indent;
- }
- elsif ($Cmd eq 'item') {
- makespace();
- # s/\A(\s*)\*/$1\xb7/ if $FANCY;
- # s/^(\s*\*\s+)/$1 /;
- {
- if (length() + 3 < $indent) {
- my $paratag = $_;
- $_ = <IN>;
- if (/^=/) { # tricked!
- local($indent) = $indent[$#indent - 1] || $DEF_INDENT;
- output($paratag);
- redo POD_DIRECTIVE;
- }
- &prepare_for_output;
- IP_output($paratag, $_);
- } else {
- local($indent) = $indent[$#indent - 1] || $DEF_INDENT;
- output($_, 0);
- }
- }
- }
- else {
- warn "Unrecognized directive: $Cmd\n";
- }
- }
- else {
- # clear_noremap(1);
- makespace();
- output($_, 1);
- }
+# End a block for a particular translator. We assume that all =begin/=end
+# pairs are properly closed.
+sub cmd_end {
+ my $self = shift;
+ $$self{EXCLUDE} = 0;
+ $$self{VERBATIM} = 0;
+}
+
+# One paragraph for a particular translator. Ignore it unless it's intended
+# for text, in which case we treat it as a verbatim text block.
+sub cmd_for {
+ my $self = shift;
+ local $_ = shift;
+ my $line = shift;
+ return unless s/^text\b[ \t]*\n?//;
+ $self->verbatim ($_, $line);
}
-close(IN);
-}
+############################################################################
+# Interior sequences
+############################################################################
+
+# The simple formatting ones. These are here mostly so that subclasses can
+# override them and do more complicated things.
+sub seq_b { return $_[0]{alt} ? "``$_[1]''" : $_[1] }
+sub seq_c { return $_[0]{alt} ? "``$_[1]''" : "`$_[1]'" }
+sub seq_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] }
+sub seq_i { return '*' . $_[1] . '*' }
+
+# The complicated one. Handle links. Since this is plain text, we can't
+# actually make any real links, so this is all to figure out what text we
+# print out.
+sub seq_l {
+ my $self = shift;
+ local $_ = shift;
-#########################################################################
+ # Smash whitespace in case we were split across multiple lines.
+ s/\s+/ /g;
-sub makespace {
- if ($needspace) {
- print OUTPUT "\n";
- $needspace = 0;
+ # If we were given any explicit text, just output it.
+ if (/^([^|]+)\|/) { return $1 }
+
+ # Okay, leading and trailing whitespace isn't important; get rid of it.
+ s/^\s+//;
+ s/\s+$//;
+
+ # Default to using the whole content of the link entry as a section
+ # name. Note that L<manpage/> forces a manpage interpretation, as does
+ # something looking like L<manpage(section)>. The latter is an
+ # enhancement over the original Pod::Text.
+ my ($manpage, $section) = ('', $_);
+ if (/^"\s*(.*?)\s*"$/) {
+ $section = '"' . $1 . '"';
+ } elsif (m/^[-:.\w]+(?:\(\S+\))?$/) {
+ ($manpage, $section) = ($_, '');
+ } elsif (m%/%) {
+ ($manpage, $section) = split (/\s*\/\s*/, $_, 2);
}
-}
-sub bold {
- my $line = shift;
- return $line if $use_format;
- if($termcap) {
- $line = "$BOLD$line$NORM";
+ # Now build the actual output text.
+ my $text = '';
+ if (!length $section) {
+ $text = "the $manpage manpage" if length $manpage;
+ } elsif ($section =~ /^[:\w]+(?:\(\))?/) {
+ $text .= 'the ' . $section . ' entry';
+ $text .= (length $manpage) ? " in the $manpage manpage"
+ : " elsewhere in this document";
} else {
- $line =~ s/(.)/$1\b$1/g;
- }
-# $line = "$BOLD$line$NORM" if $ansify;
- return $line;
+ $section =~ s/^\"\s*//;
+ $section =~ s/\s*\"$//;
+ $text .= 'the section on "' . $section . '"';
+ $text .= " in the $manpage manpage" if length $manpage;
+ }
+ $text;
}
-sub italic {
- my $line = shift;
- return $line if $use_format;
- if($termcap) {
- $line = "$UNDL$line$NORM";
+
+############################################################################
+# List handling
+############################################################################
+
+# This method is called whenever an =item command is complete (in other
+# words, we've seen its associated paragraph or know for certain that it
+# doesn't have one). It gets the paragraph associated with the item as an
+# argument. If that argument is empty, just output the item tag; if it
+# contains a newline, output the item tag followed by the newline.
+# Otherwise, see if there's enough room for us to output the item tag in the
+# margin of the text or if we have to put it on a separate line.
+sub item {
+ my $self = shift;
+ local $_ = shift;
+ my $tag = $$self{ITEM};
+ unless (defined $tag) {
+ carp "item called without tag";
+ return;
+ }
+ undef $$self{ITEM};
+ my $indent = $$self{INDENTS}[-1];
+ unless (defined $indent) { $indent = $$self{indent} }
+ my $space = ' ' x $indent;
+ $space =~ s/^ /:/ if $$self{alt};
+ if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) {
+ my $margin = $$self{MARGIN};
+ $$self{MARGIN} = $indent;
+ my $output = $self->reformat ($tag);
+ $output =~ s/\n*$/\n/;
+ $self->output ($output);
+ $$self{MARGIN} = $margin;
+ $self->output ($self->reformat ($_)) if /\S/;
} else {
- $line =~ s/(.)/$1\b_/g;
+ $_ = $self->reformat ($_);
+ s/^ /:/ if ($$self{alt} && $indent > 0);
+ my $tagspace = ' ' x length $tag;
+ s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item";
+ $self->output ($_);
}
-# $line = "$UNDL$line$NORM" if $ansify;
- return $line;
}
-# Fill a paragraph including underlined and overstricken chars.
-# It's not perfect for words longer than the margin, and it's probably
-# slow, but it works.
-sub fill {
+
+############################################################################
+# Output formatting
+############################################################################
+
+# Wrap a line, indenting by the current left margin. We can't use
+# Text::Wrap because it plays games with tabs. We can't use formline, even
+# though we'd really like to, because it screws up non-printing characters.
+# So we have to do the wrapping ourselves.
+sub wrap {
+ my $self = shift;
local $_ = shift;
- my $par = "";
- my $indent_space = " " x $indent;
- my $marg = $SCREEN-$indent;
- my $line = $indent_space;
- my $line_length;
- foreach (split) {
- my $word_length = length;
- $word_length -= 2 while /\010/g; # Subtract backspaces
-
- if ($line_length + $word_length > $marg) {
- $par .= $line . "\n";
- $line= $indent_space . $_;
- $line_length = $word_length;
- }
- else {
- if ($line_length) {
- $line_length++;
- $line .= " ";
- }
- $line_length += $word_length;
- $line .= $_;
- }
+ my $output = '';
+ my $spaces = ' ' x $$self{MARGIN};
+ my $width = $$self{width} - $$self{MARGIN};
+ while (length > $width) {
+ if (s/^([^\n]{0,$width})\s+// || s/^([^\n]{$width})//) {
+ $output .= $spaces . $1 . "\n";
+ } else {
+ last;
+ }
}
- $par .= "$line\n" if $line;
- $par .= "\n";
- return $par;
+ $output .= $spaces . $_;
+ $output =~ s/\s+$/\n\n/;
+ $output;
}
-sub IP_output {
- local($tag, $_) = @_;
- local($tag_indent) = $indent[$#indent - 1] || $DEF_INDENT;
- $tag_cols = $SCREEN - $tag_indent;
- $cols = $SCREEN - $indent;
- $tag =~ s/\s*$//;
- s/\s+/ /g;
- s/^ //;
- $str = "format OUTPUT = \n"
- . (($opt_alt_format && $tag_indent > 1)
- ? ":" . " " x ($tag_indent - 1)
- : " " x ($tag_indent))
- . '@' . ('<' x ($indent - $tag_indent - 1))
- . "^" . ("<" x ($cols - 1)) . "\n"
- . '$tag, $_'
- . "\n~~"
- . (" " x ($indent-2))
- . "^" . ("<" x ($cols - 5)) . "\n"
- . '$_' . "\n\n.\n1";
- #warn $str; warn "tag is $tag, _ is $_";
- eval $str || die;
- write OUTPUT;
-}
+# Reformat a paragraph of text for the current margin. Takes the text to
+# reformat and returns the formatted text.
+sub reformat {
+ my $self = shift;
+ local $_ = shift;
-sub output {
- local($_, $reformat) = @_;
- if ($reformat) {
- $cols = $SCREEN - $indent;
- s/\s+/ /g;
- s/^ //;
- $str = "format OUTPUT = \n~~"
- . (" " x ($indent-2))
- . "^" . ("<" x ($cols - 5)) . "\n"
- . '$_' . "\n\n.\n1";
- eval $str || die;
- write OUTPUT;
+ # If we're trying to preserve two spaces after sentences, do some
+ # munging to support that. Otherwise, smash all repeated whitespace.
+ if ($$self{sentence}) {
+ s/ +$//mg;
+ s/\.\n/. \n/g;
+ s/\n/ /g;
+ s/ +/ /g;
} else {
- s/^/' ' x $indent/gem;
- s/^\s+\n$/\n/gm;
- s/^ /: /s if defined($reformat) && $opt_alt_format;
- print OUTPUT;
+ s/\s+/ /g;
}
+ $self->wrap ($_);
}
-sub noremap {
- local($thing_to_hide) = shift;
- $thing_to_hide =~ tr/\000-\177/\200-\377/;
- return $thing_to_hide;
-}
+# Output text to the output device.
+sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] }
-sub init_noremap {
- die "unmatched init" if $mapready++;
- #mask off high bit characters in input stream
- s/([\200-\377])/"E<".ord($1).">"/ge;
-}
-sub clear_noremap {
- my $ready_to_print = $_[0];
- die "unmatched clear" unless $mapready--;
- tr/\200-\377/\000-\177/;
- # now for the E<>s, which have been hidden until now
- # otherwise the interative \w<> processing would have
- # been hosed by the E<gt>
- s {
- E<
- (
- ( \d+ )
- | ( [A-Za-z]+ )
- )
- >
- } {
- do {
- defined $2
- ? chr($2)
- :
- defined $HTML_Escapes{$3}
- ? do { $HTML_Escapes{$3} }
- : do {
- warn "Unknown escape: E<$1> in $_";
- "E<$1>";
- }
- }
- }egx if $ready_to_print;
-}
+############################################################################
+# Backwards compatibility
+############################################################################
-sub internal_lrefs {
- local($_) = shift;
- s{L</([^>]+)>}{$1}g;
- my(@items) = split( /(?:,?\s+(?:and\s+)?)/ );
- my $retstr = "the ";
- my $i;
- for ($i = 0; $i <= $#items; $i++) {
- $retstr .= "C<$items[$i]>";
- $retstr .= ", " if @items > 2 && $i != $#items;
- $retstr .= " and " if $i+2 == @items;
+# The old Pod::Text module did everything in a pod2text() function. This
+# tries to provide the same interface for legacy applications.
+sub pod2text {
+ my @args;
+
+ # This is really ugly; I hate doing option parsing in the middle of a
+ # module. But the old Pod::Text module supported passing flags to its
+ # entry function, so handle -a and -<number>.
+ while ($_[0] =~ /^-/) {
+ my $flag = shift;
+ if ($flag eq '-a') { push (@args, alt => 1) }
+ elsif ($flag =~ /^-(\d+)$/) { push (@args, width => $1) }
+ else {
+ unshift (@_, $flag);
+ last;
+ }
}
- $retstr .= " entr" . ( @items > 1 ? "ies" : "y" )
- . " elsewhere in this document ";
-
- return $retstr;
-
+ # Now that we know what arguments we're using, create the parser.
+ my $parser = Pod::Text->new (@args);
+
+ # If two arguments were given, the second argument is going to be a file
+ # handle. That means we want to call parse_from_filehandle(), which
+ # means we need to turn the first argument into a file handle. Magic
+ # open will handle the <&STDIN case automagically.
+ if (defined $_[1]) {
+ local *IN;
+ unless (open (IN, $_[0])) {
+ croak ("Can't open $_[0] for reading: $!\n");
+ return;
+ }
+ $_[0] = \*IN;
+ return $parser->parse_from_filehandle (@_);
+ } else {
+ return $parser->parse_from_file (@_);
+ }
}
-BEGIN {
-
-%HTML_Escapes = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
-
- "Aacute" => "\xC1", # capital A, acute accent
- "aacute" => "\xE1", # small a, acute accent
- "Acirc" => "\xC2", # capital A, circumflex accent
- "acirc" => "\xE2", # small a, circumflex accent
- "AElig" => "\xC6", # capital AE diphthong (ligature)
- "aelig" => "\xE6", # small ae diphthong (ligature)
- "Agrave" => "\xC0", # capital A, grave accent
- "agrave" => "\xE0", # small a, grave accent
- "Aring" => "\xC5", # capital A, ring
- "aring" => "\xE5", # small a, ring
- "Atilde" => "\xC3", # capital A, tilde
- "atilde" => "\xE3", # small a, tilde
- "Auml" => "\xC4", # capital A, dieresis or umlaut mark
- "auml" => "\xE4", # small a, dieresis or umlaut mark
- "Ccedil" => "\xC7", # capital C, cedilla
- "ccedil" => "\xE7", # small c, cedilla
- "Eacute" => "\xC9", # capital E, acute accent
- "eacute" => "\xE9", # small e, acute accent
- "Ecirc" => "\xCA", # capital E, circumflex accent
- "ecirc" => "\xEA", # small e, circumflex accent
- "Egrave" => "\xC8", # capital E, grave accent
- "egrave" => "\xE8", # small e, grave accent
- "ETH" => "\xD0", # capital Eth, Icelandic
- "eth" => "\xF0", # small eth, Icelandic
- "Euml" => "\xCB", # capital E, dieresis or umlaut mark
- "euml" => "\xEB", # small e, dieresis or umlaut mark
- "Iacute" => "\xCD", # capital I, acute accent
- "iacute" => "\xED", # small i, acute accent
- "Icirc" => "\xCE", # capital I, circumflex accent
- "icirc" => "\xEE", # small i, circumflex accent
- "Igrave" => "\xCD", # capital I, grave accent
- "igrave" => "\xED", # small i, grave accent
- "Iuml" => "\xCF", # capital I, dieresis or umlaut mark
- "iuml" => "\xEF", # small i, dieresis or umlaut mark
- "Ntilde" => "\xD1", # capital N, tilde
- "ntilde" => "\xF1", # small n, tilde
- "Oacute" => "\xD3", # capital O, acute accent
- "oacute" => "\xF3", # small o, acute accent
- "Ocirc" => "\xD4", # capital O, circumflex accent
- "ocirc" => "\xF4", # small o, circumflex accent
- "Ograve" => "\xD2", # capital O, grave accent
- "ograve" => "\xF2", # small o, grave accent
- "Oslash" => "\xD8", # capital O, slash
- "oslash" => "\xF8", # small o, slash
- "Otilde" => "\xD5", # capital O, tilde
- "otilde" => "\xF5", # small o, tilde
- "Ouml" => "\xD6", # capital O, dieresis or umlaut mark
- "ouml" => "\xF6", # small o, dieresis or umlaut mark
- "szlig" => "\xDF", # small sharp s, German (sz ligature)
- "THORN" => "\xDE", # capital THORN, Icelandic
- "thorn" => "\xFE", # small thorn, Icelandic
- "Uacute" => "\xDA", # capital U, acute accent
- "uacute" => "\xFA", # small u, acute accent
- "Ucirc" => "\xDB", # capital U, circumflex accent
- "ucirc" => "\xFB", # small u, circumflex accent
- "Ugrave" => "\xD9", # capital U, grave accent
- "ugrave" => "\xF9", # small u, grave accent
- "Uuml" => "\xDC", # capital U, dieresis or umlaut mark
- "uuml" => "\xFC", # small u, dieresis or umlaut mark
- "Yacute" => "\xDD", # capital Y, acute accent
- "yacute" => "\xFD", # small y, acute accent
- "yuml" => "\xFF", # small y, dieresis or umlaut mark
-
- "lchevron" => "\xAB", # left chevron (double less than)
- "rchevron" => "\xBB", # right chevron (double greater than)
-);
-}
+
+############################################################################
+# Module return value and documentation
+############################################################################
1;
+__END__
+
+=head1 NAME
+
+Pod::Text - Convert POD data to formatted ASCII text
+
+=head1 SYNOPSIS
+
+ use Pod::Text;
+ my $parser = Pod::Text->new (sentence => 0, width => 78);
+
+ # Read POD from STDIN and write to STDOUT.
+ $parser->parse_from_filehandle;
+
+ # Read POD from file.pod and write to file.txt.
+ $parser->parse_from_file ('file.pod', 'file.txt');
+
+=head1 DESCRIPTION
+
+Pod::Text is a module that can convert documentation in the POD format (the
+preferred language for documenting Perl) into formatted ASCII. It uses no
+special formatting controls or codes whatsoever, and its output is therefore
+suitable for nearly any device.
+
+As a derived class from Pod::Parser, Pod::Text supports the same methods and
+interfaces. See L<Pod::Parser> for all the details; briefly, one creates a
+new parser with C<Pod::Text-E<gt>new()> and then calls either
+parse_from_filehandle() or parse_from_file().
+
+new() can take options, in the form of key/value pairs, that control the
+behavior of the parser. The currently recognized options are:
+
+=over 4
+
+=item alt
+
+If set to a true value, selects an alternate output format that, among other
+things, uses a different heading style and marks C<=item> entries with a
+colon in the left margin. Defaults to false.
+
+=item indent
+
+The number of spaces to indent regular text, and the default indentation for
+C<=over> blocks. Defaults to 4.
+
+=item loose
+
+If set to a true value, a blank line is printed after a C<=head1> heading.
+If set to false (the default), no blank line is printed after C<=head1>,
+although one is still printed after C<=head2>. This is the default because
+it's the expected formatting for manual pages; if you're formatting
+arbitrary text documents, setting this to true may result in more pleasing
+output.
+
+=item sentence
+
+If set to a true value, Pod::Text will assume that each sentence ends in two
+spaces, and will try to preserve that spacing. If set to false, all
+consecutive whitespace in non-verbatim paragraphs is compressed into a
+single space. Defaults to true.
+
+=item width
+
+The column at which to wrap text on the right-hand side. Defaults to 76.
+
+=back
+
+The standard Pod::Parser method parse_from_filehandle() takes up to two
+arguments, the first being the file handle to read POD from and the second
+being the file handle to write the formatted output to. The first defaults
+to STDIN if not given, and the second defaults to STDOUT. The method
+parse_from_file() is almost identical, except that its two arguments are the
+input and output disk files instead. See L<Pod::Parser> for the specific
+details.
+
+=head1 DIAGNOSTICS
+
+=over 4
+
+=item Bizarre space in item
+
+(W) Something has gone wrong in internal C<=item> processing. This message
+indicates a bug in Pod::Text; you should never see it.
+
+=item Can't open %s for reading: %s
+
+(F) Pod::Text was invoked via the compatibility mode pod2text() interface
+and the input file it was given could not be opened.
+
+=item Unknown escape: %s
+
+(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Text didn't
+know about.
+
+=item Unknown sequence: %s
+
+(W) The POD source contained a non-standard internal sequence (something of
+the form C<XE<lt>E<gt>>) that Pod::Text didn't know about.
+
+=item Unmatched =back
+
+(W) Pod::Text encountered a C<=back> command that didn't correspond to an
+C<=over> command.
+
+=back
+
+=head1 RESTRICTIONS
+
+Embedded Ctrl-As (octal 001) in the input will be mapped to spaces on
+output, due to an internal implementation detail.
+
+=head1 NOTES
+
+This is a replacement for an earlier Pod::Text module written by Tom
+Christiansen. It has a revamped interface, since it now uses Pod::Parser,
+but an interface roughly compatible with the old Pod::Text::pod2text()
+function is still available. Please change to the new calling convention,
+though.
+
+The original Pod::Text contained code to do formatting via termcap
+sequences, although it wasn't turned on by default and it was problematic to
+get it to work at all. This rewrite doesn't even try to do that, but a
+subclass of it does. Look for L<Pod::Text::Termcap|Pod::Text::Termcap>.
+
+=head1 SEE ALSO
+
+L<Pod::Parser|Pod::Parser>, L<Pod::Text::Termcap|Pod::Text::Termcap>,
+pod2text(1)
+
+=head1 AUTHOR
+
+Russ Allbery E<lt>rra@stanford.eduE<gt>, based I<very> heavily on the
+original Pod::Text by Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> and
+its conversion to Pod::Parser by Brad Appleton
+E<lt>bradapp@enteract.comE<gt>.
+
+=cut
diff --git a/contrib/perl5/lib/Pod/Text/Color.pm b/contrib/perl5/lib/Pod/Text/Color.pm
new file mode 100644
index 0000000..10e1d9f
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Text/Color.pm
@@ -0,0 +1,125 @@
+# Pod::Text::Color -- Convert POD data to formatted color ASCII text
+# $Id: Color.pm,v 0.5 1999/09/20 10:15:16 eagle Exp $
+#
+# Copyright 1999 by Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+#
+# This is just a basic proof of concept. It should later be modified to
+# make better use of color, take options changing what colors are used for
+# what text, and the like.
+
+############################################################################
+# Modules and declarations
+############################################################################
+
+package Pod::Text::Color;
+
+require 5.004;
+
+use Pod::Text ();
+use Term::ANSIColor qw(colored);
+
+use strict;
+use vars qw(@ISA $VERSION);
+
+@ISA = qw(Pod::Text);
+
+# Use the CVS revision of this file as its version number.
+($VERSION = (split (' ', q$Revision: 0.5 $ ))[1]) =~ s/\.(\d)$/.0$1/;
+
+
+############################################################################
+# Overrides
+############################################################################
+
+# Make level one headings bold.
+sub cmd_head1 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $self->SUPER::cmd_head1 (colored ($_, 'bold'));
+}
+
+# Make level two headings bold.
+sub cmd_head2 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $self->SUPER::cmd_head2 (colored ($_, 'bold'));
+}
+
+# Fix the various interior sequences.
+sub seq_b { return colored ($_[1], 'bold') }
+sub seq_f { return colored ($_[1], 'cyan') }
+sub seq_i { return colored ($_[1], 'yellow') }
+
+# We unfortunately have to override the wrapping code here, since the normal
+# wrapping code gets really confused by all the escape sequences.
+sub wrap {
+ my $self = shift;
+ local $_ = shift;
+ my $output = '';
+ my $spaces = ' ' x $$self{MARGIN};
+ my $width = $$self{width} - $$self{MARGIN};
+ while (length > $width) {
+ if (s/^((?:(?:\e\[[\d;]+m)?[^\n]){0,$width})\s+//
+ || s/^((?:(?:\e\[[\d;]+m)?[^\n]){$width})//) {
+ $output .= $spaces . $1 . "\n";
+ } else {
+ last;
+ }
+ }
+ $output .= $spaces . $_;
+ $output =~ s/\s+$/\n\n/;
+ $output;
+}
+
+############################################################################
+# Module return value and documentation
+############################################################################
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Text::Color - Convert POD data to formatted color ASCII text
+
+=head1 SYNOPSIS
+
+ use Pod::Text::Color;
+ my $parser = Pod::Text::Color->new (sentence => 0, width => 78);
+
+ # Read POD from STDIN and write to STDOUT.
+ $parser->parse_from_filehandle;
+
+ # Read POD from file.pod and write to file.txt.
+ $parser->parse_from_file ('file.pod', 'file.txt');
+
+=head1 DESCRIPTION
+
+Pod::Text::Color is a simple subclass of Pod::Text that highlights output
+text using ANSI color escape sequences. Apart from the color, it in all
+ways functions like Pod::Text. See L<Pod::Text> for details and available
+options.
+
+Term::ANSIColor is used to get colors and therefore must be installed to use
+this module.
+
+=head1 BUGS
+
+This is just a basic proof of concept. It should be seriously expanded to
+support configurable coloration via options passed to the constructor, and
+B<pod2text> should be taught about those.
+
+=head1 SEE ALSO
+
+L<Pod::Text|Pod::Text>, L<Pod::Parser|Pod::Parser>
+
+=head1 AUTHOR
+
+Russ Allbery E<lt>rra@stanford.eduE<gt>.
+
+=cut
diff --git a/contrib/perl5/lib/Pod/Text/Termcap.pm b/contrib/perl5/lib/Pod/Text/Termcap.pm
new file mode 100644
index 0000000..7e89ec6
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Text/Termcap.pm
@@ -0,0 +1,142 @@
+# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes.
+# $Id: Termcap.pm,v 0.4 1999/09/20 10:17:45 eagle Exp $
+#
+# Copyright 1999 by Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+#
+# This is a simple subclass of Pod::Text that overrides a few key methods to
+# output the right termcap escape sequences for formatted text on the
+# current terminal type.
+
+############################################################################
+# Modules and declarations
+############################################################################
+
+package Pod::Text::Termcap;
+
+require 5.004;
+
+use Pod::Text ();
+use POSIX ();
+use Term::Cap;
+
+use strict;
+use vars qw(@ISA $VERSION);
+
+@ISA = qw(Pod::Text);
+
+# Use the CVS revision of this file as its version number.
+($VERSION = (split (' ', q$Revision: 0.4 $ ))[1]) =~ s/\.(\d)$/.0$1/;
+
+
+############################################################################
+# Overrides
+############################################################################
+
+# In the initialization method, grab our terminal characteristics as well as
+# do all the stuff we normally do.
+sub initialize {
+ my $self = shift;
+
+ # The default Term::Cap path won't work on Solaris.
+ $ENV{TERMPATH} = "$ENV{HOME}/.termcap:/etc/termcap"
+ . ":/usr/share/misc/termcap:/usr/share/lib/termcap";
+
+ my $termios = POSIX::Termios->new;
+ $termios->getattr;
+ my $ospeed = $termios->getospeed;
+ my $term = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
+ $$self{BOLD} = $$term{_md} or die 'BOLD';
+ $$self{UNDL} = $$term{_us} or die 'UNDL';
+ $$self{NORM} = $$term{_me} or die 'NORM';
+
+ unless (defined $$self{width}) {
+ $$self{width} = $ENV{COLUMNS} || $$term{_co} || 78;
+ $$self{width} -= 2;
+ }
+
+ $self->SUPER::initialize;
+}
+
+# Make level one headings bold.
+sub cmd_head1 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $self->SUPER::cmd_head1 ("$$self{BOLD}$_$$self{NORM}");
+}
+
+# Make level two headings bold.
+sub cmd_head2 {
+ my $self = shift;
+ local $_ = shift;
+ s/\s+$//;
+ $self->SUPER::cmd_head2 ("$$self{BOLD}$_$$self{NORM}");
+}
+
+# Fix up B<> and I<>. Note that we intentionally don't do F<>.
+sub seq_b { my $self = shift; return "$$self{BOLD}$_[0]$$self{NORM}" }
+sub seq_i { my $self = shift; return "$$self{UNDL}$_[0]$$self{NORM}" }
+
+# Override the wrapping code to igore the special sequences.
+sub wrap {
+ my $self = shift;
+ local $_ = shift;
+ my $output = '';
+ my $spaces = ' ' x $$self{MARGIN};
+ my $width = $$self{width} - $$self{MARGIN};
+ my $code = "(?:\Q$$self{BOLD}\E|\Q$$self{UNDL}\E|\Q$$self{NORM}\E)";
+ while (length > $width) {
+ if (s/^((?:$code?[^\n]){0,$width})\s+//
+ || s/^((?:$code?[^\n]){$width})//) {
+ $output .= $spaces . $1 . "\n";
+ } else {
+ last;
+ }
+ }
+ $output .= $spaces . $_;
+ $output =~ s/\s+$/\n\n/;
+ $output;
+}
+
+
+############################################################################
+# Module return value and documentation
+############################################################################
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Text::Color - Convert POD data to ASCII text with format escapes
+
+=head1 SYNOPSIS
+
+ use Pod::Text::Termcap;
+ my $parser = Pod::Text::Termcap->new (sentence => 0, width => 78);
+
+ # Read POD from STDIN and write to STDOUT.
+ $parser->parse_from_filehandle;
+
+ # Read POD from file.pod and write to file.txt.
+ $parser->parse_from_file ('file.pod', 'file.txt');
+
+=head1 DESCRIPTION
+
+Pod::Text::Termcap is a simple subclass of Pod::Text that highlights output
+text using the correct termcap escape sequences for the current terminal.
+Apart from the format codes, it in all ways functions like Pod::Text. See
+L<Pod::Text> for details and available options.
+
+=head1 SEE ALSO
+
+L<Pod::Text|Pod::Text>, L<Pod::Parser|Pod::Parser>
+
+=head1 AUTHOR
+
+Russ Allbery E<lt>rra@stanford.eduE<gt>.
+
+=cut
diff --git a/contrib/perl5/lib/Pod/Usage.pm b/contrib/perl5/lib/Pod/Usage.pm
new file mode 100644
index 0000000..aa8f712
--- /dev/null
+++ b/contrib/perl5/lib/Pod/Usage.pm
@@ -0,0 +1,544 @@
+#############################################################################
+# Pod/Usage.pm -- print usage messages for the running script.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Usage;
+
+use vars qw($VERSION);
+$VERSION = 1.12; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+=head1 NAME
+
+Pod::Usage, pod2usage() - print a usage message from embedded pod documentation
+
+=head1 SYNOPSIS
+
+ use Pod::Usage
+
+ my $message_text = "This text precedes the usage message.";
+ my $exit_status = 2; ## The exit status to use
+ my $verbose_level = 0; ## The verbose level to use
+ my $filehandle = \*STDERR; ## The filehandle to write to
+
+ pod2usage($message_text);
+
+ pod2usage($exit_status);
+
+ pod2usage( { -message => $message_text ,
+ -exitval => $exit_status ,
+ -verbose => $verbose_level,
+ -output => $filehandle } );
+
+ pod2usage( -msg => $message_text ,
+ -exitval => $exit_status ,
+ -verbose => $verbose_level,
+ -output => $filehandle );
+
+=head1 ARGUMENTS
+
+B<pod2usage> should be given either a single argument, or a list of
+arguments corresponding to an associative array (a "hash"). When a single
+argument is given, it should correspond to exactly one of the following:
+
+=over
+
+=item *
+
+A string containing the text of a message to print I<before> printing
+the usage message
+
+=item *
+
+A numeric value corresponding to the desired exit status
+
+=item *
+
+A reference to a hash
+
+=back
+
+If more than one argument is given then the entire argument list is
+assumed to be a hash. If a hash is supplied (either as a reference or
+as a list) it should contain one or more elements with the following
+keys:
+
+=over
+
+=item C<-message>
+
+=item C<-msg>
+
+The text of a message to print immediately prior to printing the
+program's usage message.
+
+=item C<-exitval>
+
+The desired exit status to pass to the B<exit()> function.
+
+=item C<-verbose>
+
+The desired level of "verboseness" to use when printing the usage
+message. If the corresponding value is 0, then only the "SYNOPSIS"
+section of the pod documentation is printed. If the corresponding value
+is 1, then the "SYNOPSIS" section, along with any section entitled
+"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the
+corresponding value is 2 or more then the entire manpage is printed.
+
+=item C<-output>
+
+A reference to a filehandle, or the pathname of a file to which the
+usage message should be written. The default is C<\*STDERR> unless the
+exit value is less than 2 (in which case the default is C<\*STDOUT>).
+
+=item C<-input>
+
+A reference to a filehandle, or the pathname of a file from which the
+invoking script's pod documentation should be read. It defaults to the
+file indicated by C<$0> (C<$PROGRAM_NAME> for users of F<English.pm>).
+
+=item C<-pathlist>
+
+A list of directory paths. If the input file does not exist, then it
+will be searched for in the given directory list (in the order the
+directories appear in the list). It defaults to the list of directories
+implied by C<$ENV{PATH}>. The list may be specified either by a reference
+to an array, or by a string of directory paths which use the same path
+separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for
+MSWin32 and DOS).
+
+=back
+
+=head1 DESCRIPTION
+
+B<pod2usage> will print a usage message for the invoking script (using
+its embedded pod documentation) and then exit the script with the
+desired exit status. The usage message printed may have any one of three
+levels of "verboseness": If the verbose level is 0, then only a synopsis
+is printed. If the verbose level is 1, then the synopsis is printed
+along with a description (if present) of the command line options and
+arguments. If the verbose level is 2, then the entire manual page is
+printed.
+
+Unless they are explicitly specified, the default values for the exit
+status, verbose level, and output stream to use are determined as
+follows:
+
+=over
+
+=item *
+
+If neither the exit status nor the verbose level is specified, then the
+default is to use an exit status of 2 with a verbose level of 0.
+
+=item *
+
+If an exit status I<is> specified but the verbose level is I<not>, then the
+verbose level will default to 1 if the exit status is less than 2 and
+will default to 0 otherwise.
+
+=item *
+
+If an exit status is I<not> specified but verbose level I<is> given, then
+the exit status will default to 2 if the verbose level is 0 and will
+default to 1 otherwise.
+
+=item *
+
+If the exit status used is less than 2, then output is printed on
+C<STDOUT>. Otherwise output is printed on C<STDERR>.
+
+=back
+
+Although the above may seem a bit confusing at first, it generally does
+"the right thing" in most situations. This determination of the default
+values to use is based upon the following typical Unix conventions:
+
+=over
+
+=item *
+
+An exit status of 0 implies "success". For example, B<diff(1)> exits
+with a status of 0 if the two files have the same contents.
+
+=item *
+
+An exit status of 1 implies possibly abnormal, but non-defective, program
+termination. For example, B<grep(1)> exits with a status of 1 if
+it did I<not> find a matching line for the given regular expression.
+
+=item *
+
+An exit status of 2 or more implies a fatal error. For example, B<ls(1)>
+exits with a status of 2 if you specify an illegal (unknown) option on
+the command line.
+
+=item *
+
+Usage messages issued as a result of bad command-line syntax should go
+to C<STDERR>. However, usage messages issued due to an explicit request
+to print usage (like specifying B<-help> on the command line) should go
+to C<STDOUT>, just in case the user wants to pipe the output to a pager
+(such as B<more(1)>).
+
+=item *
+
+If program usage has been explicitly requested by the user, it is often
+desireable to exit with a status of 1 (as opposed to 0) after issuing
+the user-requested usage message. It is also desireable to give a
+more verbose description of program usage in this case.
+
+=back
+
+B<pod2usage> doesn't force the above conventions upon you, but it will
+use them by default if you don't expressly tell it to do otherwise. The
+ability of B<pod2usage()> to accept a single number or a string makes it
+convenient to use as an innocent looking error message handling function:
+
+ use Pod::Usage;
+ use Getopt::Long;
+
+ ## Parse options
+ GetOptions("help", "man", "flag1") || pod2usage(2);
+ pod2usage(1) if ($opt_help);
+ pod2usage(-verbose => 2) if ($opt_man);
+
+ ## Check for too many filenames
+ pod2usage("$0: Too many files given.\n") if (@ARGV > 1);
+
+Some user's however may feel that the above "economy of expression" is
+not particularly readable nor consistent and may instead choose to do
+something more like the following:
+
+ use Pod::Usage;
+ use Getopt::Long;
+
+ ## Parse options
+ GetOptions("help", "man", "flag1") || pod2usage(-verbose => 0);
+ pod2usage(-verbose => 1) if ($opt_help);
+ pod2usage(-verbose => 2) if ($opt_man);
+
+ ## Check for too many filenames
+ pod2usage(-verbose => 2, -message => "$0: Too many files given.\n")
+ if (@ARGV > 1);
+
+As with all things in Perl, I<there's more than one way to do it>, and
+B<pod2usage()> adheres to this philosophy. If you are interested in
+seeing a number of different ways to invoke B<pod2usage> (although by no
+means exhaustive), please refer to L<"EXAMPLES">.
+
+=head1 EXAMPLES
+
+Each of the following invocations of C<pod2usage()> will print just the
+"SYNOPSIS" section to C<STDERR> and will exit with a status of 2:
+
+ pod2usage();
+
+ pod2usage(2);
+
+ pod2usage(-verbose => 0);
+
+ pod2usage(-exitval => 2);
+
+ pod2usage({-exitval => 2, -output => \*STDERR});
+
+ pod2usage({-verbose => 0, -output => \*STDERR});
+
+ pod2usage(-exitval => 2, -verbose => 0);
+
+ pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print a message
+of "Syntax error." (followed by a newline) to C<STDERR>, immediately
+followed by just the "SYNOPSIS" section (also printed to C<STDERR>) and
+will exit with a status of 2:
+
+ pod2usage("Syntax error.");
+
+ pod2usage(-message => "Syntax error.", -verbose => 0);
+
+ pod2usage(-msg => "Syntax error.", -exitval => 2);
+
+ pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR});
+
+ pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR});
+
+ pod2usage(-msg => "Syntax error.", -exitval => 2, -verbose => 0);
+
+ pod2usage(-message => "Syntax error.",
+ -exitval => 2,
+ -verbose => 0,
+ -output => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print the
+"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to
+C<STDOUT> and will exit with a status of 1:
+
+ pod2usage(1);
+
+ pod2usage(-verbose => 1);
+
+ pod2usage(-exitval => 1);
+
+ pod2usage({-exitval => 1, -output => \*STDOUT});
+
+ pod2usage({-verbose => 1, -output => \*STDOUT});
+
+ pod2usage(-exitval => 1, -verbose => 1);
+
+ pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT});
+
+Each of the following invocations of C<pod2usage()> will print the
+entire manual page to C<STDOUT> and will exit with a status of 1:
+
+ pod2usage(-verbose => 2);
+
+ pod2usage({-verbose => 2, -output => \*STDOUT});
+
+ pod2usage(-exitval => 1, -verbose => 2);
+
+ pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT});
+
+=head2 Recommended Use
+
+Most scripts should print some type of usage message to C<STDERR> when a
+command line syntax error is detected. They should also provide an
+option (usually C<-H> or C<-help>) to print a (possibly more verbose)
+usage message to C<STDOUT>. Some scripts may even wish to go so far as to
+provide a means of printing their complete documentation to C<STDOUT>
+(perhaps by allowing a C<-man> option). The following complete example
+uses B<Pod::Usage> in combination with B<Getopt::Long> to do all of these
+things:
+
+ use Getopt::Long;
+ use Pod::Usage;
+
+ my $man = 0;
+ my $help = 0;
+ ## Parse options and print usage if there is a syntax error,
+ ## or if usage was explicitly requested.
+ GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
+ pod2usage(1) if $help;
+ pod2usage(-verbose => 2) if $man;
+
+ ## If no arguments were given, then allow STDIN to be used only
+ ## if it's not connected to a terminal (otherwise print usage)
+ pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN));
+ __END__
+
+ =head1 NAME
+
+ sample - Using GetOpt::Long and Pod::Usage
+
+ =head1 SYNOPSIS
+
+ sample [options] [file ...]
+
+ Options:
+ -help brief help message
+ -man full documentation
+
+ =head1 OPTIONS
+
+ =over 8
+
+ =item B<-help>
+
+ Print a brief help message and exits.
+
+ =item B<-man>
+
+ Prints the manual page and exits.
+
+ =back
+
+ =head1 DESCRIPTION
+
+ B<This program> will read the given input file(s) and do something
+ useful with the contents thereof.
+
+ =cut
+
+=head1 CAVEATS
+
+By default, B<pod2usage()> will use C<$0> as the path to the pod input
+file. Unfortunately, not all systems on which Perl runs will set C<$0>
+properly (although if C<$0> isn't found, B<pod2usage()> will search
+C<$ENV{PATH}> or else the list specified by the C<-pathlist> option).
+If this is the case for your system, you may need to explicitly specify
+the path to the pod docs for the invoking script using something
+similar to the following:
+
+ pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs");
+
+=head1 AUTHOR
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=head1 ACKNOWLEDGEMENTS
+
+Steven McDougall E<lt>swmcd@world.std.comE<gt> for his help and patience
+with re-writing this manpage.
+
+=cut
+
+#############################################################################
+
+use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Spec;
+
+use vars qw(@ISA @EXPORT);
+@EXPORT = qw(&pod2usage);
+BEGIN {
+ if ( $] >= 5.005_58 ) {
+ require Pod::Text;
+ @ISA = qw( Pod::Text );
+ }
+ else {
+ require Pod::PlainText;
+ @ISA = qw( Pod::PlainText );
+ }
+}
+
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub pod2usage {
+ local($_) = shift || "";
+ my %opts;
+ ## Collect arguments
+ if (@_ > 0) {
+ ## Too many arguments - assume that this is a hash and
+ ## the user forgot to pass a reference to it.
+ %opts = ($_, @_);
+ }
+ elsif (ref $_) {
+ ## User passed a ref to a hash
+ %opts = %{$_} if (ref($_) eq 'HASH');
+ }
+ elsif (/^[-+]?\d+$/) {
+ ## User passed in the exit value to use
+ $opts{"-exitval"} = $_;
+ }
+ else {
+ ## User passed in a message to print before issuing usage.
+ $_ and $opts{"-message"} = $_;
+ }
+
+ ## Need this for backward compatibility since we formerly used
+ ## options that were all uppercase words rather than ones that
+ ## looked like Unix command-line options.
+ ## to be uppercase keywords)
+ %opts = map {
+ my $val = $opts{$_};
+ s/^(?=\w)/-/;
+ /^-msg/i and $_ = '-message';
+ /^-exit/i and $_ = '-exitval';
+ lc($_) => $val;
+ } (keys %opts);
+
+ ## Now determine default -exitval and -verbose values to use
+ if ((! defined $opts{"-exitval"}) && (! defined $opts{"-verbose"})) {
+ $opts{"-exitval"} = 2;
+ $opts{"-verbose"} = 0;
+ }
+ elsif (! defined $opts{"-exitval"}) {
+ $opts{"-exitval"} = ($opts{"-verbose"} > 0) ? 1 : 2;
+ }
+ elsif (! defined $opts{"-verbose"}) {
+ $opts{"-verbose"} = ($opts{"-exitval"} < 2);
+ }
+
+ ## Default the output file
+ $opts{"-output"} = ($opts{"-exitval"} < 2) ? \*STDOUT : \*STDERR
+ unless (defined $opts{"-output"});
+ ## Default the input file
+ $opts{"-input"} = $0 unless (defined $opts{"-input"});
+
+ ## Look up input file in path if it doesnt exist.
+ unless ((ref $opts{"-input"}) || (-e $opts{"-input"})) {
+ my ($dirname, $basename) = ('', $opts{"-input"});
+ my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/) ? ";"
+ : (($^O eq 'MacOS') ? ',' : ":");
+ my $pathspec = $opts{"-pathlist"} || $ENV{PATH} || $ENV{PERL5LIB};
+
+ my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec);
+ for $dirname (@paths) {
+ $_ = File::Spec->catfile($dirname, $basename) if length;
+ last if (-e $_) && ($opts{"-input"} = $_);
+ }
+ }
+
+ ## Now create a pod reader and constrain it to the desired sections.
+ my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts);
+ if ($opts{"-verbose"} == 0) {
+ $parser->select("SYNOPSIS");
+ }
+ elsif ($opts{"-verbose"} == 1) {
+ my $opt_re = '(?i)' .
+ '(?:OPTIONS|ARGUMENTS)' .
+ '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?';
+ $parser->select( 'SYNOPSIS', $opt_re, "DESCRIPTION/$opt_re" );
+ }
+
+ ## Now translate the pod document and then exit with the desired status
+ $parser->parse_from_file($opts{"-input"}, $opts{"-output"});
+ exit($opts{"-exitval"});
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+sub begin_pod {
+ my $self = shift;
+ $self->SUPER::begin_pod(); ## Have to call superclass
+ my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
+ my $out_fh = $self->output_handle();
+ print $out_fh "$msg\n";
+}
+
+sub preprocess_paragraph {
+ my $self = shift;
+ local $_ = shift;
+ my $line = shift;
+ ## See if this is a heading and we arent printing the entire manpage.
+ if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) {
+ ## Change the title of the SYNOPSIS section to USAGE
+ s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/;
+ ## Try to do some lowercasing instead of all-caps in headings
+ s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
+ ## Use a colon to end all headings
+ s/\s*$/:/ unless (/:\s*$/);
+ $_ .= "\n";
+ }
+ return $self->SUPER::preprocess_paragraph($_);
+}
+
diff --git a/contrib/perl5/lib/SelfLoader.pm b/contrib/perl5/lib/SelfLoader.pm
index 311d953..99372f2 100644
--- a/contrib/perl5/lib/SelfLoader.pm
+++ b/contrib/perl5/lib/SelfLoader.pm
@@ -1,14 +1,22 @@
package SelfLoader;
-use Carp;
+# use Carp;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(AUTOLOAD);
-$VERSION = "1.08";
+$VERSION = "1.0901";
sub Version {$VERSION}
$DEBUG = 0;
my %Cache; # private cache for all SelfLoader's client packages
+# allow checking for valid ': attrlist' attachments
+my $nested;
+$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x;
+my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
+my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
+
+sub croak { require Carp; goto &Carp::croak }
+
AUTOLOAD {
print STDERR "SelfLoader::AUTOLOAD for $AUTOLOAD\n" if $DEBUG;
my $SL_code = $Cache{$AUTOLOAD};
@@ -48,7 +56,7 @@ sub _load_stubs {
local($/) = "\n";
while(defined($line = <$fh>) and $line !~ m/^__END__/) {
- if ($line =~ m/^sub\s+([\w:]+)\s*(\([\\\$\@\%\&\*\;]*\))?/) {
+ if ($line =~ m/^sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$attr_list)?)/) {
push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
$protoype = $2;
@lines = ($line);
@@ -92,7 +100,8 @@ sub _load_stubs {
sub _add_to_cache {
my($self,$fullname,$pack,$lines, $protoype) = @_;
return () unless $fullname;
- carp("Redefining sub $fullname") if exists $Cache{$fullname};
+ (require Carp), Carp::carp("Redefining sub $fullname")
+ if exists $Cache{$fullname};
$Cache{$fullname} = join('', "package $pack; ",@$lines);
print STDERR "SelfLoader cached $fullname: $Cache{$fullname}" if $DEBUG;
# return stub to be eval'd
@@ -112,9 +121,9 @@ SelfLoader - load functions only on demand
package FOOBAR;
use SelfLoader;
-
+
... (initializing code)
-
+
__DATA__
sub {....
diff --git a/contrib/perl5/lib/Shell.pm b/contrib/perl5/lib/Shell.pm
index f4ef431..62aa829 100644
--- a/contrib/perl5/lib/Shell.pm
+++ b/contrib/perl5/lib/Shell.pm
@@ -1,6 +1,8 @@
package Shell;
+use 5.005_64;
+our($capture_stderr, $VERSION);
-use Config;
+$VERSION = '0.2';
sub import {
my $self = shift;
@@ -20,12 +22,12 @@ sub import {
AUTOLOAD {
my $cmd = $AUTOLOAD;
$cmd =~ s/^.*:://;
- eval qq {
- *$AUTOLOAD = sub {
+ eval <<"*END*";
+ sub $AUTOLOAD {
if (\@_ < 1) {
- `$cmd`;
+ \$Shell::capture_stderr ? `$cmd 2>&1` : `$cmd`;
}
- elsif (\$Config{'archname'} eq 'os2') {
+ elsif ('$^O' eq 'os2') {
local(\*SAVEOUT, \*READ, \*WRITE);
open SAVEOUT, '>&STDOUT' or die;
@@ -33,8 +35,8 @@ AUTOLOAD {
open STDOUT, '>&WRITE' or die;
close WRITE;
- my \$pid = system(1, \$cmd, \@_);
- die "Can't execute $cmd: \$!\n" if \$pid < 0;
+ my \$pid = system(1, '$cmd', \@_);
+ die "Can't execute $cmd: \$!\\n" if \$pid < 0;
open STDOUT, '>&SAVEOUT' or die;
close SAVEOUT;
@@ -54,9 +56,34 @@ AUTOLOAD {
}
}
else {
- open(SUBPROC, "-|")
- or exec '$cmd', \@_
- or die "Can't exec $cmd: \$!\n";
+ my \$a;
+ my \@arr = \@_;
+ if ('$^O' eq 'MSWin32') {
+ # XXX this special-casing should not be needed
+ # if we do quoting right on Windows. :-(
+ #
+ # First, escape all quotes. Cover the case where we
+ # want to pass along a quote preceded by a backslash
+ # (i.e., C<"param \\""" end">).
+ # Ugly, yup? You know, windoze.
+ # Enclose in quotes only the parameters that need it:
+ # try this: c:\> dir "/w"
+ # and this: c:\> dir /w
+ for (\@arr) {
+ s/"/\\\\"/g;
+ s/\\\\\\\\"/\\\\\\\\"""/g;
+ \$_ = qq["\$_"] if /\\s/;
+ }
+ }
+ else {
+ for (\@arr) {
+ s/(['\\\\])/\\\\\$1/g;
+ \$_ = "'\$_'";
+ }
+ }
+ push \@arr, '2>&1' if \$Shell::capture_stderr;
+ open(SUBPROC, join(' ', '$cmd', \@arr, '|'))
+ or die "Can't exec $cmd: \$!\\n";
if (wantarray) {
my \@ret = <SUBPROC>;
close SUBPROC; # XXX Oughta use a destructor.
@@ -70,7 +97,9 @@ AUTOLOAD {
}
}
}
- };
+*END*
+
+ die "$@\n" if $@;
goto &$AUTOLOAD;
}
@@ -119,8 +148,17 @@ usage should be
Larry
+If you set $Shell::capture_stderr to 1, the module will attempt to
+capture the STDERR of the process as well.
+
+The module now should work on Win32.
+
+ Jenda
+
=head1 AUTHOR
Larry Wall
+Changes by Jenda@Krynicky.cz and Dave Cottle <d.cottle@csc.canterbury.ac.nz>
+
=cut
diff --git a/contrib/perl5/lib/Term/ANSIColor.pm b/contrib/perl5/lib/Term/ANSIColor.pm
new file mode 100644
index 0000000..e7a2157
--- /dev/null
+++ b/contrib/perl5/lib/Term/ANSIColor.pm
@@ -0,0 +1,307 @@
+# Term::ANSIColor -- Color screen output using ANSI escape sequences.
+# $Id: ANSIColor.pm,v 1.1 1997/12/10 20:05:29 eagle Exp $
+#
+# Copyright 1996, 1997 by Russ Allbery <rra@stanford.edu>
+# and Zenin <zenin@best.com>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+############################################################################
+# Modules and declarations
+############################################################################
+
+package Term::ANSIColor;
+require 5.001;
+
+use strict;
+use vars qw(@ISA @EXPORT %EXPORT_TAGS $VERSION $AUTOLOAD %attributes
+ $AUTORESET $EACHLINE);
+
+use Exporter ();
+@ISA = qw(Exporter);
+@EXPORT = qw(color colored);
+%EXPORT_TAGS = (constants => [qw(CLEAR RESET BOLD UNDERLINE UNDERSCORE BLINK
+ REVERSE CONCEALED BLACK RED GREEN YELLOW
+ BLUE MAGENTA CYAN WHITE ON_BLACK ON_RED
+ ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA
+ ON_CYAN ON_WHITE)]);
+Exporter::export_ok_tags ('constants');
+
+($VERSION = (split (' ', q$Revision: 1.1 $ ))[1]) =~ s/\.(\d)$/.0$1/;
+
+
+############################################################################
+# Internal data structures
+############################################################################
+
+%attributes = ('clear' => 0,
+ 'reset' => 0,
+ 'bold' => 1,
+ 'underline' => 4,
+ 'underscore' => 4,
+ 'blink' => 5,
+ 'reverse' => 7,
+ 'concealed' => 8,
+
+ 'black' => 30, 'on_black' => 40,
+ 'red' => 31, 'on_red' => 41,
+ 'green' => 32, 'on_green' => 42,
+ 'yellow' => 33, 'on_yellow' => 43,
+ 'blue' => 34, 'on_blue' => 44,
+ 'magenta' => 35, 'on_magenta' => 45,
+ 'cyan' => 36, 'on_cyan' => 46,
+ 'white' => 37, 'on_white' => 47);
+
+
+############################################################################
+# Implementation (constant form)
+############################################################################
+
+# Time to have fun! We now want to define the constant subs, which are
+# named the same as the attributes above but in all caps. Each constant sub
+# needs to act differently depending on whether $AUTORESET is set. Without
+# autoreset:
+#
+# BLUE "text\n" ==> "\e[34mtext\n"
+#
+# If $AUTORESET is set, we should instead get:
+#
+# BLUE "text\n" ==> "\e[34mtext\n\e[0m"
+#
+# The sub also needs to handle the case where it has no arguments correctly.
+# Maintaining all of this as separate subs would be a major nightmare, as
+# well as duplicate the %attributes hash, so instead we define an AUTOLOAD
+# sub to define the constant subs on demand. To do that, we check the name
+# of the called sub against the list of attributes, and if it's an all-caps
+# version of one of them, we define the sub on the fly and then run it.
+sub AUTOLOAD {
+ my $sub;
+ ($sub = $AUTOLOAD) =~ s/^.*:://;
+ my $attr = $attributes{lc $sub};
+ if ($sub =~ /^[A-Z_]+$/ && defined $attr) {
+ $attr = "\e[" . $attr . 'm';
+ eval qq {
+ sub $AUTOLOAD {
+ if (\$AUTORESET && \@_) {
+ '$attr' . "\@_" . "\e[0m";
+ } else {
+ ('$attr' . "\@_");
+ }
+ }
+ };
+ goto &$AUTOLOAD;
+ } else {
+ die "undefined subroutine &$AUTOLOAD called";
+ }
+}
+
+
+############################################################################
+# Implementation (attribute string form)
+############################################################################
+
+# Return the escape code for a given set of color attributes.
+sub color {
+ my @codes = map { split } @_;
+ my $attribute = '';
+ foreach (@codes) {
+ $_ = lc $_;
+ unless (defined $attributes{$_}) {
+ require Carp;
+ Carp::croak ("Invalid attribute name $_");
+ }
+ $attribute .= $attributes{$_} . ';';
+ }
+ chop $attribute;
+ ($attribute ne '') ? "\e[${attribute}m" : undef;
+}
+
+# Given a string and a set of attributes, returns the string surrounded by
+# escape codes to set those attributes and then clear them at the end of the
+# string. If $EACHLINE is set, insert a reset before each occurrence of the
+# string $EACHLINE and the starting attribute code after the string
+# $EACHLINE, so that no attribute crosses line delimiters (this is often
+# desirable if the output is to be piped to a pager or some other program).
+sub colored {
+ my $string = shift;
+ if (defined $EACHLINE) {
+ my $attr = color (@_);
+ join '',
+ map { $_ && $_ ne $EACHLINE ? $attr . $_ . "\e[0m" : $_ }
+ split (/(\Q$EACHLINE\E)/, $string);
+ } else {
+ color (@_) . $string . "\e[0m";
+ }
+}
+
+
+############################################################################
+# Module return value and documentation
+############################################################################
+
+# Ensure we evaluate to true.
+1;
+__END__
+
+=head1 NAME
+
+Term::ANSIColor - Color screen output using ANSI escape sequences
+
+=head1 SYNOPSIS
+
+ use Term::ANSIColor;
+ print color 'bold blue';
+ print "This text is bold blue.\n";
+ print color 'reset';
+ print "This text is normal.\n";
+ print colored ("Yellow on magenta.\n", 'yellow on_magenta');
+ print "This text is normal.\n";
+
+ use Term::ANSIColor qw(:constants);
+ print BOLD, BLUE, "This text is in bold blue.\n", RESET;
+
+ use Term::ANSIColor qw(:constants);
+ $Term::ANSIColor::AUTORESET = 1;
+ print BOLD BLUE "This text is in bold blue.\n";
+ print "This text is normal.\n";
+
+=head1 DESCRIPTION
+
+This module has two interfaces, one through color() and colored() and the
+other through constants.
+
+color() takes any number of strings as arguments and considers them to be
+space-separated lists of attributes. It then forms and returns the escape
+sequence to set those attributes. It doesn't print it out, just returns
+it, so you'll have to print it yourself if you want to (this is so that
+you can save it as a string, pass it to something else, send it to a file
+handle, or do anything else with it that you might care to).
+
+The recognized attributes (all of which should be fairly intuitive) are
+clear, reset, bold, underline, underscore, blink, reverse, concealed,
+black, red, green, yellow, blue, magenta, on_black, on_red, on_green,
+on_yellow, on_blue, on_magenta, on_cyan, and on_white. Case is not
+significant. Underline and underscore are equivalent, as are clear and
+reset, so use whichever is the most intuitive to you. The color alone
+sets the foreground color, and on_color sets the background color.
+
+Note that attributes, once set, last until they are unset (by sending the
+attribute "reset"). Be careful to do this, or otherwise your attribute will
+last after your script is done running, and people get very annoyed at
+having their prompt and typing changed to weird colors.
+
+As an aid to help with this, colored() takes a scalar as the first
+argument and any number of attribute strings as the second argument and
+returns the scalar wrapped in escape codes so that the attributes will be
+set as requested before the string and reset to normal after the string.
+Normally, colored() just puts attribute codes at the beginning and end of
+the string, but if you set $Term::ANSIColor::EACHLINE to some string,
+that string will be considered the line delimiter and the attribute will
+be set at the beginning of each line of the passed string and reset at the
+end of each line. This is often desirable if the output is being sent to
+a program like a pager that can be confused by attributes that span lines.
+Normally you'll want to set $Term::ANSIColor::EACHLINE to C<"\n"> to use
+this feature.
+
+Alternately, if you import C<:constants>, you can use the constants CLEAR,
+RESET, BOLD, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, RED,
+GREEN, YELLOW, BLUE, MAGENTA, ON_BLACK, ON_RED, ON_GREEN, ON_YELLOW,
+ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE directly. These are the same
+as color('attribute') and can be used if you prefer typing:
+
+ print BOLD BLUE ON_WHITE "Text\n", RESET;
+
+to
+
+ print colored ("Text\n", 'bold blue on_white');
+
+When using the constants, if you don't want to have to remember to add the
+C<, RESET> at the end of each print line, you can set
+$Term::ANSIColor::AUTORESET to a true value. Then, the display mode will
+automatically be reset if there is no comma after the constant. In other
+words, with that variable set:
+
+ print BOLD BLUE "Text\n";
+
+will reset the display mode afterwards, whereas:
+
+ print BOLD, BLUE, "Text\n";
+
+will not.
+
+The subroutine interface has the advantage over the constants interface in
+that only 2 soubrutines are exported into your namespace, verses 22 in the
+constants interface. On the flip side, the constants interface has the
+advantage of better compile time error checking, since misspelled names of
+colors or attributes in calls to color() and colored() won't be caught
+until runtime whereas misspelled names of constants will be caught at
+compile time. So, polute your namespace with almost two dozen subrutines
+that you may not even use that oftin, or risk a silly bug by mistyping an
+attribute. Your choice, TMTOWTDI after all.
+
+=head1 DIAGNOSTICS
+
+=over 4
+
+=item Invalid attribute name %s
+
+You passed an invalid attribute name to either color() or colored().
+
+=item Identifier %s used only once: possible typo
+
+You probably mistyped a constant color name such as:
+
+ print FOOBAR "This text is color FOOBAR\n";
+
+It's probably better to always use commas after constant names in order to
+force the next error.
+
+=item No comma allowed after filehandle
+
+You probably mistyped a constant color name such as:
+
+ print FOOBAR, "This text is color FOOBAR\n";
+
+Generating this fatal compile error is one of the main advantages of using
+the constants interface, since you'll immediately know if you mistype a
+color name.
+
+=item Bareword %s not allowed while "strict subs" in use
+
+You probably mistyped a constant color name such as:
+
+ $Foobar = FOOBAR . "This line should be blue\n";
+
+or:
+
+ @Foobar = FOOBAR, "This line should be blue\n";
+
+This will only show up under use strict (another good reason to run under
+use strict).
+
+=back
+
+=head1 RESTRICTIONS
+
+It would be nice if one could leave off the commas around the constants
+entirely and just say:
+
+ print BOLD BLUE ON_WHITE "Text\n" RESET;
+
+but the syntax of Perl doesn't allow this. You need a comma after the
+string. (Of course, you may consider it a bug that commas between all the
+constants aren't required, in which case you may feel free to insert
+commas unless you're using $Term::ANSIColor::AUTORESET.)
+
+For easier debuging, you may prefer to always use the commas when not
+setting $Term::ANSIColor::AUTORESET so that you'll get a fatal compile
+error rather than a warning.
+
+=head1 AUTHORS
+
+Original idea (using constants) by Zenin (zenin@best.com), reimplemented
+using subs by Russ Allbery (rra@stanford.edu), and then combined with the
+original idea by Russ with input from Zenin.
+
+=cut
diff --git a/contrib/perl5/lib/Term/Cap.pm b/contrib/perl5/lib/Term/Cap.pm
index 1e95ec3..0954000 100644
--- a/contrib/perl5/lib/Term/Cap.pm
+++ b/contrib/perl5/lib/Term/Cap.pm
@@ -107,8 +107,8 @@ sub termcap_path { ## private
push(@termcap_path, $ENV{TERMCAP})
if ((exists $ENV{TERMCAP}) &&
(($^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos')
- ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/i
- : $ENV{TERMCAP} =~ /^\//));
+ ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/is
+ : $ENV{TERMCAP} =~ /^\//s));
if ((exists $ENV{TERMPATH}) && ($ENV{TERMPATH})) {
# Add the users $TERMPATH
push(@termcap_path, split(/(:|\s+)/, $ENV{TERMPATH}))
@@ -157,7 +157,7 @@ sub Tgetent { ## public -- static method
my $foo = (exists $ENV{TERMCAP} ? $ENV{TERMCAP} : '');
# $entry is the extracted termcap entry
- if (($foo !~ m:^/:) && ($foo =~ m/(^|\|)${termpat}[:|]/)) {
+ if (($foo !~ m:^/:s) && ($foo =~ m/(^|\|)${termpat}[:|]/s)) {
$entry = $foo;
}
diff --git a/contrib/perl5/lib/Term/ReadLine.pm b/contrib/perl5/lib/Term/ReadLine.pm
index e7cf00c..8bb8205 100644
--- a/contrib/perl5/lib/Term/ReadLine.pm
+++ b/contrib/perl5/lib/Term/ReadLine.pm
@@ -193,7 +193,7 @@ sub findConsole {
$console = "sys\$command";
}
- if (($^O eq 'amigaos') || ($^O eq 'beos')) {
+ if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) {
$console = undef;
}
elsif ($^O eq 'os2') {
diff --git a/contrib/perl5/lib/Test.pm b/contrib/perl5/lib/Test.pm
index 7a0e59b..c708f57 100644
--- a/contrib/perl5/lib/Test.pm
+++ b/contrib/perl5/lib/Test.pm
@@ -1,10 +1,11 @@
use strict;
package Test;
+use 5.005_64;
use Test::Harness 1.1601 ();
use Carp;
-use vars (qw($VERSION @ISA @EXPORT @EXPORT_OK $ntest $TestLevel), #public-ish
- qw($TESTOUT $ONFAIL %todo %history $planned @FAILDETAIL)); #private-ish
-$VERSION = '1.122';
+our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $ntest, $TestLevel); #public-ish
+our($TESTOUT, $ONFAIL, %todo, %history, $planned, @FAILDETAIL); #private-ish
+$VERSION = '1.13';
require Exporter;
@ISA=('Exporter');
@EXPORT=qw(&plan &ok &skip);
@@ -63,7 +64,11 @@ sub ok ($;$$) {
} else {
$expected = to_value(shift);
my ($regex,$ignore);
- if ((ref($expected)||'') eq 'Regexp') {
+ if (!defined $expected) {
+ $ok = !defined $result;
+ } elsif (!defined $result) {
+ $ok = 0;
+ } elsif ((ref($expected)||'') eq 'Regexp') {
$ok = $result =~ /$expected/;
} elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or
($ignore, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) {
@@ -94,7 +99,8 @@ sub ok ($;$$) {
}
} else {
my $prefix = "Test $ntest";
- print $TESTOUT "# $prefix got: '$result' ($context)\n";
+ print $TESTOUT "# $prefix got: ".
+ (defined $result? "'$result'":'<UNDEF>')." ($context)\n";
$prefix = ' ' x (length($prefix) - 5);
if ((ref($expected)||'') eq 'Regexp') {
$expected = 'qr/'.$expected.'/'
@@ -220,7 +226,7 @@ triggered at the end of a test run. C<onfail> is passed an array ref
of hash refs that describe each test failure. Each hash will contain
at least the following fields: C<package>, C<repetition>, and
C<result>. (The file, line, and test number are not included because
-their correspondance to a particular test is tenuous.) If the test
+their correspondence to a particular test is tenuous.) If the test
had an expected value or a diagnostic string, these will also be
included.
@@ -239,7 +245,7 @@ L<Test::Harness> and, perhaps, test coverage analysis tools.
=head1 AUTHOR
-Copyright (c) 1998 Joshua Nathaniel Pritikin. All rights reserved.
+Copyright (c) 1998-1999 Joshua Nathaniel Pritikin. All rights reserved.
This package is free software and is provided "as is" without express
or implied warranty. It may be used, redistributed and/or modified
diff --git a/contrib/perl5/lib/Test/Harness.pm b/contrib/perl5/lib/Test/Harness.pm
index 935e8f0..9902741 100644
--- a/contrib/perl5/lib/Test/Harness.pm
+++ b/contrib/perl5/lib/Test/Harness.pm
@@ -1,17 +1,19 @@
package Test::Harness;
-BEGIN {require 5.002;}
+use 5.005_64;
use Exporter;
use Benchmark;
use Config;
use FileHandle;
use strict;
-use vars qw($VERSION $verbose $switches $have_devel_corestack $curtest
- @ISA @EXPORT @EXPORT_OK);
+our($VERSION, $verbose, $switches, $have_devel_corestack, $curtest,
+ @ISA, @EXPORT, @EXPORT_OK);
$have_devel_corestack = 0;
-$VERSION = "1.1602";
+$VERSION = "1.1604";
+
+$ENV{HARNESS_ACTIVE} = 1;
# Some experimental versions of OS/2 build have broken $?
my $ignore_exitcode = $ENV{HARNESS_IGNORE_EXITCODE};
@@ -62,26 +64,46 @@ sub runtests {
# pass -I flags to children
my $old5lib = $ENV{PERL5LIB};
- local($ENV{'PERL5LIB'}) = join($Config{path_sep}, @INC);
- if ($^O eq 'VMS') { $switches =~ s/-(\S*[A-Z]\S*)/"-$1"/g }
+ # VMS has a 255-byte limit on the length of %ENV entries, so
+ # toss the ones that involve perl_root, the install location
+ # for VMS
+ my $new5lib;
+ if ($^O eq 'VMS') {
+ $new5lib = join($Config{path_sep}, grep {!/perl_root/i;} @INC);
+ $switches =~ s/-(\S*[A-Z]\S*)/"-$1"/g;
+ }
+ else {
+ $new5lib = join($Config{path_sep}, @INC);
+ }
+
+ local($ENV{'PERL5LIB'}) = $new5lib;
my @dir_files = globdir $files_in_dir if defined $files_in_dir;
my $t_start = new Benchmark;
while ($test = shift(@tests)) {
$te = $test;
chop($te);
- if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./; }
- print "$te" . '.' x (20 - length($te));
+ if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./s; }
+ my $blank = (' ' x 77);
+ my $leader = "$te" . '.' x (20 - length($te));
+ my $ml = "";
+ $ml = "\r$blank\r$leader"
+ if -t STDOUT and not $ENV{HARNESS_NOTTY} and not $verbose;
+ print $leader;
my $fh = new FileHandle;
$fh->open($test) or print "can't open $test. $!\n";
my $first = <$fh>;
my $s = $switches;
- $s .= q[ "-T"] if $first =~ /^#!.*\bperl.*-\w*T/;
+ $s .= " $ENV{'HARNESS_PERL_SWITCHES'}"
+ if exists $ENV{'HARNESS_PERL_SWITCHES'};
+ $s .= join " ", q[ "-T"], map {qq["-I$_"]} @INC
+ if $first =~ /^#!.*\bperl.*-\w*T/;
$fh->close or print "can't close $test. $!\n";
- my $cmd = ($ENV{'COMPILE_TEST'})?
-"./perl -I../lib ../utils/perlcc $test -run -verbose dcf -log ./compilelog |"
- : "$^X $s $test|";
+ my $cmd = ($ENV{'HARNESS_COMPILE_TEST'})
+ ? "./perl -I../lib ../utils/perlcc $test "
+ . "-run 2>> ./compilelog |"
+ : "$^X $s $test|";
$cmd = "MCR $cmd" if $^O eq 'VMS';
$fh->open($cmd) or print "can't run $test. $!\n";
$ok = $next = $max = 0;
@@ -89,6 +111,7 @@ sub runtests {
my %todo = ();
my $bonus = 0;
my $skipped = 0;
+ my $skip_reason;
while (<$fh>) {
if( $verbose ){
print $_;
@@ -99,26 +122,39 @@ sub runtests {
$totmax += $max;
$files++;
$next = 1;
- } elsif (/^1\.\.([0-9]+)/) {
+ } elsif (/^1\.\.([0-9]+)(\s*\#\s*[Ss]kip\S*(?>\s+)(.+))?/) {
$max = $1;
$totmax += $max;
$files++;
$next = 1;
+ $skip_reason = $3 if not $max and defined $3;
} elsif ($max && /^(not\s+)?ok\b/) {
my $this = $next;
if (/^not ok\s*(\d*)/){
$this = $1 if $1 > 0;
+ print "${ml}NOK $this" if $ml;
if (!$todo{$this}) {
push @failed, $this;
} else {
$ok++;
$totok++;
}
- } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip)?/) {
+ } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip\S*(?:(?>\s+)(.+))?)?/) {
$this = $1 if $1 > 0;
+ print "${ml}ok $this/$max" if $ml;
$ok++;
$totok++;
$skipped++ if defined $2;
+ my $reason;
+ $reason = 'unknown reason' if defined $2;
+ $reason = $3 if defined $3;
+ if (defined $reason and defined $skip_reason) {
+ # print "was: '$skip_reason' new '$reason'\n";
+ $skip_reason = 'various reasons'
+ if $skip_reason ne $reason;
+ } elsif (defined $reason) {
+ $skip_reason = $reason;
+ }
$bonus++, $totbonus++ if $todo{$this};
}
if ($this > $next) {
@@ -141,7 +177,7 @@ sub runtests {
: $wstatus >> 8);
if ($wstatus) {
my ($failed, $canon, $percent) = ('??', '??');
- printf "dubious\n\tTest returned status $estatus (wstat %d, 0x%x)\n",
+ printf "${ml}dubious\n\tTest returned status $estatus (wstat %d, 0x%x)\n",
$wstatus,$wstatus;
print "\t\t(VMS status is $estatus)\n" if $^O eq 'VMS';
if (corestatus($wstatus)) { # until we have a wait module
@@ -173,16 +209,18 @@ sub runtests {
} elsif ($ok == $max && $next == $max+1) {
if ($max and $skipped + $bonus) {
my @msg;
- push(@msg, "$skipped/$max subtest".($skipped>1?'s':'')." skipped")
+ push(@msg, "$skipped/$max skipped: $skip_reason")
if $skipped;
- push(@msg, "$bonus subtest".($bonus>1?'s':'').
- " unexpectedly succeeded")
+ push(@msg, "$bonus/$max unexpectedly succeeded")
if $bonus;
- print "ok, ".join(', ', @msg)."\n";
+ print "${ml}ok, ".join(', ', @msg)."\n";
} elsif ($max) {
- print "ok\n";
+ print "${ml}ok\n";
+ } elsif (defined $skip_reason) {
+ print "skipped: $skip_reason\n";
+ $tests_skipped++;
} else {
- print "skipping test on this platform\n";
+ print "skipped test on this platform\n";
$tests_skipped++;
}
$good++;
@@ -243,14 +281,17 @@ sub runtests {
" UNEXPECTEDLY SUCCEEDED)")
if $totbonus;
if ($tests_skipped) {
- $bonusmsg .= ", $tests_skipped test" . ($tests_skipped != 1 ? 's' : '') .
- ' skipped';
+ $bonusmsg .= ", $tests_skipped test" . ($tests_skipped != 1 ? 's' : '');
+ if ($subtests_skipped) {
+ $bonusmsg .= " and $subtests_skipped subtest"
+ . ($subtests_skipped != 1 ? 's' : '');
+ }
+ $bonusmsg .= ' skipped';
}
- if ($subtests_skipped) {
- $bonusmsg .= ($tests_skipped ? ', plus ' : ', ').
- "$subtests_skipped subtest"
- . ($subtests_skipped != 1 ? 's' : '') .
- " skipped";
+ elsif ($subtests_skipped) {
+ $bonusmsg .= ", $subtests_skipped subtest"
+ . ($subtests_skipped != 1 ? 's' : '')
+ . " skipped";
}
if ($bad == 0 && $totmax) {
print "All tests successful$bonusmsg.\n";
@@ -274,7 +315,7 @@ sub runtests {
die "Failed $bad/$total test scripts, $pct% okay.$subpct\n";
}
}
- printf("Files=%d, Tests=%d, %s\n", $files, $totmax, timestr($t_total, 'nop'));
+ printf("Files=%d, Tests=%d, %s\n", $files, $totmax, timestr($t_total, 'nop'));
return ($bad == 0 && $totmax) ;
}
@@ -408,6 +449,12 @@ variations in spacing and case) after C<ok> or C<ok NUMBER>, it is
counted as a skipped test. If the whole testscript succeeds, the
count of skipped tests is included in the generated output.
+C<Test::Harness> reports the text after C< # Skip(whatever)> as a
+reason for skipping. Similarly, one can include a similar explanation
+in a C<1..0> line emitted if the test is skipped completely:
+
+ 1..0 # Skipped: no leverage found
+
=head1 EXPORT
C<&runtests> is exported by Test::Harness per default.
@@ -445,6 +492,15 @@ above messages.
Setting C<HARNESS_IGNORE_EXITCODE> makes harness ignore the exit status
of child processes.
+Setting C<HARNESS_NOTTY> to a true value forces it to behave as though
+STDOUT were not a console. You may need to set this if you don't want
+harness to output more frequent progress messages using carriage returns.
+Some consoles may not handle carriage returns properly (which results
+in a somewhat messy output).
+
+Setting C<HARNESS_COMPILE_TEST> to a true value will make harness attempt
+to compile the test using C<perlcc> before running it.
+
If C<HARNESS_FILELEAK_IN_DIR> is set to the name of a directory, harness
will check after each test whether new files appeared in that directory,
and report them as
@@ -455,6 +511,15 @@ If relative, directory name is with respect to the current directory at
the moment runtests() was called. Putting absolute path into
C<HARNESS_FILELEAK_IN_DIR> may give more predicatable results.
+The value of C<HARNESS_PERL_SWITCHES> will be prepended to the
+switches used to invoke perl on each test. For example, setting
+C<HARNESS_PERL_SWITCHES> to "-W" will run all tests with all
+warnings enabled.
+
+Harness sets C<HARNESS_ACTIVE> before executing the individual tests.
+This allows the tests to determine if they are being executed through the
+harness or by any other means.
+
=head1 SEE ALSO
L<Test> for writing test scripts and also L<Benchmark> for the
diff --git a/contrib/perl5/lib/Text/Abbrev.pm b/contrib/perl5/lib/Text/Abbrev.pm
index ae6797c..d4f12d0 100644
--- a/contrib/perl5/lib/Text/Abbrev.pm
+++ b/contrib/perl5/lib/Text/Abbrev.pm
@@ -1,5 +1,5 @@
package Text::Abbrev;
-require 5.000;
+require 5.005; # Probably works on earlier versions too.
require Exporter;
=head1 NAME
@@ -15,7 +15,7 @@ abbrev - create an abbreviation table from a list
=head1 DESCRIPTION
Stores all unambiguous truncations of each element of LIST
-as keys key in the associative array referenced to by C<$hashref>.
+as keys in the associative array referenced by C<$hashref>.
The values are the original list elements.
=head1 EXAMPLE
@@ -34,54 +34,48 @@ The values are the original list elements.
@EXPORT = qw(abbrev);
# Usage:
-# &abbrev(*foo,LIST);
+# abbrev \%foo, LIST;
# ...
# $long = $foo{$short};
sub abbrev {
- my (%domain);
- my ($name, $ref, $glob);
+ my ($word, $hashref, $glob, %table, $returnvoid);
if (ref($_[0])) { # hash reference preferably
- $ref = shift;
- } elsif ($_[0] =~ /^\*/) { # looks like a glob (deprecated)
- $glob = shift;
- }
- my @cmp = @_;
-
- foreach $name (@_) {
- my @extra = split(//,$name);
- my $abbrev = shift(@extra);
- my $len = 1;
- my $cmp;
- WORD: foreach $cmp (@cmp) {
- next if $cmp eq $name;
- while (substr($cmp,0,$len) eq $abbrev) {
- last WORD unless @extra;
- $abbrev .= shift(@extra);
- ++$len;
+ $hashref = shift;
+ $returnvoid = 1;
+ } elsif (ref \$_[0] eq 'GLOB') { # is actually a glob (deprecated)
+ $hashref = \%{shift()};
+ $returnvoid = 1;
+ }
+ %{$hashref} = ();
+
+ WORD: foreach $word (@_) {
+ for (my $len = (length $word) - 1; $len > 0; --$len) {
+ my $abbrev = substr($word,0,$len);
+ my $seen = ++$table{$abbrev};
+ if ($seen == 1) { # We're the first word so far to have
+ # this abbreviation.
+ $hashref->{$abbrev} = $word;
+ } elsif ($seen == 2) { # We're the second word to have this
+ # abbreviation, so we can't use it.
+ delete $hashref->{$abbrev};
+ } else { # We're the third word to have this
+ # abbreviation, so skip to the next word.
+ next WORD;
}
}
- $domain{$abbrev} = $name;
- while (@extra) {
- $abbrev .= shift(@extra);
- $domain{$abbrev} = $name;
- }
}
- if ($ref) {
- %$ref = %domain;
- return;
- } elsif ($glob) { # old style
- local (*hash) = $glob;
- %hash = %domain;
- return;
+ # Non-abbreviations always get entered, even if they aren't unique
+ foreach $word (@_) {
+ $hashref->{$word} = $word;
}
+ return if $returnvoid;
if (wantarray) {
- %domain;
+ %{$hashref};
} else {
- \%domain;
+ $hashref;
}
}
1;
-
diff --git a/contrib/perl5/lib/Text/ParseWords.pm b/contrib/perl5/lib/Text/ParseWords.pm
index 065c2f7..2a6afc3 100644
--- a/contrib/perl5/lib/Text/ParseWords.pm
+++ b/contrib/perl5/lib/Text/ParseWords.pm
@@ -1,7 +1,7 @@
package Text::ParseWords;
use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE);
-$VERSION = "3.1";
+$VERSION = "3.2";
require 5.000;
@@ -49,7 +49,7 @@ sub nested_quotewords {
sub parse_line {
# We will be testing undef strings
- local($^W) = 0;
+ no warnings;
my($delimiter, $keep, $line) = @_;
my($quote, $quoted, $unquoted, $delim, $word, @pieces);
diff --git a/contrib/perl5/lib/Text/Soundex.pm b/contrib/perl5/lib/Text/Soundex.pm
index ddc758c..3079b90 100644
--- a/contrib/perl5/lib/Text/Soundex.pm
+++ b/contrib/perl5/lib/Text/Soundex.pm
@@ -5,6 +5,8 @@ require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(&soundex $soundex_nocode);
+$VERSION = '1.0';
+
# $Id: soundex.pl,v 1.2 1994/03/24 00:30:27 mike Exp $
#
# Implementation of soundex algorithm as described by Knuth in volume
diff --git a/contrib/perl5/lib/Text/Tabs.pm b/contrib/perl5/lib/Text/Tabs.pm
index acd7afb..933f917 100644
--- a/contrib/perl5/lib/Text/Tabs.pm
+++ b/contrib/perl5/lib/Text/Tabs.pm
@@ -7,7 +7,7 @@ require Exporter;
@EXPORT = qw(expand unexpand $tabstop);
use vars qw($VERSION $tabstop $debug);
-$VERSION = 96.121201;
+$VERSION = 98.112801;
use strict;
@@ -18,7 +18,7 @@ BEGIN {
sub expand
{
- my @l = @_;
+ my (@l) = @_;
for $_ (@l) {
1 while s/(^|\n)([^\t\n]*)(\t+)/
$1. $2 . (" " x
@@ -32,7 +32,7 @@ sub expand
sub unexpand
{
- my @l = @_;
+ my (@l) = @_;
my @e;
my $x;
my $line;
@@ -73,11 +73,11 @@ Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)
=head1 SYNOPSIS
-use Text::Tabs;
+ use Text::Tabs;
-$tabstop = 4;
-@lines_without_tabs = expand(@lines_with_tabs);
-@lines_with_tabs = unexpand(@lines_without_tabs);
+ $tabstop = 4;
+ @lines_without_tabs = expand(@lines_with_tabs);
+ @lines_with_tabs = unexpand(@lines_without_tabs);
=head1 DESCRIPTION
diff --git a/contrib/perl5/lib/Tie/Array.pm b/contrib/perl5/lib/Tie/Array.pm
index 3f34c3b..eb83aae 100644
--- a/contrib/perl5/lib/Tie/Array.pm
+++ b/contrib/perl5/lib/Tie/Array.pm
@@ -1,7 +1,9 @@
package Tie::Array;
-use vars qw($VERSION);
+
+use 5.005_64;
use strict;
-$VERSION = '1.00';
+use Carp;
+our $VERSION = '1.01';
# Pod documentation after __END__ below.
@@ -74,6 +76,16 @@ sub SPLICE
return @result;
}
+sub EXISTS {
+ my $pkg = ref $_[0];
+ croak "$pkg dosn't define an EXISTS method";
+}
+
+sub DELETE {
+ my $pkg = ref $_[0];
+ croak "$pkg dosn't define a DELETE method";
+}
+
package Tie::StdArray;
use vars qw(@ISA);
@ISA = 'Tie::Array';
@@ -88,6 +100,8 @@ sub POP { pop(@{$_[0]}) }
sub PUSH { my $o = shift; push(@$o,@_) }
sub SHIFT { shift(@{$_[0]}) }
sub UNSHIFT { my $o = shift; unshift(@$o,@_) }
+sub EXISTS { exists $_[0]->[$_[1]] }
+sub DELETE { delete $_[0]->[$_[1]] }
sub SPLICE
{
@@ -112,15 +126,17 @@ Tie::Array - base class for tied arrays
package NewArray;
use Tie::Array;
@ISA = ('Tie::Array');
-
+
# mandatory methods
sub TIEARRAY { ... }
sub FETCH { ... }
sub FETCHSIZE { ... }
-
+
sub STORE { ... } # mandatory if elements writeable
sub STORESIZE { ... } # mandatory if elements can be added/deleted
-
+ sub EXISTS { ... } # mandatory if exists() expected to work
+ sub DELETE { ... } # mandatory if delete() expected to work
+
# optional methods - for efficiency
sub CLEAR { ... }
sub PUSH { ... }
@@ -133,7 +149,7 @@ Tie::Array - base class for tied arrays
package NewStdArray;
use Tie::Array;
-
+
@ISA = ('Tie::StdArray');
# all methods provided by default
@@ -150,9 +166,11 @@ Tie::Array - base class for tied arrays
This module provides methods for array-tying classes. See
L<perltie> for a list of the functions required in order to tie an array
-to a package. The basic B<Tie::Array> package provides stub C<DELETE>
-and C<EXTEND> methods, and implementations of C<PUSH>, C<POP>, C<SHIFT>,
-C<UNSHIFT>, C<SPLICE> and C<CLEAR> in terms of basic C<FETCH>, C<STORE>,
+to a package. The basic B<Tie::Array> package provides stub C<DESTROY>,
+and C<EXTEND> methods that do nothing, stub C<DELETE> and C<EXISTS>
+methods that croak() if the delete() or exists() builtins are ever called
+on the tied array, and implementations of C<PUSH>, C<POP>, C<SHIFT>,
+C<UNSHIFT>, C<SPLICE> and C<CLEAR> in terms of basic C<FETCH>, C<STORE>,
C<FETCHSIZE>, C<STORESIZE>.
The B<Tie::StdArray> package provides efficient methods required for tied arrays
@@ -203,6 +221,18 @@ deleted.
Informative call that array is likely to grow to have I<count> entries.
Can be used to optimize allocation. This method need do nothing.
+=item EXISTS this, key
+
+Verify that the element at index I<key> exists in the tied array I<this>.
+
+The B<Tie::Array> implementation is a stub that simply croaks.
+
+=item DELETE this, key
+
+Delete the element at index I<key> from the tied array I<this>.
+
+The B<Tie::Array> implementation is a stub that simply croaks.
+
=item CLEAR this
Clear (remove, delete, ...) all values from the tied array associated with
diff --git a/contrib/perl5/lib/Tie/Handle.pm b/contrib/perl5/lib/Tie/Handle.pm
index c755053..588ecea 100644
--- a/contrib/perl5/lib/Tie/Handle.pm
+++ b/contrib/perl5/lib/Tie/Handle.pm
@@ -1,22 +1,25 @@
package Tie::Handle;
+use 5.005_64;
+our $VERSION = '1.0';
+
=head1 NAME
-Tie::Handle - base class definitions for tied handles
+Tie::Handle, Tie::StdHandle - base class definitions for tied handles
=head1 SYNOPSIS
package NewHandle;
require Tie::Handle;
-
+
@ISA = (Tie::Handle);
-
+
sub READ { ... } # Provide a needed method
sub TIEHANDLE { ... } # Overrides inherited method
-
-
+
+
package main;
-
+
tie *FH, 'NewHandle';
=head1 DESCRIPTION
@@ -24,9 +27,7 @@ Tie::Handle - base class definitions for tied handles
This module provides some skeletal methods for handle-tying classes. See
L<perltie> for a list of the functions required in tying a handle to a package.
The basic B<Tie::Handle> package provides a C<new> method, as well as methods
-C<TIESCALAR>, C<FETCH> and C<STORE>. The C<new> method is provided as a means
-of grandfathering, for classes that forget to provide their own C<TIESCALAR>
-method.
+C<TIEHANDLE>, C<PRINT>, C<PRINTF> and C<GETC>.
For developers wishing to write their own tied-handle classes, the methods
are summarized below. The L<perltie> section not only documents these, but
@@ -65,6 +66,32 @@ Read a single line
Get a single character
+=item CLOSE this
+
+Close the handle
+
+=item OPEN this, filename
+
+(Re-)open the handle
+
+=item BINMODE this
+
+Specify content is binary
+
+=item EOF this
+
+Test for end of file.
+
+=item TELL this
+
+Return position in the file.
+
+=item SEEK this, offset, whence
+
+Position the file.
+
+Test for end of file.
+
=item DESTROY this
Free the storage associated with the tied handle referenced by I<this>.
@@ -81,6 +108,7 @@ The L<perltie> section contains an example of tying handles.
=cut
use Carp;
+use warnings::register;
sub new {
my $pkg = shift;
@@ -92,8 +120,8 @@ sub new {
sub TIEHANDLE {
my $pkg = shift;
if (defined &{"{$pkg}::new"}) {
- carp "WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing"
- if $^W;
+ warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing"
+ if warnings::enabled();
$pkg->new(@_);
}
else {
@@ -117,7 +145,7 @@ sub PRINTF {
my $self = shift;
if($self->can('WRITE') != \&WRITE) {
- my $buf = sprintf(@_);
+ my $buf = sprintf(shift,@_);
$self->WRITE($buf,length($buf),0);
}
else {
@@ -156,6 +184,43 @@ sub WRITE {
sub CLOSE {
my $pkg = ref $_[0];
croak "$pkg doesn't define a CLOSE method";
+}
+
+package Tie::StdHandle;
+our @ISA = 'Tie::Handle';
+use Carp;
+
+sub TIEHANDLE
+{
+ my $class = shift;
+ my $fh = do { \local *HANDLE};
+ bless $fh,$class;
+ $fh->OPEN(@_) if (@_);
+ return $fh;
+}
+
+sub EOF { eof($_[0]) }
+sub TELL { tell($_[0]) }
+sub FILENO { fileno($_[0]) }
+sub SEEK { seek($_[0],$_[1],$_[2]) }
+sub CLOSE { close($_[0]) }
+sub BINMODE { binmode($_[0]) }
+
+sub OPEN
+{
+ $_[0]->CLOSE if defined($_[0]->FILENO);
+ open($_[0],$_[1]);
+}
+
+sub READ { read($_[0],$_[1],$_[2]) }
+sub READLINE { my $fh = $_[0]; <$fh> }
+sub GETC { getc($_[0]) }
+
+sub WRITE
+{
+ my $fh = $_[0];
+ print $fh substr($_[1],0,$_[2])
}
+
1;
diff --git a/contrib/perl5/lib/Tie/Hash.pm b/contrib/perl5/lib/Tie/Hash.pm
index 2902efb..c6ec3d4 100644
--- a/contrib/perl5/lib/Tie/Hash.pm
+++ b/contrib/perl5/lib/Tie/Hash.pm
@@ -73,6 +73,8 @@ Return the next key for the hash.
Verify that I<key> exists with the tied hash I<this>.
+The B<Tie::Hash> implementation is a stub that simply croaks.
+
=item DELETE this, key
Delete the key I<key> from the tied hash I<this>.
@@ -100,6 +102,7 @@ good working examples.
=cut
use Carp;
+use warnings::register;
sub new {
my $pkg = shift;
@@ -111,8 +114,8 @@ sub new {
sub TIEHASH {
my $pkg = shift;
if (defined &{"${pkg}::new"}) {
- carp "WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing"
- if $^W;
+ warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing"
+ if warnings::enabled();
$pkg->new(@_);
}
else {
diff --git a/contrib/perl5/lib/Tie/RefHash.pm b/contrib/perl5/lib/Tie/RefHash.pm
index 66de257..ffa9eb2 100644
--- a/contrib/perl5/lib/Tie/RefHash.pm
+++ b/contrib/perl5/lib/Tie/RefHash.pm
@@ -39,11 +39,11 @@ see the C<tie> entry in perlfunc(1) and perltie(1) for more information.
=head1 AUTHOR
-Gurusamy Sarathy gsar@umich.edu
+Gurusamy Sarathy gsar@activestate.com
=head1 VERSION
-Version 1.2 15 Dec 1996
+Version 1.21 22 Jun 1999
=head1 SEE ALSO
@@ -94,7 +94,8 @@ sub EXISTS {
sub FIRSTKEY {
my $s = shift;
- my $a = scalar(keys %{$s->[0]}) + scalar(keys %{$s->[1]});
+ keys %{$s->[0]}; # reset iterator
+ keys %{$s->[1]}; # reset iterator
$s->[2] = 0;
$s->NEXTKEY;
}
diff --git a/contrib/perl5/lib/Tie/Scalar.pm b/contrib/perl5/lib/Tie/Scalar.pm
index ef27dc1..0c67590 100644
--- a/contrib/perl5/lib/Tie/Scalar.pm
+++ b/contrib/perl5/lib/Tie/Scalar.pm
@@ -8,24 +8,24 @@ Tie::Scalar, Tie::StdScalar - base class definitions for tied scalars
package NewScalar;
require Tie::Scalar;
-
+
@ISA = (Tie::Scalar);
-
+
sub FETCH { ... } # Provide a needed method
sub TIESCALAR { ... } # Overrides inherited method
-
-
+
+
package NewStdScalar;
require Tie::Scalar;
-
+
@ISA = (Tie::StdScalar);
-
+
# All methods provided by default, so define only what needs be overridden
sub FETCH { ... }
-
-
+
+
package main;
-
+
tie $new_scalar, 'NewScalar';
tie $new_std_scalar, 'NewStdScalar';
@@ -79,6 +79,7 @@ process IDs with priority.
=cut
use Carp;
+use warnings::register;
sub new {
my $pkg = shift;
@@ -90,8 +91,8 @@ sub new {
sub TIESCALAR {
my $pkg = shift;
if (defined &{"{$pkg}::new"}) {
- carp "WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing"
- if $^W;
+ warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing"
+ if warnings::enabled();
$pkg->new(@_);
}
else {
diff --git a/contrib/perl5/lib/Time/Local.pm b/contrib/perl5/lib/Time/Local.pm
index b2fba7c..a480884 100644
--- a/contrib/perl5/lib/Time/Local.pm
+++ b/contrib/perl5/lib/Time/Local.pm
@@ -3,60 +3,44 @@ require 5.000;
require Exporter;
use Carp;
-@ISA = qw(Exporter);
-@EXPORT = qw(timegm timelocal);
+@ISA = qw( Exporter );
+@EXPORT = qw( timegm timelocal );
+@EXPORT_OK = qw( timegm_nocheck timelocal_nocheck );
-=head1 NAME
-
-Time::Local - efficiently compute time from local and GMT time
-
-=head1 SYNOPSIS
-
- $time = timelocal($sec,$min,$hours,$mday,$mon,$year);
- $time = timegm($sec,$min,$hours,$mday,$mon,$year);
-
-=head1 DESCRIPTION
-
-These routines are quite efficient and yet are always guaranteed to
-agree with localtime() and gmtime(), the most notable points being
-that year is year-1900 and month is 0..11. We manage this by caching
-the start times of any months we've seen before. If we know the start
-time of the month, we can always calculate any time within the month.
-The start times themselves are guessed by successive approximation
-starting at the current time, since most dates seen in practice are
-close to the current date. Unlike algorithms that do a binary search
-(calling gmtime once for each bit of the time value, resulting in 32
-calls), this algorithm calls it at most 6 times, and usually only once
-or twice. If you hit the month cache, of course, it doesn't call it
-at all.
-
-timelocal is implemented using the same cache. We just assume that we're
-translating a GMT time, and then fudge it when we're done for the timezone
-and daylight savings arguments. The timezone is determined by examining
-the result of localtime(0) when the package is initialized. The daylight
-savings offset is currently assumed to be one hour.
-
-Both routines return -1 if the integer limit is hit. I.e. for dates
-after the 1st of January, 2038 on most machines.
-
-=cut
-
-BEGIN {
+# Set up constants
$SEC = 1;
$MIN = 60 * $SEC;
$HR = 60 * $MIN;
$DAY = 24 * $HR;
- $epoch = (localtime(2*$DAY))[5]; # Allow for bugs near localtime == 0.
+# Determine breakpoint for rolling century
+ my $thisYear = (localtime())[5];
+ $nextCentury = int($thisYear / 100) * 100;
+ $breakpoint = ($thisYear + 50) % 100;
+ $nextCentury += 100 if $breakpoint < 50;
- $YearFix = ((gmtime(946684800))[5] == 100) ? 100 : 0;
+my %options;
+sub timegm {
+ my (@date) = @_;
+ if ($date[5] > 999) {
+ $date[5] -= 1900;
+ }
+ elsif ($date[5] >= 0 && $date[5] < 100) {
+ $date[5] -= 100 if $date[5] > $breakpoint;
+ $date[5] += $nextCentury;
+ }
+ $ym = pack(C2, @date[5,4]);
+ $cheat = $cheat{$ym} || &cheat(@date);
+ $cheat
+ + $date[0] * $SEC
+ + $date[1] * $MIN
+ + $date[2] * $HR
+ + ($date[3]-1) * $DAY;
}
-sub timegm {
- $ym = pack(C2, @_[5,4]);
- $cheat = $cheat{$ym} || &cheat;
- return -1 if $cheat<0 and $^O ne 'VMS';
- $cheat + $_[0] * $SEC + $_[1] * $MIN + $_[2] * $HR + ($_[3]-1) * $DAY;
+sub timegm_nocheck {
+ local $options{no_range_check} = 1;
+ &timegm;
}
sub timelocal {
@@ -66,16 +50,15 @@ sub timelocal {
my (@lt) = localtime($t);
my (@gt) = gmtime($t);
if ($t < $DAY and ($lt[5] >= 70 or $gt[5] >= 70 )) {
- # Wrap error, too early a date
- # Try a safer date
- $tt = $DAY;
- @lt = localtime($tt);
- @gt = gmtime($tt);
+ # Wrap error, too early a date
+ # Try a safer date
+ $tt += $DAY;
+ @lt = localtime($tt);
+ @gt = gmtime($tt);
}
my $tzsec = ($gt[1] - $lt[1]) * $MIN + ($gt[2] - $lt[2]) * $HR;
- my($lday,$gday) = ($lt[7],$gt[7]);
if($lt[5] > $gt[5]) {
$tzsec -= $DAY;
}
@@ -89,25 +72,28 @@ sub timelocal {
$tzsec += $HR if($lt[8]);
$time = $t + $tzsec;
- return -1 if $cheat<0 and $^O ne 'VMS';
@test = localtime($time + ($tt - $t));
$time -= $HR if $test[2] != $_[2];
$time;
}
+sub timelocal_nocheck {
+ local $options{no_range_check} = 1;
+ &timelocal;
+}
+
sub cheat {
$year = $_[5];
- $year -= 1900
- if $year > 1900;
$month = $_[4];
- croak "Month '$month' out of range 0..11" if $month > 11 || $month < 0;
- croak "Day '$_[3]' out of range 1..31" if $_[3] > 31 || $_[3] < 1;
- croak "Hour '$_[2]' out of range 0..23" if $_[2] > 23 || $_[2] < 0;
- croak "Minute '$_[1]' out of range 0..59" if $_[1] > 59 || $_[1] < 0;
- croak "Second '$_[0]' out of range 0..59" if $_[0] > 59 || $_[0] < 0;
+ unless ($options{no_range_check}) {
+ croak "Month '$month' out of range 0..11" if $month > 11 || $month < 0;
+ croak "Day '$_[3]' out of range 1..31" if $_[3] > 31 || $_[3] < 1;
+ croak "Hour '$_[2]' out of range 0..23" if $_[2] > 23 || $_[2] < 0;
+ croak "Minute '$_[1]' out of range 0..59" if $_[1] > 59 || $_[1] < 0;
+ croak "Second '$_[0]' out of range 0..59" if $_[0] > 59 || $_[0] < 0;
+ }
$guess = $^T;
@g = gmtime($guess);
- $year += $YearFix if $year < $epoch;
$lastguess = "";
$counter = 0;
while ($diff = $year - $g[5]) {
@@ -115,7 +101,8 @@ sub cheat {
$guess += $diff * (363 * $DAY);
@g = gmtime($guess);
if (($thisguess = "@g") eq $lastguess){
- return -1; #date beyond this machine's integer limit
+ croak "Can't handle date (".join(", ",@_).")";
+ #date beyond this machine's integer limit
}
$lastguess = $thisguess;
}
@@ -124,13 +111,15 @@ sub cheat {
$guess += $diff * (27 * $DAY);
@g = gmtime($guess);
if (($thisguess = "@g") eq $lastguess){
- return -1; #date beyond this machine's integer limit
+ croak "Can't handle date (".join(", ",@_).")";
+ #date beyond this machine's integer limit
}
$lastguess = $thisguess;
}
@gfake = gmtime($guess-1); #still being sceptic
if ("@gfake" eq $lastguess){
- return -1; #date beyond this machine's integer limit
+ croak "Can't handle date (".join(", ",@_).")";
+ #date beyond this machine's integer limit
}
$g[3]--;
$guess -= $g[0] * $SEC + $g[1] * $MIN + $g[2] * $HR + $g[3] * $DAY;
@@ -138,3 +127,120 @@ sub cheat {
}
1;
+
+__END__
+
+=head1 NAME
+
+Time::Local - efficiently compute time from local and GMT time
+
+=head1 SYNOPSIS
+
+ $time = timelocal($sec,$min,$hours,$mday,$mon,$year);
+ $time = timegm($sec,$min,$hours,$mday,$mon,$year);
+
+=head1 DESCRIPTION
+
+These routines are the inverse of built-in perl fuctions localtime()
+and gmtime(). They accept a date as a six-element array, and return
+the corresponding time(2) value in seconds since the Epoch (Midnight,
+January 1, 1970). This value can be positive or negative.
+
+It is worth drawing particular attention to the expected ranges for
+the values provided. While the day of the month is expected to be in
+the range 1..31, the month should be in the range 0..11.
+This is consistent with the values returned from localtime() and gmtime().
+
+The timelocal() and timegm() functions perform range checking on the
+input $sec, $min, $hours, $mday, and $mon values by default. If you'd
+rather they didn't, you can explicitly import the timelocal_nocheck()
+and timegm_nocheck() functions.
+
+ use Time::Local 'timelocal_nocheck';
+
+ {
+ # The 365th day of 1999
+ print scalar localtime timelocal_nocheck 0,0,0,365,0,99;
+
+ # The twenty thousandth day since 1970
+ print scalar localtime timelocal_nocheck 0,0,0,20000,0,70;
+
+ # And even the 10,000,000th second since 1999!
+ print scalar localtime timelocal_nocheck 10000000,0,0,1,0,99;
+ }
+
+Your mileage may vary when trying these with minutes and hours,
+and it doesn't work at all for months.
+
+Strictly speaking, the year should also be specified in a form consistent
+with localtime(), i.e. the offset from 1900.
+In order to make the interpretation of the year easier for humans,
+however, who are more accustomed to seeing years as two-digit or four-digit
+values, the following conventions are followed:
+
+=over 4
+
+=item *
+
+Years greater than 999 are interpreted as being the actual year,
+rather than the offset from 1900. Thus, 1963 would indicate the year
+Martin Luther King won the Nobel prize, not the year 2863.
+
+=item *
+
+Years in the range 100..999 are interpreted as offset from 1900,
+so that 112 indicates 2012. This rule also applies to years less than zero
+(but see note below regarding date range).
+
+=item *
+
+Years in the range 0..99 are interpreted as shorthand for years in the
+rolling "current century," defined as 50 years on either side of the current
+year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045,
+but 55 would refer to 1955. Twenty years from now, 55 would instead refer
+to 2055. This is messy, but matches the way people currently think about
+two digit dates. Whenever possible, use an absolute four digit year instead.
+
+=back
+
+The scheme above allows interpretation of a wide range of dates, particularly
+if 4-digit years are used.
+
+Please note, however, that the range of dates that can be actually be handled
+depends on the size of an integer (time_t) on a given platform.
+Currently, this is 32 bits for most systems, yielding an approximate range
+from Dec 1901 to Jan 2038.
+
+Both timelocal() and timegm() croak if given dates outside the supported
+range.
+
+=head1 IMPLEMENTATION
+
+These routines are quite efficient and yet are always guaranteed to agree
+with localtime() and gmtime(). We manage this by caching the start times
+of any months we've seen before. If we know the start time of the month,
+we can always calculate any time within the month. The start times
+themselves are guessed by successive approximation starting at the
+current time, since most dates seen in practice are close to the
+current date. Unlike algorithms that do a binary search (calling gmtime
+once for each bit of the time value, resulting in 32 calls), this algorithm
+calls it at most 6 times, and usually only once or twice. If you hit
+the month cache, of course, it doesn't call it at all.
+
+timelocal() is implemented using the same cache. We just assume that we're
+translating a GMT time, and then fudge it when we're done for the timezone
+and daylight savings arguments. Note that the timezone is evaluated for
+each date because countries occasionally change their official timezones.
+Assuming that localtime() corrects for these changes, this routine will
+also be correct. The daylight savings offset is currently assumed
+to be one hour.
+
+=head1 BUGS
+
+The whole scheme for interpreting two-digit years can be considered a bug.
+
+Note that the cache currently handles only years from 1900 through 2155.
+
+The proclivity to croak() is probably a bug.
+
+=cut
diff --git a/contrib/perl5/lib/Time/gmtime.pm b/contrib/perl5/lib/Time/gmtime.pm
index 9b823f6..6ff4bc8 100644
--- a/contrib/perl5/lib/Time/gmtime.pm
+++ b/contrib/perl5/lib/Time/gmtime.pm
@@ -2,9 +2,10 @@ package Time::gmtime;
use strict;
use Time::tm;
+use 5.005_64;
+our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
BEGIN {
use Exporter ();
- use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
@ISA = qw(Exporter Time::tm);
@EXPORT = qw(gmtime gmctime);
@EXPORT_OK = qw(
diff --git a/contrib/perl5/lib/Time/localtime.pm b/contrib/perl5/lib/Time/localtime.pm
index 18a36c7..0ca07af 100644
--- a/contrib/perl5/lib/Time/localtime.pm
+++ b/contrib/perl5/lib/Time/localtime.pm
@@ -2,9 +2,10 @@ package Time::localtime;
use strict;
use Time::tm;
-BEGIN {
+use 5.005_64;
+our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
+BEGIN {
use Exporter ();
- use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
@ISA = qw(Exporter Time::tm);
@EXPORT = qw(localtime ctime);
@EXPORT_OK = qw(
diff --git a/contrib/perl5/lib/UNIVERSAL.pm b/contrib/perl5/lib/UNIVERSAL.pm
index dc02423..f2f1fe9 100644
--- a/contrib/perl5/lib/UNIVERSAL.pm
+++ b/contrib/perl5/lib/UNIVERSAL.pm
@@ -62,19 +62,23 @@ The C<isa> and C<can> methods can also be called as subroutines
=item UNIVERSAL::isa ( VAL, TYPE )
-C<isa> returns I<true> if the first argument is a reference and either
-of the following statements is true.
+C<isa> returns I<true> if one of the following statements is true.
=over 8
-=item
+=item *
-C<VAL> is a blessed reference and is blessed into package C<TYPE>
-or inherits from package C<TYPE>
+C<VAL> is a reference blessed into either package C<TYPE> or a package
+which inherits from package C<TYPE>.
-=item
+=item *
-C<VAL> is a reference to a C<TYPE> of perl variable (er 'HASH')
+C<VAL> is a reference to a C<TYPE> of Perl variable (e.g. 'HASH').
+
+=item *
+
+C<VAL> is the name of a package that inherits from (or is itself)
+package C<TYPE>.
=back
diff --git a/contrib/perl5/lib/User/grent.pm b/contrib/perl5/lib/User/grent.pm
index e4e226d..95e4189 100644
--- a/contrib/perl5/lib/User/grent.pm
+++ b/contrib/perl5/lib/User/grent.pm
@@ -1,9 +1,10 @@
package User::grent;
use strict;
+use 5.005_64;
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(getgrent getgrgid getgrnam getgr);
@EXPORT_OK = qw($gr_name $gr_gid $gr_passwd $gr_mem @gr_members);
%EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
diff --git a/contrib/perl5/lib/User/pwent.pm b/contrib/perl5/lib/User/pwent.pm
index bb2dace..8c05926 100644
--- a/contrib/perl5/lib/User/pwent.pm
+++ b/contrib/perl5/lib/User/pwent.pm
@@ -1,50 +1,179 @@
package User::pwent;
+
+use 5.006;
+
use strict;
+use warnings;
+
+use Config;
+use Carp;
-BEGIN {
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+BEGIN {
use Exporter ();
- use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
@EXPORT = qw(getpwent getpwuid getpwnam getpw);
@EXPORT_OK = qw(
- $pw_name $pw_passwd $pw_uid
- $pw_gid $pw_quota $pw_comment
- $pw_gecos $pw_dir $pw_shell
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
+ pw_has
+
+ $pw_name $pw_passwd $pw_uid $pw_gid
+ $pw_gecos $pw_dir $pw_shell
+ $pw_expire $pw_change $pw_class
+ $pw_age
+ $pw_quota $pw_comment
+ $pw_expire
+
+ );
+ %EXPORT_TAGS = (
+ FIELDS => [ grep(/^\$pw_/, @EXPORT_OK), @EXPORT ],
+ ALL => [ @EXPORT, @EXPORT_OK ],
+ );
}
-use vars @EXPORT_OK;
+use vars grep /^\$pw_/, @EXPORT_OK;
+
+#
+# XXX: these mean somebody hacked this module's source
+# without understanding the underlying assumptions.
+#
+my $IE = "[INTERNAL ERROR]";
# Class::Struct forbids use of @ISA
sub import { goto &Exporter::import }
use Class::Struct qw(struct);
struct 'User::pwent' => [
- name => '$',
- passwd => '$',
- uid => '$',
- gid => '$',
- quota => '$',
- comment => '$',
- gecos => '$',
- dir => '$',
- shell => '$',
+ name => '$', # pwent[0]
+ passwd => '$', # pwent[1]
+ uid => '$', # pwent[2]
+ gid => '$', # pwent[3]
+
+ # you'll only have one/none of these three
+ change => '$', # pwent[4]
+ age => '$', # pwent[4]
+ quota => '$', # pwent[4]
+
+ # you'll only have one/none of these two
+ comment => '$', # pwent[5]
+ class => '$', # pwent[5]
+
+ # you might not have this one
+ gecos => '$', # pwent[6]
+
+ dir => '$', # pwent[7]
+ shell => '$', # pwent[8]
+
+ # you might not have this one
+ expire => '$', # pwent[9]
+
];
-sub populate (@) {
+
+# init our groks hash to be true if the built platform knew how
+# to do each struct pwd field that perl can ever under any circumstances
+# know about. we do not use /^pw_?/, but just the tails.
+sub _feature_init {
+ our %Groks; # whether build system knew how to do this feature
+ for my $feep ( qw{
+ pwage pwchange pwclass pwcomment
+ pwexpire pwgecos pwpasswd pwquota
+ }
+ )
+ {
+ my $short = $feep =~ /^pw(.*)/
+ ? $1
+ : do {
+ # not cluck, as we know we called ourselves,
+ # and a confession is probably imminent anyway
+ warn("$IE $feep is a funny struct pwd field");
+ $feep;
+ };
+
+ exists $Config{ "d_" . $feep }
+ || confess("$IE Configure doesn't d_$feep");
+ $Groks{$short} = defined $Config{ "d_" . $feep };
+ }
+ # assume that any that are left are always there
+ for my $feep (grep /^\$pw_/s, @EXPORT_OK) {
+ $feep =~ /^\$pw_(.*)/;
+ $Groks{$1} = 1 unless defined $Groks{$1};
+ }
+}
+
+# With arguments, reports whether one or more fields are all implemented
+# in the build machine's struct pwd pw_*. May be whitespace separated.
+# We do not use /^pw_?/, just the tails.
+#
+# Without arguments, returns the list of fields implemented on build
+# machine, space separated in scalar context.
+#
+# Takes exception to being asked whether this machine's struct pwd has
+# a field that Perl never knows how to provide under any circumstances.
+# If the module does this idiocy to itself, the explosion is noisier.
+#
+sub pw_has {
+ our %Groks; # whether build system knew how to do this feature
+ my $cando = 1;
+ my $sploder = caller() ne __PACKAGE__
+ ? \&croak
+ : sub { confess("$IE @_") };
+ if (@_ == 0) {
+ my @valid = sort grep { $Groks{$_} } keys %Groks;
+ return wantarray ? @valid : "@valid";
+ }
+ for my $feep (map { split } @_) {
+ defined $Groks{$feep}
+ || $sploder->("$feep is never a valid struct pwd field");
+ $cando &&= $Groks{$feep};
+ }
+ return $cando;
+}
+
+sub _populate (@) {
return unless @_;
my $pwob = new();
- ( $pw_name, $pw_passwd, $pw_uid,
- $pw_gid, $pw_quota, $pw_comment,
- $pw_gecos, $pw_dir, $pw_shell, ) = @$pwob = @_;
+ # Any that haven't been pw_had are assumed on "all" platforms of
+ # course, this may not be so, but you can't get here otherwise,
+ # since the underlying core call already took exception to your
+ # impudence.
+
+ $pw_name = $pwob->name ( $_[0] );
+ $pw_passwd = $pwob->passwd ( $_[1] ) if pw_has("passwd");
+ $pw_uid = $pwob->uid ( $_[2] );
+ $pw_gid = $pwob->gid ( $_[3] );
+
+ if (pw_has("change")) {
+ $pw_change = $pwob->change ( $_[4] );
+ }
+ elsif (pw_has("age")) {
+ $pw_age = $pwob->age ( $_[4] );
+ }
+ elsif (pw_has("quota")) {
+ $pw_quota = $pwob->quota ( $_[4] );
+ }
+
+ if (pw_has("class")) {
+ $pw_class = $pwob->class ( $_[5] );
+ }
+ elsif (pw_has("comment")) {
+ $pw_comment = $pwob->comment( $_[5] );
+ }
+
+ $pw_gecos = $pwob->gecos ( $_[6] ) if pw_has("gecos");
+
+ $pw_dir = $pwob->dir ( $_[7] );
+ $pw_shell = $pwob->shell ( $_[8] );
+
+ $pw_expire = $pwob->expire ( $_[9] ) if pw_has("expire");
return $pwob;
-}
+}
-sub getpwent ( ) { populate(CORE::getpwent()) }
-sub getpwnam ($) { populate(CORE::getpwnam(shift)) }
-sub getpwuid ($) { populate(CORE::getpwuid(shift)) }
-sub getpw ($) { ($_[0] =~ /^\d+/) ? &getpwuid : &getpwnam }
+sub getpwent ( ) { _populate(CORE::getpwent()) }
+sub getpwnam ($) { _populate(CORE::getpwnam(shift)) }
+sub getpwuid ($) { _populate(CORE::getpwuid(shift)) }
+sub getpw ($) { ($_[0] =~ /^\d+\z/s) ? &getpwuid : &getpwnam }
+
+_feature_init();
1;
__END__
@@ -56,42 +185,95 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions
=head1 SYNOPSIS
use User::pwent;
- $pw = getpwnam('daemon') or die "No daemon user";
- if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?$# ) {
+ $pw = getpwnam('daemon') || die "No daemon user";
+ if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?\z#s ) {
print "gid 1 on root dir";
- }
+ }
+
+ $real_shell = $pw->shell || '/bin/sh';
+
+ for (($fullname, $office, $workphone, $homephone) =
+ split /\s*,\s*/, $pw->gecos)
+ {
+ s/&/ucfirst(lc($pw->name))/ge;
+ }
use User::pwent qw(:FIELDS);
- getpwnam('daemon') or die "No daemon user";
- if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?$# ) {
+ getpwnam('daemon') || die "No daemon user";
+ if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?\z#s ) {
print "gid 1 on root dir";
- }
+ }
$pw = getpw($whoever);
+ use User::pwent qw/:DEFAULT pw_has/;
+ if (pw_has(qw[gecos expire quota])) { .... }
+ if (pw_has("name uid gid passwd")) { .... }
+ print "Your struct pwd has: ", scalar pw_has(), "\n";
+
=head1 DESCRIPTION
This module's default exports override the core getpwent(), getpwuid(),
and getpwnam() functions, replacing them with versions that return
-"User::pwent" objects. This object has methods that return the similarly
-named structure field name from the C's passwd structure from F<pwd.h>;
-namely name, passwd, uid, gid, quota, comment, gecos, dir, and shell.
+C<User::pwent> objects. This object has methods that return the
+similarly named structure field name from the C's passwd structure
+from F<pwd.h>, stripped of their leading "pw_" parts, namely C<name>,
+C<passwd>, C<uid>, C<gid>, C<change>, C<age>, C<quota>, C<comment>,
+C<class>, C<gecos>, C<dir>, C<shell>, and C<expire>. The C<passwd>,
+C<gecos>, and C<shell> fields are tainted when running in taint mode.
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as
-variables named with a preceding C<pw_> in front their method names.
-Thus, C<$passwd_obj-E<gt>shell()> corresponds to $pw_shell if you import
-the fields.
+You may also import all the structure fields directly into your
+namespace as regular variables using the :FIELDS import tag. (Note
+that this still overrides your core functions.) Access these fields
+as variables named with a preceding C<pw_> in front their method
+names. Thus, C<< $passwd_obj->shell >> corresponds to $pw_shell
+if you import the fields.
The getpw() function is a simple front-end that forwards
a numeric argument to getpwuid() and the rest to getpwnam().
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
+To access this functionality without the core overrides, pass the
+C<use> an empty import list, and then access function functions
+with their full qualified names. The built-ins are always still
+available via the C<CORE::> pseudo-package.
+
+=head2 System Specifics
+
+Perl believes that no machine ever has more than one of C<change>,
+C<age>, or C<quota> implemented, nor more than one of either
+C<comment> or C<class>. Some machines do not support C<expire>,
+C<gecos>, or allegedly, C<passwd>. You may call these methods
+no matter what machine you're on, but they return C<undef> if
+unimplemented.
+
+You may ask whether one of these was implemented on the system Perl
+was built on by asking the importable C<pw_has> function about them.
+This function returns true if all parameters are supported fields
+on the build platform, false if one or more were not, and raises
+an exception if you asked about a field that Perl never knows how
+to provide. Parameters may be in a space-separated string, or as
+separate arguments. If you pass no parameters, the function returns
+the list of C<struct pwd> fields supported by your build platform's
+C library, as a list in list context, or a space-separated string
+in scalar context. Note that just because your C library had
+a field doesn't necessarily mean that it's fully implemented on
+that system.
+
+Interpretation of the C<gecos> field varies between systems, but
+traditionally holds 4 comma-separated fields containing the user's
+full name, office location, work phone number, and home phone number.
+An C<&> in the gecos field should be replaced by the user's properly
+capitalized login C<name>. The C<shell> field, if blank, must be
+assumed to be F</bin/sh>. Perl does not do this for you. The
+C<passwd> is one-way hashed garble, not clear text, and may not be
+unhashed save by brute-force guessing. Secure systems use more a
+more secure hashing than DES. On systems supporting shadow password
+systems, Perl automatically returns the shadow password entry when
+called by a suitably empowered user, even if your underlying
+vendor-provided C library was too short-sighted to realize it should
+do this.
+
+See passwd(5) and getpwent(3) for details.
=head1 NOTE
@@ -101,3 +283,15 @@ module to build a struct-like class, you shouldn't rely upon this.
=head1 AUTHOR
Tom Christiansen
+
+=head1 HISTORY
+
+=over
+
+=item March 18th, 2000
+
+Reworked internals to support better interface to dodgey fields
+than normal Perl function provides. Added pw_has() field. Improved
+documentation.
+
+=back
diff --git a/contrib/perl5/lib/abbrev.pl b/contrib/perl5/lib/abbrev.pl
index 62975e6..c505a6f 100644
--- a/contrib/perl5/lib/abbrev.pl
+++ b/contrib/perl5/lib/abbrev.pl
@@ -4,6 +4,16 @@
;# ...
;# $long = $foo{$short};
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Text::Abbrev
+#
+
package abbrev;
sub main'abbrev {
diff --git a/contrib/perl5/lib/attributes.pm b/contrib/perl5/lib/attributes.pm
new file mode 100644
index 0000000..f111645
--- /dev/null
+++ b/contrib/perl5/lib/attributes.pm
@@ -0,0 +1,399 @@
+package attributes;
+
+$VERSION = 0.03;
+
+@EXPORT_OK = qw(get reftype);
+@EXPORT = ();
+%EXPORT_TAGS = (ALL => [@EXPORT, @EXPORT_OK]);
+
+use strict;
+
+sub croak {
+ require Carp;
+ goto &Carp::croak;
+}
+
+sub carp {
+ require Carp;
+ goto &Carp::carp;
+}
+
+## forward declaration(s) rather than wrapping the bootstrap call in BEGIN{}
+#sub reftype ($) ;
+#sub _fetch_attrs ($) ;
+#sub _guess_stash ($) ;
+#sub _modify_attrs ;
+#sub _warn_reserved () ;
+#
+# The extra trips through newATTRSUB in the interpreter wipe out any savings
+# from avoiding the BEGIN block. Just do the bootstrap now.
+BEGIN { bootstrap }
+
+sub import {
+ @_ > 2 && ref $_[2] or do {
+ require Exporter;
+ goto &Exporter::import;
+ };
+ my (undef,$home_stash,$svref,@attrs) = @_;
+
+ my $svtype = uc reftype($svref);
+ my $pkgmeth;
+ $pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES")
+ if defined $home_stash && $home_stash ne '';
+ my @badattrs;
+ if ($pkgmeth) {
+ my @pkgattrs = _modify_attrs($svref, @attrs);
+ @badattrs = $pkgmeth->($home_stash, $svref, @attrs);
+ if (!@badattrs && @pkgattrs) {
+ return unless _warn_reserved;
+ @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs;
+ if (@pkgattrs) {
+ for my $attr (@pkgattrs) {
+ $attr =~ s/\(.+\z//s;
+ }
+ my $s = ((@pkgattrs == 1) ? '' : 's');
+ carp "$svtype package attribute$s " .
+ "may clash with future reserved word$s: " .
+ join(' : ' , @pkgattrs);
+ }
+ }
+ }
+ else {
+ @badattrs = _modify_attrs($svref, @attrs);
+ }
+ if (@badattrs) {
+ croak "Invalid $svtype attribute" .
+ (( @badattrs == 1 ) ? '' : 's') .
+ ": " .
+ join(' : ', @badattrs);
+ }
+}
+
+sub get ($) {
+ @_ == 1 && ref $_[0] or
+ croak 'Usage: '.__PACKAGE__.'::get $ref';
+ my $svref = shift;
+ my $svtype = uc reftype $svref;
+ my $stash = _guess_stash $svref;
+ $stash = caller unless defined $stash;
+ my $pkgmeth;
+ $pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES")
+ if defined $stash && $stash ne '';
+ return $pkgmeth ?
+ (_fetch_attrs($svref), $pkgmeth->($stash, $svref)) :
+ (_fetch_attrs($svref))
+ ;
+}
+
+sub require_version { goto &UNIVERSAL::VERSION }
+
+1;
+__END__
+#The POD goes here
+
+=head1 NAME
+
+attributes - get/set subroutine or variable attributes
+
+=head1 SYNOPSIS
+
+ sub foo : method ;
+ my ($x,@y,%z) : Bent ;
+ my $s = sub : method { ... };
+
+ use attributes (); # optional, to get subroutine declarations
+ my @attrlist = attributes::get(\&foo);
+
+ use attributes 'get'; # import the attributes::get subroutine
+ my @attrlist = get \&foo;
+
+=head1 DESCRIPTION
+
+Subroutine declarations and definitions may optionally have attribute lists
+associated with them. (Variable C<my> declarations also may, but see the
+warning below.) Perl handles these declarations by passing some information
+about the call site and the thing being declared along with the attribute
+list to this module. In particular, the first example above is equivalent to
+the following:
+
+ use attributes __PACKAGE__, \&foo, 'method';
+
+The second example in the synopsis does something equivalent to this:
+
+ use attributes __PACKAGE__, \$x, 'Bent';
+ use attributes __PACKAGE__, \@y, 'Bent';
+ use attributes __PACKAGE__, \%z, 'Bent';
+
+Yes, that's three invocations.
+
+B<WARNING>: attribute declarations for variables are an I<experimental>
+feature. The semantics of such declarations could change or be removed
+in future versions. They are present for purposes of experimentation
+with what the semantics ought to be. Do not rely on the current
+implementation of this feature.
+
+There are only a few attributes currently handled by Perl itself (or
+directly by this module, depending on how you look at it.) However,
+package-specific attributes are allowed by an extension mechanism.
+(See L<"Package-specific Attribute Handling"> below.)
+
+The setting of attributes happens at compile time. An attempt to set
+an unrecognized attribute is a fatal error. (The error is trappable, but
+it still stops the compilation within that C<eval>.) Setting an attribute
+with a name that's all lowercase letters that's not a built-in attribute
+(such as "foo")
+will result in a warning with B<-w> or C<use warnings 'reserved'>.
+
+=head2 Built-in Attributes
+
+The following are the built-in attributes for subroutines:
+
+=over 4
+
+=item locked
+
+Setting this attribute is only meaningful when the subroutine or
+method is to be called by multiple threads. When set on a method
+subroutine (i.e., one marked with the B<method> attribute below),
+Perl ensures that any invocation of it implicitly locks its first
+argument before execution. When set on a non-method subroutine,
+Perl ensures that a lock is taken on the subroutine itself before
+execution. The semantics of the lock are exactly those of one
+explicitly taken with the C<lock> operator immediately after the
+subroutine is entered.
+
+=item method
+
+Indicates that the referenced subroutine is a method.
+This has a meaning when taken together with the B<locked> attribute,
+as described there. It also means that a subroutine so marked
+will not trigger the "Ambiguous call resolved as CORE::%s" warning.
+
+=item lvalue
+
+Indicates that the referenced subroutine is a valid lvalue and can
+be assigned to. The subroutine must return a modifiable value such
+as a scalar variable, as described in L<perlsub>.
+
+=back
+
+There are no built-in attributes for anything other than subroutines.
+
+=head2 Available Subroutines
+
+The following subroutines are available for general use once this module
+has been loaded:
+
+=over 4
+
+=item get
+
+This routine expects a single parameter--a reference to a
+subroutine or variable. It returns a list of attributes, which may be
+empty. If passed invalid arguments, it uses die() (via L<Carp::croak|Carp>)
+to raise a fatal exception. If it can find an appropriate package name
+for a class method lookup, it will include the results from a
+C<FETCH_I<type>_ATTRIBUTES> call in its return list, as described in
+L<"Package-specific Attribute Handling"> below.
+Otherwise, only L<built-in attributes|"Built-in Attributes"> will be returned.
+
+=item reftype
+
+This routine expects a single parameter--a reference to a subroutine or
+variable. It returns the built-in type of the referenced variable,
+ignoring any package into which it might have been blessed.
+This can be useful for determining the I<type> value which forms part of
+the method names described in L<"Package-specific Attribute Handling"> below.
+
+=back
+
+Note that these routines are I<not> exported by default.
+
+=head2 Package-specific Attribute Handling
+
+B<WARNING>: the mechanisms described here are still experimental. Do not
+rely on the current implementation. In particular, there is no provision
+for applying package attributes to 'cloned' copies of subroutines used as
+closures. (See L<perlref/"Making References"> for information on closures.)
+Package-specific attribute handling may change incompatibly in a future
+release.
+
+When an attribute list is present in a declaration, a check is made to see
+whether an attribute 'modify' handler is present in the appropriate package
+(or its @ISA inheritance tree). Similarly, when C<attributes::get> is
+called on a valid reference, a check is made for an appropriate attribute
+'fetch' handler. See L<"EXAMPLES"> to see how the "appropriate package"
+determination works.
+
+The handler names are based on the underlying type of the variable being
+declared or of the reference passed. Because these attributes are
+associated with subroutine or variable declarations, this deliberately
+ignores any possibility of being blessed into some package. Thus, a
+subroutine declaration uses "CODE" as its I<type>, and even a blessed
+hash reference uses "HASH" as its I<type>.
+
+The class methods invoked for modifying and fetching are these:
+
+=over 4
+
+=item FETCH_I<type>_ATTRIBUTES
+
+This method receives a single argument, which is a reference to the
+variable or subroutine for which package-defined attributes are desired.
+The expected return value is a list of associated attributes.
+This list may be empty.
+
+=item MODIFY_I<type>_ATTRIBUTES
+
+This method is called with two fixed arguments, followed by the list of
+attributes from the relevant declaration. The two fixed arguments are
+the relevant package name and a reference to the declared subroutine or
+variable. The expected return value as a list of attributes which were
+not recognized by this handler. Note that this allows for a derived class
+to delegate a call to its base class, and then only examine the attributes
+which the base class didn't already handle for it.
+
+The call to this method is currently made I<during> the processing of the
+declaration. In particular, this means that a subroutine reference will
+probably be for an undefined subroutine, even if this declaration is
+actually part of the definition.
+
+=back
+
+Calling C<attributes::get()> from within the scope of a null package
+declaration C<package ;> for an unblessed variable reference will
+not provide any starting package name for the 'fetch' method lookup.
+Thus, this circumstance will not result in a method call for package-defined
+attributes. A named subroutine knows to which symbol table entry it belongs
+(or originally belonged), and it will use the corresponding package.
+An anonymous subroutine knows the package name into which it was compiled
+(unless it was also compiled with a null package declaration), and so it
+will use that package name.
+
+=head2 Syntax of Attribute Lists
+
+An attribute list is a sequence of attribute specifications, separated by
+whitespace or a colon (with optional whitespace).
+Each attribute specification is a simple
+name, optionally followed by a parenthesised parameter list.
+If such a parameter list is present, it is scanned past as for the rules
+for the C<q()> operator. (See L<perlop/"Quote and Quote-like Operators">.)
+The parameter list is passed as it was found, however, and not as per C<q()>.
+
+Some examples of syntactically valid attribute lists:
+
+ switch(10,foo(7,3)) : expensive
+ Ugly('\(") :Bad
+ _5x5
+ locked method
+
+Some examples of syntactically invalid attribute lists (with annotation):
+
+ switch(10,foo() # ()-string not balanced
+ Ugly('(') # ()-string not balanced
+ 5x5 # "5x5" not a valid identifier
+ Y2::north # "Y2::north" not a simple identifier
+ foo + bar # "+" neither a colon nor whitespace
+
+=head1 EXPORTS
+
+=head2 Default exports
+
+None.
+
+=head2 Available exports
+
+The routines C<get> and C<reftype> are exportable.
+
+=head2 Export tags defined
+
+The C<:ALL> tag will get all of the above exports.
+
+=head1 EXAMPLES
+
+Here are some samples of syntactically valid declarations, with annotation
+as to how they resolve internally into C<use attributes> invocations by
+perl. These examples are primarily useful to see how the "appropriate
+package" is found for the possible method lookups for package-defined
+attributes.
+
+=over 4
+
+=item 1.
+
+Code:
+
+ package Canine;
+ package Dog;
+ my Canine $spot : Watchful ;
+
+Effect:
+
+ use attributes Canine => \$spot, "Watchful";
+
+=item 2.
+
+Code:
+
+ package Felis;
+ my $cat : Nervous;
+
+Effect:
+
+ use attributes Felis => \$cat, "Nervous";
+
+=item 3.
+
+Code:
+
+ package X;
+ sub foo : locked ;
+
+Effect:
+
+ use attributes X => \&foo, "locked";
+
+=item 4.
+
+Code:
+
+ package X;
+ sub Y::x : locked { 1 }
+
+Effect:
+
+ use attributes Y => \&Y::x, "locked";
+
+=item 5.
+
+Code:
+
+ package X;
+ sub foo { 1 }
+
+ package Y;
+ BEGIN { *bar = \&X::foo; }
+
+ package Z;
+ sub Y::bar : locked ;
+
+Effect:
+
+ use attributes X => \&X::foo, "locked";
+
+=back
+
+This last example is purely for purposes of completeness. You should not
+be trying to mess with the attributes of something in a package that's
+not your own.
+
+=head1 SEE ALSO
+
+L<perlsub/"Private Variables via my()"> and
+L<perlsub/"Subroutine Attributes"> for details on the basic declarations;
+L<attrs> for the obsolescent form of subroutine attribute specification
+which this module replaces;
+L<perlfunc/use> for details on the normal invocation mechanism.
+
+=cut
+
diff --git a/contrib/perl5/lib/autouse.pm b/contrib/perl5/lib/autouse.pm
index 4445c6c..179c382 100644
--- a/contrib/perl5/lib/autouse.pm
+++ b/contrib/perl5/lib/autouse.pm
@@ -3,7 +3,7 @@ package autouse;
#use strict; # debugging only
use 5.003_90; # ->can, for my $var
-$autouse::VERSION = '1.01';
+$autouse::VERSION = '1.02';
$autouse::DEBUG ||= 0;
@@ -25,7 +25,7 @@ sub import {
vet_import $module;
local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
# $Exporter::Verbose = 1;
- return $module->import(map { (my $f = $_) =~ s/\(.*?\)$// } @_);
+ return $module->import(map { (my $f = $_) =~ s/\(.*?\)$//; $f } @_);
}
# It is not loaded: need to do real work.
diff --git a/contrib/perl5/lib/base.pm b/contrib/perl5/lib/base.pm
index 3500cbf..3cb42f5 100644
--- a/contrib/perl5/lib/base.pm
+++ b/contrib/perl5/lib/base.pm
@@ -19,12 +19,21 @@ Roughly similar in effect to
Will also initialize the %FIELDS hash if one of the base classes has
it. Multiple inheritance of %FIELDS is not supported. The 'base'
-pragma will croak if multiple base classes has a %FIELDS hash. See
+pragma will croak if multiple base classes have a %FIELDS hash. See
L<fields> for a description of this feature.
When strict 'vars' is in scope I<base> also let you assign to @ISA
without having to declare @ISA with the 'vars' pragma first.
+If any of the base classes are not loaded yet, I<base> silently
+C<require>s them. Whether to C<require> a base class package is
+determined by the absence of a global $VERSION in the base package.
+If $VERSION is not detected even after loading it, <base> will
+define $VERSION in the base package, setting it to the string
+C<-1, defined by base.pm>.
+
+=head1 HISTORY
+
This module was introduced with Perl 5.004_04.
=head1 SEE ALSO
@@ -35,22 +44,30 @@ L<fields>
package base;
+use 5.005_64;
+our $VERSION = "1.01";
+
sub import {
my $class = shift;
my $fields_base;
+ my $pkg = caller(0);
foreach my $base (@_) {
- unless (defined %{"$base\::"}) {
+ next if $pkg->isa($base);
+ push @{"$pkg\::ISA"}, $base;
+ unless (exists ${"$base\::"}{VERSION}) {
eval "require $base";
# Only ignore "Can't locate" errors from our eval require.
# Other fatal errors (syntax etc) must be reported.
die if $@ && $@ !~ /^Can't locate .*? at \(eval /;
- unless (defined %{"$base\::"}) {
+ unless (%{"$base\::"}) {
require Carp;
Carp::croak("Base class package \"$base\" is empty.\n",
"\t(Perhaps you need to 'use' the module ",
"which defines that package first.)");
}
+ ${"$base\::VERSION"} = "-1, set by base.pm"
+ unless exists ${"$base\::"}{VERSION};
}
# A simple test like (defined %{"$base\::FIELDS"}) will
@@ -66,8 +83,6 @@ sub import {
}
}
}
- my $pkg = caller(0);
- push @{"$pkg\::ISA"}, @_;
if ($fields_base) {
require fields;
fields::inherit($pkg, $fields_base);
diff --git a/contrib/perl5/lib/bigfloat.pl b/contrib/perl5/lib/bigfloat.pl
index d687c78..8c28abd 100644
--- a/contrib/perl5/lib/bigfloat.pl
+++ b/contrib/perl5/lib/bigfloat.pl
@@ -1,12 +1,21 @@
package bigfloat;
require "bigint.pl";
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Math::BigFloat
+#
# Arbitrary length float math package
#
# by Mark Biggar
#
# number format
# canonical strings have the form /[+-]\d+E[+-]\d+/
-# Input values can have inbedded whitespace
+# Input values can have embedded whitespace
# Error returns
# 'NaN' An input parameter was "Not a Number" or
# divide by zero or sqrt of negative number
@@ -70,7 +79,12 @@ sub norm { #(mantissa, exponent) return fnum_str
sub main'fneg { #(fnum_str) return fnum_str
local($_) = &'fnorm($_[$[]);
vec($_,0,8) ^= ord('+') ^ ord('-') unless $_ eq '+0E+0'; # flip sign
- s/^H/N/;
+ if ( ord("\t") == 9 ) { # ascii
+ s/^H/N/;
+ }
+ else { # ebcdic character set
+ s/\373/N/;
+ }
$_;
}
@@ -126,7 +140,7 @@ sub main'fdiv #(fnum_str, fnum_str[,scale]) return fnum_str
$scale = length($xm)-1 if (length($xm)-1 > $scale);
$scale = length($ym)-1 if (length($ym)-1 > $scale);
$scale = $scale + length($ym) - length($xm);
- &norm(&round(&'bdiv($xm.('0' x $scale),$ym),$ym),
+ &norm(&round(&'bdiv($xm.('0' x $scale),$ym),&'babs($ym)),
$xe-$ye-$scale);
}
}
@@ -186,7 +200,12 @@ sub main'ffround { #(fnum_str, scale) return fnum_str
if ($xe < 1) {
'+0E+0';
} elsif ($xe == 1) {
- &norm(&round('+0',"+0".substr($xm,$[+1,1),"+10"), $scale);
+ # The first substr preserves the sign, which means that
+ # we'll pass a non-normalized "-0" to &round when rounding
+ # -0.006 (for example), purely so that &round won't lose
+ # the sign.
+ &norm(&round(substr($xm,$[,1).'0',
+ "+0".substr($xm,$[+1,1),"+10"), $scale);
} else {
&norm(&round(substr($xm,$[,$xe),
"+0".substr($xm,$[+$xe,1),"+10"), $scale);
diff --git a/contrib/perl5/lib/bigint.pl b/contrib/perl5/lib/bigint.pl
index adeb17f..4044f7f 100644
--- a/contrib/perl5/lib/bigint.pl
+++ b/contrib/perl5/lib/bigint.pl
@@ -1,5 +1,13 @@
package bigint;
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Math::BigInt
+#
# arbitrary size integer math package
#
# by Mark Biggar
diff --git a/contrib/perl5/lib/bigrat.pl b/contrib/perl5/lib/bigrat.pl
index fb436ce..2d3738f 100644
--- a/contrib/perl5/lib/bigrat.pl
+++ b/contrib/perl5/lib/bigrat.pl
@@ -1,6 +1,12 @@
package bigrat;
require "bigint.pl";
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
# Arbitrary size rational math package
#
# by Mark Biggar
diff --git a/contrib/perl5/lib/blib.pm b/contrib/perl5/lib/blib.pm
index 1d56a58..0916f79 100644
--- a/contrib/perl5/lib/blib.pm
+++ b/contrib/perl5/lib/blib.pm
@@ -45,12 +45,12 @@ sub import
{
my $package = shift;
my $dir = getcwd;
- if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/$--; }
+ if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; }
if (@_)
{
$dir = shift;
- $dir =~ s/blib$//;
- $dir =~ s,/+$,,;
+ $dir =~ s/blib\z//;
+ $dir =~ s,/+\z,,;
$dir = '.' unless ($dir);
die "$dir is not a directory\n" unless (-d $dir);
}
diff --git a/contrib/perl5/lib/bytes.pm b/contrib/perl5/lib/bytes.pm
new file mode 100644
index 0000000..f93d615
--- /dev/null
+++ b/contrib/perl5/lib/bytes.pm
@@ -0,0 +1,52 @@
+package bytes;
+
+$bytes::hint_bits = 0x00000008;
+
+sub import {
+ $^H |= $bytes::hint_bits;
+}
+
+sub unimport {
+ $^H &= ~$bytes::hint_bits;
+}
+
+sub AUTOLOAD {
+ require "bytes_heavy.pl";
+ goto &$AUTOLOAD;
+}
+
+sub length ($);
+
+1;
+__END__
+
+=head1 NAME
+
+bytes - Perl pragma to force byte semantics rather than character semantics
+
+=head1 SYNOPSIS
+
+ use bytes;
+ no bytes;
+
+=head1 DESCRIPTION
+
+WARNING: The implementation of Unicode support in Perl is incomplete.
+See L<perlunicode> for the exact details.
+
+The C<use bytes> pragma disables character semantics for the rest of the
+lexical scope in which it appears. C<no bytes> can be used to reverse
+the effect of C<use bytes> within the current lexical scope.
+
+Perl normally assumes character semantics in the presence of
+character data (i.e. data that has come from a source that has
+been marked as being of a particular character encoding).
+
+To understand the implications and differences between character
+semantics and byte semantics, see L<perlunicode>.
+
+=head1 SEE ALSO
+
+L<perlunicode>, L<utf8>
+
+=cut
diff --git a/contrib/perl5/lib/bytes_heavy.pl b/contrib/perl5/lib/bytes_heavy.pl
new file mode 100644
index 0000000..47bdbf9
--- /dev/null
+++ b/contrib/perl5/lib/bytes_heavy.pl
@@ -0,0 +1,8 @@
+package bytes;
+
+sub length ($) {
+ BEGIN { bytes::import() }
+ return CORE::length($_[0]);
+}
+
+1;
diff --git a/contrib/perl5/lib/cacheout.pl b/contrib/perl5/lib/cacheout.pl
index 64378cf..d2669a1 100644
--- a/contrib/perl5/lib/cacheout.pl
+++ b/contrib/perl5/lib/cacheout.pl
@@ -1,3 +1,12 @@
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: FileCache
+
# Open in their package.
sub cacheout'open {
diff --git a/contrib/perl5/lib/charnames.pm b/contrib/perl5/lib/charnames.pm
new file mode 100644
index 0000000..7c2209b
--- /dev/null
+++ b/contrib/perl5/lib/charnames.pm
@@ -0,0 +1,135 @@
+package charnames;
+use bytes (); # for $bytes::hint_bits
+$charnames::hint_bits = 0x20000;
+
+my $txt;
+
+# This is not optimized in any way yet
+sub charnames {
+ $name = shift;
+ $txt = do "unicode/Name.pl" unless $txt;
+ my @off;
+ if ($^H{charnames_full} and $txt =~ /\t\t$name$/m) {
+ @off = ($-[0], $+[0]);
+ }
+ unless (@off) {
+ if ($^H{charnames_short} and $name =~ /^(.*?):(.*)/s) {
+ my ($script, $cname) = ($1,$2);
+ my $case = ( $cname =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL");
+ if ($txt =~ m/\t\t\U$script\E (?:$case )?LETTER \U$cname$/m) {
+ @off = ($-[0], $+[0]);
+ }
+ }
+ }
+ unless (@off) {
+ my $case = ( $name =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL");
+ for ( @{$^H{charnames_scripts}} ) {
+ (@off = ($-[0], $+[0])), last
+ if $txt =~ m/\t\t$_ (?:$case )?LETTER \U$name$/m;
+ }
+ }
+ die "Unknown charname '$name'" unless @off;
+
+ my $ord = hex substr $txt, $off[0] - 4, 4;
+ if ($^H & $bytes::hint_bits) { # "use bytes" in effect?
+ use bytes;
+ return chr $ord if $ord <= 255;
+ my $hex = sprintf '%X=0%o', $ord, $ord;
+ my $fname = substr $txt, $off[0] + 2, $off[1] - $off[0] - 2;
+ die "Character 0x$hex with name '$fname' is above 0xFF";
+ }
+ return chr $ord;
+}
+
+sub import {
+ shift;
+ die "`use charnames' needs explicit imports list" unless @_;
+ $^H |= $charnames::hint_bits;
+ $^H{charnames} = \&charnames ;
+ my %h;
+ @h{@_} = (1) x @_;
+ $^H{charnames_full} = delete $h{':full'};
+ $^H{charnames_short} = delete $h{':short'};
+ $^H{charnames_scripts} = [map uc, keys %h];
+}
+
+
+1;
+__END__
+
+=head1 NAME
+
+charnames - define character names for C<\N{named}> string literal escape.
+
+=head1 SYNOPSIS
+
+ use charnames ':full';
+ print "\N{GREEK SMALL LETTER SIGMA} is called sigma.\n";
+
+ use charnames ':short';
+ print "\N{greek:Sigma} is an upper-case sigma.\n";
+
+ use charnames qw(cyrillic greek);
+ print "\N{sigma} is Greek sigma, and \N{be} is Cyrillic b.\n";
+
+=head1 DESCRIPTION
+
+Pragma C<use charnames> supports arguments C<:full>, C<:short> and
+script names. If C<:full> is present, for expansion of
+C<\N{CHARNAME}}> string C<CHARNAME> is first looked in the list of
+standard Unicode names of chars. If C<:short> is present, and
+C<CHARNAME> has the form C<SCRIPT:CNAME>, then C<CNAME> is looked up
+as a letter in script C<SCRIPT>. If pragma C<use charnames> is used
+with script name arguments, then for C<\N{CHARNAME}}> the name
+C<CHARNAME> is looked up as a letter in the given scripts (in the
+specified order).
+
+For lookup of C<CHARNAME> inside a given script C<SCRIPTNAME>
+this pragma looks for the names
+
+ SCRIPTNAME CAPITAL LETTER CHARNAME
+ SCRIPTNAME SMALL LETTER CHARNAME
+ SCRIPTNAME LETTER CHARNAME
+
+in the table of standard Unicode names. If C<CHARNAME> is lowercase,
+then the C<CAPITAL> variant is ignored, otherwise the C<SMALL> variant is
+ignored.
+
+=head1 CUSTOM TRANSLATORS
+
+The mechanism of translation of C<\N{...}> escapes is general and not
+hardwired into F<charnames.pm>. A module can install custom
+translations (inside the scope which C<use>s the module) with the
+following magic incantation:
+
+ use charnames (); # for $charnames::hint_bits
+ sub import {
+ shift;
+ $^H |= $charnames::hint_bits;
+ $^H{charnames} = \&translator;
+ }
+
+Here translator() is a subroutine which takes C<CHARNAME> as an
+argument, and returns text to insert into the string instead of the
+C<\N{CHARNAME}> escape. Since the text to insert should be different
+in C<bytes> mode and out of it, the function should check the current
+state of C<bytes>-flag as in:
+
+ use bytes (); # for $bytes::hint_bits
+ sub translator {
+ if ($^H & $bytes::hint_bits) {
+ return bytes_translator(@_);
+ }
+ else {
+ return utf8_translator(@_);
+ }
+ }
+
+=head1 BUGS
+
+Since evaluation of the translation function happens in a middle of
+compilation (of a string literal), the translation function should not
+do any C<eval>s or C<require>s. This restriction should be lifted in
+a future version of Perl.
+
+=cut
diff --git a/contrib/perl5/lib/chat2.pl b/contrib/perl5/lib/chat2.pl
index 094d3df..504fa7e 100644
--- a/contrib/perl5/lib/chat2.pl
+++ b/contrib/perl5/lib/chat2.pl
@@ -1,4 +1,13 @@
# chat.pl: chat with a server
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Socket
+#
# Based on: V2.01.alpha.7 91/06/16
# Randal L. Schwartz (was <merlyn@stonehenge.com>)
# multihome additions by A.Macpherson@bnr.co.uk
diff --git a/contrib/perl5/lib/complete.pl b/contrib/perl5/lib/complete.pl
index 539f2f7..925ce86 100644
--- a/contrib/perl5/lib/complete.pl
+++ b/contrib/perl5/lib/complete.pl
@@ -1,4 +1,13 @@
;#
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Term::Complete
+#
;# @(#)complete.pl,v1.1 (me@anywhere.EBay.Sun.COM) 09/23/91
;#
;# Author: Wayne Thompson
diff --git a/contrib/perl5/lib/constant.pm b/contrib/perl5/lib/constant.pm
index 5d3dd91..72ad793 100644
--- a/contrib/perl5/lib/constant.pm
+++ b/contrib/perl5/lib/constant.pm
@@ -1,6 +1,107 @@
package constant;
-$VERSION = '1.00';
+use strict;
+use 5.005_64;
+use warnings::register;
+
+our($VERSION, %declared);
+$VERSION = '1.02';
+
+#=======================================================================
+
+# Some names are evil choices.
+my %keywords = map +($_, 1), qw{ BEGIN INIT CHECK END DESTROY AUTOLOAD };
+
+my %forced_into_main = map +($_, 1),
+ qw{ STDIN STDOUT STDERR ARGV ARGVOUT ENV INC SIG };
+
+my %forbidden = (%keywords, %forced_into_main);
+
+#=======================================================================
+# import() - import symbols into user's namespace
+#
+# What we actually do is define a function in the caller's namespace
+# which returns the value. The function we create will normally
+# be inlined as a constant, thereby avoiding further sub calling
+# overhead.
+#=======================================================================
+sub import {
+ my $class = shift;
+ return unless @_; # Ignore 'use constant;'
+ my $name = shift;
+ unless (defined $name) {
+ require Carp;
+ Carp::croak("Can't use undef as constant name");
+ }
+ my $pkg = caller;
+
+ # Normal constant name
+ if ($name =~ /^_?[^\W_0-9]\w*\z/ and !$forbidden{$name}) {
+ # Everything is okay
+
+ # Name forced into main, but we're not in main. Fatal.
+ } elsif ($forced_into_main{$name} and $pkg ne 'main') {
+ require Carp;
+ Carp::croak("Constant name '$name' is forced into main::");
+
+ # Starts with double underscore. Fatal.
+ } elsif ($name =~ /^__/) {
+ require Carp;
+ Carp::croak("Constant name '$name' begins with '__'");
+
+ # Maybe the name is tolerable
+ } elsif ($name =~ /^[A-Za-z_]\w*\z/) {
+ # Then we'll warn only if you've asked for warnings
+ if (warnings::enabled()) {
+ if ($keywords{$name}) {
+ warnings::warn("Constant name '$name' is a Perl keyword");
+ } elsif ($forced_into_main{$name}) {
+ warnings::warn("Constant name '$name' is " .
+ "forced into package main::");
+ } else {
+ # Catch-all - what did I miss? If you get this error,
+ # please let me know what your constant's name was.
+ # Write to <rootbeer@redcat.com>. Thanks!
+ warnings::warn("Constant name '$name' has unknown problems");
+ }
+ }
+
+ # Looks like a boolean
+ # use constant FRED == fred;
+ } elsif ($name =~ /^[01]?\z/) {
+ require Carp;
+ if (@_) {
+ Carp::croak("Constant name '$name' is invalid");
+ } else {
+ Carp::croak("Constant name looks like boolean value");
+ }
+
+ } else {
+ # Must have bad characters
+ require Carp;
+ Carp::croak("Constant name '$name' has invalid characters");
+ }
+
+ {
+ no strict 'refs';
+ my $full_name = "${pkg}::$name";
+ $declared{$full_name}++;
+ if (@_ == 1) {
+ my $scalar = $_[0];
+ *$full_name = sub () { $scalar };
+ } elsif (@_) {
+ my @list = @_;
+ *$full_name = sub () { @list };
+ } else {
+ *$full_name = sub () { };
+ }
+ }
+
+}
+
+1;
+
+__END__
=head1 NAME
@@ -20,7 +121,7 @@ constant - Perl pragma to declare constants
print "This line does nothing" unless DEBUGGING;
- # references can be declared constant
+ # references can be constants
use constant CHASH => { foo => 42 };
use constant CARRAY => [ 1,2,3,4 ];
use constant CPSEUDOHASH => [ { foo => 1}, 42 ];
@@ -30,7 +131,7 @@ constant - Perl pragma to declare constants
print CARRAY->[$i];
print CPSEUDOHASH->{foo};
print CCODE->("me");
- print CHASH->[10]; # compile-time error
+ print CHASH->[10]; # compile-time error
=head1 DESCRIPTION
@@ -63,7 +164,10 @@ List constants are returned as lists, not as arrays.
The use of all caps for constant names is merely a convention,
although it is recommended in order to make constants stand out
and to help avoid collisions with other barewords, keywords, and
-subroutine names. Constant names must begin with a letter.
+subroutine names. Constant names must begin with a letter or
+underscore. Names beginning with a double underscore are reserved. Some
+poor choices for names will generate warnings, if warnings are enabled at
+compile time.
Constant symbols are package scoped (rather than block scoped, as
C<use strict> is). That is, you can refer to a constant from package
@@ -98,7 +202,24 @@ constants at compile time, allowing for way cool stuff like this.
print E2BIG, "\n"; # something like "Arg list too long"
print 0+E2BIG, "\n"; # "7"
-Errors in dereferencing constant references are trapped at compile-time.
+Dereferencing constant references incorrectly (such as using an array
+subscript on a constant hash reference, or vice versa) will be trapped at
+compile time.
+
+In the rare case in which you need to discover at run time whether a
+particular constant has been declared via this module, you may use
+this function to examine the hash C<%constant::declared>. If the given
+constant name does not include a package name, the current package is
+used.
+
+ sub declared ($) {
+ use constant 1.01; # don't omit this!
+ my $name = shift;
+ $name =~ s/^::/main::/;
+ my $pkg = caller;
+ my $full_name = $name =~ /::/ ? $name : "${pkg}::$name";
+ $constant::declared{$full_name};
+ }
=head1 TECHNICAL NOTE
@@ -115,7 +236,19 @@ In the current version of Perl, list constants are not inlined
and some symbols may be redefined without generating a warning.
It is not possible to have a subroutine or keyword with the same
-name as a constant. This is probably a Good Thing.
+name as a constant in the same package. This is probably a Good Thing.
+
+A constant with a name in the list C<STDIN STDOUT STDERR ARGV ARGVOUT
+ENV INC SIG> is not allowed anywhere but in package C<main::>, for
+technical reasons.
+
+Even though a reference may be declared as a constant, the reference may
+point to data which may be changed, as this code shows.
+
+ use constant CARRAY => [ 1,2,3,4 ];
+ print CARRAY->[1];
+ CARRAY->[1] = " be changed";
+ print CARRAY->[1];
Unlike constants in some languages, these cannot be overridden
on the command line or via environment variables.
@@ -126,61 +259,20 @@ For example, you can't say C<$hash{CONSTANT}> because C<CONSTANT> will
be interpreted as a string. Use C<$hash{CONSTANT()}> or
C<$hash{+CONSTANT}> to prevent the bareword quoting mechanism from
kicking in. Similarly, since the C<=E<gt>> operator quotes a bareword
-immediately to its left you have to say C<CONSTANT() =E<gt> 'value'>
-instead of C<CONSTANT =E<gt> 'value'>.
+immediately to its left, you have to say C<CONSTANT() =E<gt> 'value'>
+(or simply use a comma in place of the big arrow) instead of
+C<CONSTANT =E<gt> 'value'>.
=head1 AUTHOR
-Tom Phoenix, E<lt>F<rootbeer@teleport.com>E<gt>, with help from
+Tom Phoenix, E<lt>F<rootbeer@redcat.com>E<gt>, with help from
many other folks.
=head1 COPYRIGHT
-Copyright (C) 1997, Tom Phoenix
+Copyright (C) 1997, 1999 Tom Phoenix
This module is free software; you can redistribute it or modify it
under the same terms as Perl itself.
=cut
-
-use strict;
-use Carp;
-use vars qw($VERSION);
-
-#=======================================================================
-
-# Some of this stuff didn't work in version 5.003, alas.
-require 5.003_96;
-
-#=======================================================================
-# import() - import symbols into user's namespace
-#
-# What we actually do is define a function in the caller's namespace
-# which returns the value. The function we create will normally
-# be inlined as a constant, thereby avoiding further sub calling
-# overhead.
-#=======================================================================
-sub import {
- my $class = shift;
- my $name = shift or return; # Ignore 'use constant;'
- croak qq{Can't define "$name" as constant} .
- qq{ (name contains invalid characters or is empty)}
- unless $name =~ /^[^\W_0-9]\w*$/;
-
- my $pkg = caller;
- {
- no strict 'refs';
- if (@_ == 1) {
- my $scalar = $_[0];
- *{"${pkg}::$name"} = sub () { $scalar };
- } elsif (@_) {
- my @list = @_;
- *{"${pkg}::$name"} = sub () { @list };
- } else {
- *{"${pkg}::$name"} = sub () { };
- }
- }
-
-}
-
-1;
diff --git a/contrib/perl5/lib/ctime.pl b/contrib/perl5/lib/ctime.pl
index 14e122a..6a3f295 100644
--- a/contrib/perl5/lib/ctime.pl
+++ b/contrib/perl5/lib/ctime.pl
@@ -1,4 +1,12 @@
;# ctime.pl is a simple Perl emulation for the well known ctime(3C) function.
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: the POSIX ctime function
;#
;# Waldemar Kebsch, Federal Republic of Germany, November 1988
;# kebsch.pad@nixpbe.UUCP
diff --git a/contrib/perl5/lib/diagnostics.pm b/contrib/perl5/lib/diagnostics.pm
index b9aaba5..a2c927b 100755
--- a/contrib/perl5/lib/diagnostics.pm
+++ b/contrib/perl5/lib/diagnostics.pm
@@ -51,6 +51,11 @@ The B<-verbose> flag first prints out the L<perldiag> introduction before
any other diagnostics. The $diagnostics::PRETTY variable can generate nicer
escape sequences for pagers.
+Warnings dispatched from perl itself (or more accurately, those that match
+descriptions found in L<perldiag>) are only displayed once (no duplicate
+descriptions). User code generated warnings ala warn() are unaffected,
+allowing duplicate user messages to be displayed.
+
=head2 The I<splain> Program
While apparently a whole nuther program, I<splain> is actually nothing
@@ -162,9 +167,11 @@ Tom Christiansen <F<tchrist@mox.perl.com>>, 25 June 1995.
=cut
-require 5.001;
+use 5.005_64;
use Carp;
+$VERSION = v1.0;
+
use Config;
($privlib, $archlib) = @Config{qw(privlibexp archlibexp)};
if ($^O eq 'VMS') {
@@ -172,9 +179,14 @@ if ($^O eq 'VMS') {
$privlib = VMS::Filespec::unixify($privlib);
$archlib = VMS::Filespec::unixify($archlib);
}
-@trypod = ("$archlib/pod/perldiag.pod",
- "$privlib/pod/perldiag-$].pod",
- "$privlib/pod/perldiag.pod");
+@trypod = (
+ "$archlib/pod/perldiag.pod",
+ "$privlib/pod/perldiag-$Config{version}.pod",
+ "$privlib/pod/perldiag.pod",
+ "$archlib/pods/perldiag.pod",
+ "$privlib/pods/perldiag-$Config{version}.pod",
+ "$privlib/pods/perldiag.pod",
+ );
# handy for development testing of new warnings etc
unshift @trypod, "./pod/perldiag.pod" if -e "pod/perldiag.pod";
($PODFILE) = ((grep { -e } @trypod), $trypod[$#trypod])[0];
@@ -274,7 +286,7 @@ if (eof(POD_DIAG)) {
$transmo = <<EOFUNC;
sub transmo {
- local \$^W = 0; # recursive warnings we do NOT need!
+ #local \$^W = 0; # recursive warnings we do NOT need!
study;
EOFUNC
@@ -323,7 +335,7 @@ EOFUNC
# strip formatting directives in =item line
($header = $1) =~ s/[A-Z]<(.*?)>/$1/g;
- if ($header =~ /%[sd]/) {
+ if ($header =~ /%[csd]/) {
$rhs = $lhs = $header;
#if ($lhs =~ s/(.*?)%d(?!%d)(.*)/\Q$1\E\\d+\Q$2\E\$/g) {
if ($lhs =~ s/(.*?)%d(?!%d)(.*)/\Q$1\E\\d+\Q$2\E/g) {
@@ -336,6 +348,7 @@ EOFUNC
$lhs =~ s/\377//g;
$lhs =~ s/\.\*\?$/.*/; # Allow %s at the end to eat it all
}
+ $lhs =~ s/\\%c/./g;
$transmo .= " s{^$lhs}\n {\Q$rhs\E}s\n\t&& return 1;\n";
} else {
$transmo .= " m{^\Q$header\E} && return 1;\n";
@@ -366,12 +379,13 @@ if ($standalone) {
}
exit;
} else {
- $old_w = 0; $oldwarn = ''; $olddie = '';
+ #$old_w = 0;
+ $oldwarn = ''; $olddie = '';
}
sub import {
shift;
- $old_w = $^W;
+ #$old_w = $^W;
$^W = 1; # yup, clobbered the global variable; tough, if you
# want diags, you want diags.
return if $SIG{__WARN__} eq \&warn_trap;
@@ -407,7 +421,7 @@ sub enable { &import }
sub disable {
shift;
- $^W = $old_w;
+ #$^W = $old_w;
return unless $SIG{__WARN__} eq \&warn_trap;
$SIG{__WARN__} = $oldwarn;
$SIG{__DIE__} = $olddie;
@@ -458,13 +472,15 @@ sub splainthis {
s/\.?\n+$//;
my $orig = $_;
# return unless defined;
- if ($exact_duplicate{$_}++) {
- return 1;
- }
s/, <.*?> (?:line|chunk).*$//;
$real = s/(.*?) at .*? (?:line|chunk) \d+.*/$1/;
s/^\((.*)\)$/$1/;
- return 0 unless &transmo;
+ if ($exact_duplicate{$orig}++) {
+ return &transmo;
+ }
+ else {
+ return 0 unless &transmo;
+ }
$orig = shorten($orig);
if ($old_diag{$_}) {
autodescribe();
@@ -526,7 +542,7 @@ sub shorten {
}
-# have to do this: RS isn't set until run time, but we're executing at compile time
+# have to do this: RS isn't set until run time, but we're executing at compiletime
$RS = "\n";
1 unless $standalone; # or it'll complain about itself
diff --git a/contrib/perl5/lib/dotsh.pl b/contrib/perl5/lib/dotsh.pl
index 877467e..5be2413 100644
--- a/contrib/perl5/lib/dotsh.pl
+++ b/contrib/perl5/lib/dotsh.pl
@@ -1,6 +1,13 @@
#
# @(#)dotsh.pl 03/19/94
#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+#
# Author: Charles Collins
#
# Description:
@@ -26,7 +33,9 @@
#
sub dotsh {
local(@sh) = @_;
- local($tmp,$key,$shell,*dotsh,$command,$args,$vars) = '';
+ local($tmp,$key,$shell,$command,$args,$vars) = '';
+ local(*dotsh);
+ undef *dotsh;
$dotsh = shift(@sh);
@dotsh = split (/\s/, $dotsh);
$command = shift (@dotsh);
@@ -37,7 +46,7 @@ sub dotsh {
$shell = "$1 -c" if ($_ =~ /^\#\!\s*(\S+(\/sh|\/ksh|\/zsh|\/csh))\s*$/);
close (_SH_ENV);
if (!$shell) {
- if ($ENV{'SHELL'} =~ /\/sh$|\/ksh$|\/zsh$|\/csh$/) {
+ if ($ENV{'SHELL'} =~ /\/sh$|\/ksh$|\/zsh$|\/bash$|\/csh$/) {
$shell = "$ENV{'SHELL'} -c";
} else {
print "SHELL not recognized!\nUsing /bin/sh...\n";
diff --git a/contrib/perl5/lib/dumpvar.pl b/contrib/perl5/lib/dumpvar.pl
index 32d4692..51e9c88 100644
--- a/contrib/perl5/lib/dumpvar.pl
+++ b/contrib/perl5/lib/dumpvar.pl
@@ -53,7 +53,7 @@ sub stringify {
return $_ . "" if ref \$_ eq 'GLOB';
$_ = &{'overload::StrVal'}($_)
if $bareStringify and ref $_
- and defined %overload:: and defined &{'overload::StrVal'};
+ and %overload:: and defined &{'overload::StrVal'};
if ($tick eq 'auto') {
if (/[\000-\011\013-\037\177]/) {
@@ -125,7 +125,7 @@ sub unwrap {
if (ref $v) {
my $val = $v;
$val = &{'overload::StrVal'}($v)
- if defined %overload:: and defined &{'overload::StrVal'};
+ if %overload:: and defined &{'overload::StrVal'};
($address) = $val =~ /(0x[0-9a-f]+)\)$/ ;
if (!$dumpReused && defined $address) {
$address{$address}++ ;
@@ -143,6 +143,13 @@ sub unwrap {
}
}
+ if (ref $v eq 'Regexp') {
+ my $re = "$v";
+ $re =~ s,/,\\/,g;
+ print "$sp-> qr/$re/\n";
+ return;
+ }
+
if ( UNIVERSAL::isa($v, 'HASH') ) {
@sortKeys = sort keys(%$v) ;
undef $more ;
@@ -188,8 +195,8 @@ sub unwrap {
if ($#$v >= 0) {
$short = $sp . "0..$#{$v} " .
join(" ",
- map {stringify $_} @{$v}[0..$tArrayDepth])
- . "$shortmore";
+ map {exists $v->[$_] ? stringify $v->[$_] : "empty"} ($[..$tArrayDepth)
+ ) . "$shortmore";
} else {
$short = $sp . "empty array";
}
@@ -202,7 +209,11 @@ sub unwrap {
for $num ($[ .. $tArrayDepth) {
return if $DB::signal;
print "$sp$num ";
- DumpElem $v->[$num], $s;
+ if (exists $v->[$num]) {
+ DumpElem $v->[$num], $s;
+ } else {
+ print "empty slot\n";
+ }
}
print "$sp empty array\n" unless @$v;
print "$sp$more" if defined $more ;
@@ -282,12 +293,12 @@ sub dumpglob {
print( (' ' x $off) . "\$", &unctrl($key), " = " );
DumpElem $entry, 3+$off;
}
- if (($key !~ /^_</ or $dumpDBFiles) and defined @entry) {
+ if (($key !~ /^_</ or $dumpDBFiles) and @entry) {
print( (' ' x $off) . "\@$key = (\n" );
unwrap(\@entry,3+$off) ;
print( (' ' x $off) . ")\n" );
}
- if ($key ne "main::" && $key ne "DB::" && defined %entry
+ if ($key ne "main::" && $key ne "DB::" && %entry
&& ($dumpPackages or $key !~ /::$/)
&& ($key !~ /^_</ or $dumpDBFiles)
&& !($package eq "dumpvar" and $key eq "stab")) {
@@ -305,18 +316,31 @@ sub dumpglob {
}
}
+sub CvGV_name_or_bust {
+ my $in = shift;
+ return if $skipCvGV; # Backdoor to avoid problems if XS broken...
+ $in = \&$in; # Hard reference...
+ eval {require Devel::Peek; 1} or return;
+ my $gv = Devel::Peek::CvGV($in) or return;
+ *$gv{PACKAGE} . '::' . *$gv{NAME};
+}
+
sub dumpsub {
my ($off,$sub) = @_;
+ my $ini = $sub;
+ my $s;
$sub = $1 if $sub =~ /^\{\*(.*)\}$/;
- my $subref = \&$sub;
- my $place = $DB::sub{$sub} || (($sub = $subs{"$subref"}) && $DB::sub{$sub})
- || ($subdump && ($sub = findsubs("$subref")) && $DB::sub{$sub});
+ my $subref = defined $1 ? \&$sub : \&$ini;
+ my $place = $DB::sub{$sub} || (($s = $subs{"$subref"}) && $DB::sub{$s})
+ || (($s = CvGV_name_or_bust($subref)) && $DB::sub{$s})
+ || ($subdump && ($s = findsubs("$subref")) && $DB::sub{$s});
$place = '???' unless defined $place;
- print( (' ' x $off) . "&$sub in $place\n" );
+ $s = $sub unless defined $s;
+ print( (' ' x $off) . "&$s in $place\n" );
}
sub findsubs {
- return undef unless defined %DB::sub;
+ return undef unless %DB::sub;
my ($addr, $name, $loc);
while (($name, $loc) = each %DB::sub) {
$addr = \&$name;
@@ -341,7 +365,9 @@ sub main::dumpvar {
return if $DB::signal;
next if @vars && !grep( matchvar($key, $_), @vars );
if ($usageOnly) {
- globUsage(\$val, $key) unless $package eq 'dumpvar' and $key eq 'stab';
+ globUsage(\$val, $key)
+ if ($package ne 'dumpvar' or $key ne 'stab')
+ and ref(\$val) eq 'GLOB';
} else {
dumpglob(0,$key, $val);
}
@@ -388,8 +414,8 @@ sub globUsage { # glob ref, name
local *name = *{$_[0]};
$total = 0;
$total += scalarUsage $name if defined $name;
- $total += arrayUsage \@name, $_[1] if defined @name;
- $total += hashUsage \%name, $_[1] if defined %name and $_[1] ne "main::"
+ $total += arrayUsage \@name, $_[1] if @name;
+ $total += hashUsage \%name, $_[1] if %name and $_[1] ne "main::"
and $_[1] ne "DB::"; #and !($package eq "dumpvar" and $key eq "stab"));
$total;
}
diff --git a/contrib/perl5/lib/exceptions.pl b/contrib/perl5/lib/exceptions.pl
index 02c4498..ed1f927 100644
--- a/contrib/perl5/lib/exceptions.pl
+++ b/contrib/perl5/lib/exceptions.pl
@@ -1,5 +1,12 @@
# exceptions.pl
# tchrist@convex.com
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
#
# Here's a little code I use for exception handling. It's really just
# glorfied eval/die. The way to use use it is when you might otherwise
diff --git a/contrib/perl5/lib/fastcwd.pl b/contrib/perl5/lib/fastcwd.pl
index 6b452e8..ecd87c8 100644
--- a/contrib/perl5/lib/fastcwd.pl
+++ b/contrib/perl5/lib/fastcwd.pl
@@ -1,5 +1,13 @@
# By John Bazik
#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Cwd
+#
# Usage: $cwd = &fastcwd;
#
# This is a faster version of getcwd. It's also more dangerous because
diff --git a/contrib/perl5/lib/fields.pm b/contrib/perl5/lib/fields.pm
index 54602a6..ac45810 100644
--- a/contrib/perl5/lib/fields.pm
+++ b/contrib/perl5/lib/fields.pm
@@ -8,59 +8,117 @@ fields - compile-time class fields
{
package Foo;
- use fields qw(foo bar _private);
+ use fields qw(foo bar _Foo_private);
+ sub new {
+ my Foo $self = shift;
+ unless (ref $self) {
+ $self = fields::new($self);
+ $self->{_Foo_private} = "this is Foo's secret";
+ }
+ $self->{foo} = 10;
+ $self->{bar} = 20;
+ return $self;
+ }
}
- ...
- my Foo $var = new Foo;
+
+ my Foo $var = Foo::->new;
$var->{foo} = 42;
- # This will generate a compile-time error.
+ # this will generate a compile-time error
$var->{zap} = 42;
+ # subclassing
{
package Bar;
use base 'Foo';
- use fields 'bar'; # hides Foo->{bar}
- use fields qw(baz _private); # not shared with Foo
+ use fields qw(baz _Bar_private); # not shared with Foo
+ sub new {
+ my $class = shift;
+ my $self = fields::new($class);
+ $self->SUPER::new(); # init base fields
+ $self->{baz} = 10; # init own fields
+ $self->{_Bar_private} = "this is Bar's secret";
+ return $self;
+ }
}
=head1 DESCRIPTION
-The C<fields> pragma enables compile-time verified class fields. It
-does so by updating the %FIELDS hash in the calling package.
+The C<fields> pragma enables compile-time verified class fields.
+
+NOTE: The current implementation keeps the declared fields in the %FIELDS
+hash of the calling package, but this may change in future versions.
+Do B<not> update the %FIELDS hash directly, because it must be created
+at compile-time for it to be fully useful, as is done by this pragma.
If a typed lexical variable holding a reference is used to access a
-hash element and the %FIELDS hash of the given type exists, then the
-operation is turned into an array access at compile time. The %FIELDS
-hash maps from hash element names to the array indices. If the hash
-element is not present in the %FIELDS hash, then a compile-time error
-is signaled.
-
-Since the %FIELDS hash is used at compile-time, it must be set up at
-compile-time too. This is made easier with the help of the 'fields'
-and the 'base' pragma modules. The 'base' pragma will copy fields
-from base classes and the 'fields' pragma adds new fields. Field
-names that start with an underscore character are made private to a
-class and are not visible to subclasses. Inherited fields can be
+hash element and a package with the same name as the type has declared
+class fields using this pragma, then the operation is turned into an
+array access at compile time.
+
+The related C<base> pragma will combine fields from base classes and any
+fields declared using the C<fields> pragma. This enables field
+inheritance to work properly.
+
+Field names that start with an underscore character are made private to
+the class and are not visible to subclasses. Inherited fields can be
overridden but will generate a warning if used together with the C<-w>
switch.
The effect of all this is that you can have objects with named fields
which are as compact and as fast arrays to access. This only works
as long as the objects are accessed through properly typed variables.
-For untyped access to work you have to make sure that a reference to
-the proper %FIELDS hash is assigned to the 0'th element of the array
-object (so that the objects can be treated like an pseudo-hash). A
-constructor like this does the job:
+If the objects are not typed, access is only checked at run time.
- sub new
- {
- my $class = shift;
- no strict 'refs';
- my $self = bless [\%{"$class\::FIELDS"}], $class;
- $self;
- }
+The following functions are supported:
+=over 8
+
+=item new
+
+fields::new() creates and blesses a pseudo-hash comprised of the fields
+declared using the C<fields> pragma into the specified class.
+This makes it possible to write a constructor like this:
+
+ package Critter::Sounds;
+ use fields qw(cat dog bird);
+
+ sub new {
+ my Critter::Sounds $self = shift;
+ $self = fields::new($self) unless ref $self;
+ $self->{cat} = 'meow'; # scalar element
+ @$self{'dog','bird'} = ('bark','tweet'); # slice
+ return $self;
+ }
+
+=item phash
+
+fields::phash() can be used to create and initialize a plain (unblessed)
+pseudo-hash. This function should always be used instead of creating
+pseudo-hashes directly.
+
+If the first argument is a reference to an array, the pseudo-hash will
+be created with keys from that array. If a second argument is supplied,
+it must also be a reference to an array whose elements will be used as
+the values. If the second array contains less elements than the first,
+the trailing elements of the pseudo-hash will not be initialized.
+This makes it particularly useful for creating a pseudo-hash from
+subroutine arguments:
+
+ sub dogtag {
+ my $tag = fields::phash([qw(name rank ser_num)], [@_]);
+ }
+
+fields::phash() also accepts a list of key-value pairs that will
+be used to construct the pseudo hash. Examples:
+
+ my $tag = fields::phash(name => "Joe",
+ rank => "captain",
+ ser_num => 42);
+
+ my $pseudohash = fields::phash(%args);
+
+=back
=head1 SEE ALSO
@@ -69,88 +127,160 @@ L<perlref/Pseudo-hashes: Using an array as a hash>
=cut
+use 5.005_64;
use strict;
no strict 'refs';
-use vars qw(%attr $VERSION);
+use warnings::register;
+our(%attr, $VERSION);
-$VERSION = "0.02";
+$VERSION = "1.01";
# some constants
sub _PUBLIC () { 1 }
sub _PRIVATE () { 2 }
-sub _INHERITED () { 4 }
# The %attr hash holds the attributes of the currently assigned fields
# per class. The hash is indexed by class names and the hash value is
-# an array reference. The array is indexed with the field numbers
-# (minus one) and the values are integer bit masks (or undef). The
-# size of the array also indicate the next field index too assign for
-# additional fields in this class.
+# an array reference. The first element in the array is the lowest field
+# number not belonging to a base class. The remaining elements' indices
+# are the field numbers. The values are integer bit masks, or undef
+# in the case of base class private fields (which occupy a slot but are
+# otherwise irrelevant to the class).
sub import {
my $class = shift;
+ return unless @_;
my $package = caller(0);
+ # avoid possible typo warnings
+ %{"$package\::FIELDS"} = () unless %{"$package\::FIELDS"};
my $fields = \%{"$package\::FIELDS"};
- my $fattr = ($attr{$package} ||= []);
+ my $fattr = ($attr{$package} ||= [1]);
+ my $next = @$fattr;
+ if ($next > $fattr->[0]
+ and ($fields->{$_[0]} || 0) >= $fattr->[0])
+ {
+ # There are already fields not belonging to base classes.
+ # Looks like a possible module reload...
+ $next = $fattr->[0];
+ }
foreach my $f (@_) {
- if (my $fno = $fields->{$f}) {
+ my $fno = $fields->{$f};
+
+ # Allow the module to be reloaded so long as field positions
+ # have not changed.
+ if ($fno and $fno != $next) {
require Carp;
- if ($fattr->[$fno-1] & _INHERITED) {
- Carp::carp("Hides field '$f' in base class") if $^W;
+ if ($fno < $fattr->[0]) {
+ warnings::warn("Hides field '$f' in base class")
+ if warnings::enabled();
} else {
Carp::croak("Field name '$f' already in use");
}
}
- $fields->{$f} = @$fattr + 1;
- push(@$fattr, ($f =~ /^_/) ? _PRIVATE : _PUBLIC);
+ $fields->{$f} = $next;
+ $fattr->[$next] = ($f =~ /^_/) ? _PRIVATE : _PUBLIC;
+ $next += 1;
+ }
+ if (@$fattr > $next) {
+ # Well, we gave them the benefit of the doubt by guessing the
+ # module was reloaded, but they appear to be declaring fields
+ # in more than one place. We can't be sure (without some extra
+ # bookkeeping) that the rest of the fields will be declared or
+ # have the same positions, so punt.
+ require Carp;
+ Carp::croak ("Reloaded module must declare all fields at once");
}
}
-sub inherit # called by base.pm
-{
+sub inherit { # called by base.pm when $base_fields is nonempty
my($derived, $base) = @_;
+ my $base_attr = $attr{$base};
+ my $derived_attr = $attr{$derived} ||= [];
+ # avoid possible typo warnings
+ %{"$base\::FIELDS"} = () unless %{"$base\::FIELDS"};
+ %{"$derived\::FIELDS"} = () unless %{"$derived\::FIELDS"};
+ my $base_fields = \%{"$base\::FIELDS"};
+ my $derived_fields = \%{"$derived\::FIELDS"};
- if (defined %{"$derived\::FIELDS"}) {
- require Carp;
- Carp::croak("Inherited %FIELDS can't override existing %FIELDS");
- } else {
- my $base_fields = \%{"$base\::FIELDS"};
- my $derived_fields = \%{"$derived\::FIELDS"};
-
- $attr{$derived}[@{$attr{$base}}-1] = undef;
- while (my($k,$v) = each %$base_fields) {
- next if $attr{$base}[$v-1] & _PRIVATE;
- $attr{$derived}[$v-1] = _INHERITED;
- $derived_fields->{$k} = $v;
- }
- }
-
+ $derived_attr->[0] = $base_attr ? scalar(@$base_attr) : 1;
+ while (my($k,$v) = each %$base_fields) {
+ my($fno);
+ if ($fno = $derived_fields->{$k} and $fno != $v) {
+ require Carp;
+ Carp::croak ("Inherited %FIELDS can't override existing %FIELDS");
+ }
+ if ($base_attr->[$v] & _PRIVATE) {
+ $derived_attr->[$v] = undef;
+ } else {
+ $derived_attr->[$v] = $base_attr->[$v];
+ $derived_fields->{$k} = $v;
+ }
+ }
}
sub _dump # sometimes useful for debugging
{
- for my $pkg (sort keys %attr) {
- print "\n$pkg";
- if (defined @{"$pkg\::ISA"}) {
- print " (", join(", ", @{"$pkg\::ISA"}), ")";
- }
- print "\n";
- my $fields = \%{"$pkg\::FIELDS"};
- for my $f (sort {$fields->{$a} <=> $fields->{$b}} keys %$fields) {
- my $no = $fields->{$f};
- print " $no: $f";
- my $fattr = $attr{$pkg}[$no-1];
- if (defined $fattr) {
- my @a;
- push(@a, "public") if $fattr & _PUBLIC;
- push(@a, "private") if $fattr & _PRIVATE;
- push(@a, "inherited") if $fattr & _INHERITED;
- print "\t(", join(", ", @a), ")";
- }
- print "\n";
- }
- }
+ for my $pkg (sort keys %attr) {
+ print "\n$pkg";
+ if (@{"$pkg\::ISA"}) {
+ print " (", join(", ", @{"$pkg\::ISA"}), ")";
+ }
+ print "\n";
+ my $fields = \%{"$pkg\::FIELDS"};
+ for my $f (sort {$fields->{$a} <=> $fields->{$b}} keys %$fields) {
+ my $no = $fields->{$f};
+ print " $no: $f";
+ my $fattr = $attr{$pkg}[$no];
+ if (defined $fattr) {
+ my @a;
+ push(@a, "public") if $fattr & _PUBLIC;
+ push(@a, "private") if $fattr & _PRIVATE;
+ push(@a, "inherited") if $no < $attr{$pkg}[0];
+ print "\t(", join(", ", @a), ")";
+ }
+ print "\n";
+ }
+ }
+}
+
+sub new {
+ my $class = shift;
+ $class = ref $class if ref $class;
+ return bless [\%{$class . "::FIELDS"}], $class;
+}
+
+sub phash {
+ my $h;
+ my $v;
+ if (@_) {
+ if (ref $_[0] eq 'ARRAY') {
+ my $a = shift;
+ @$h{@$a} = 1 .. @$a;
+ if (@_) {
+ $v = shift;
+ unless (! @_ and ref $v eq 'ARRAY') {
+ require Carp;
+ Carp::croak ("Expected at most two array refs\n");
+ }
+ }
+ }
+ else {
+ if (@_ % 2) {
+ require Carp;
+ Carp::croak ("Odd number of elements initializing pseudo-hash\n");
+ }
+ my $i = 0;
+ @$h{grep ++$i % 2, @_} = 1 .. @_ / 2;
+ $i = 0;
+ $v = [grep $i++ % 2, @_];
+ }
+ }
+ else {
+ $h = {};
+ $v = [];
+ }
+ [ $h, @$v ];
}
1;
diff --git a/contrib/perl5/lib/filetest.pm b/contrib/perl5/lib/filetest.pm
new file mode 100644
index 0000000..b52a9b48
--- /dev/null
+++ b/contrib/perl5/lib/filetest.pm
@@ -0,0 +1,68 @@
+package filetest;
+
+=head1 NAME
+
+filetest - Perl pragma to control the filetest permission operators
+
+=head1 SYNOPSIS
+
+ $can_perhaps_read = -r "file"; # use the mode bits
+ {
+ use filetest 'access'; # intuit harder
+ $can_really_read = -r "file";
+ }
+ $can_perhaps_read = -r "file"; # use the mode bits again
+
+=head1 DESCRIPTION
+
+This pragma tells the compiler to change the behaviour of the filetest
+permissions operators, the C<-r> C<-w> C<-x> C<-R> C<-W> C<-X>
+(see L<perlfunc>).
+
+The default behaviour to use the mode bits as returned by the stat()
+family of calls. This, however, may not be the right thing to do if
+for example various ACL (access control lists) schemes are in use.
+For such environments, C<use filetest> may help the permission
+operators to return results more consistent with other tools.
+
+Each "use filetest" or "no filetest" affects statements to the end of
+the enclosing block.
+
+There may be a slight performance decrease in the filetests
+when C<use filetest> is in effect, because in some systems
+the extended functionality needs to be emulated.
+
+B<NOTE>: using the file tests for security purposes is a lost cause
+from the start: there is a window open for race conditions (who is to
+say that the permissions will not change between the test and the real
+operation?). Therefore if you are serious about security, just try
+the real operation and test for its success. Think atomicity.
+
+=head2 subpragma access
+
+Currently only one subpragma, C<access> is implemented. It enables
+(or disables) the use of access() or similar system calls. This
+extended filetest functionality is used only when the argument of the
+operators is a filename, not when it is a filehandle.
+
+=cut
+
+$filetest::hint_bits = 0x00400000;
+
+sub import {
+ if ( $_[1] eq 'access' ) {
+ $^H |= $filetest::hint_bits;
+ } else {
+ die "filetest: the only implemented subpragma is 'access'.\n";
+ }
+}
+
+sub unimport {
+ if ( $_[1] eq 'access' ) {
+ $^H &= ~$filetest::hint_bits;
+ } else {
+ die "filetest: the only implemented subpragma is 'access'.\n";
+ }
+}
+
+1;
diff --git a/contrib/perl5/lib/flush.pl b/contrib/perl5/lib/flush.pl
index 55002b9..8aa6d55 100644
--- a/contrib/perl5/lib/flush.pl
+++ b/contrib/perl5/lib/flush.pl
@@ -1,3 +1,12 @@
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: IO::Handle
+#
;# Usage: &flush(FILEHANDLE)
;# flushes the named filehandle
diff --git a/contrib/perl5/lib/ftp.pl b/contrib/perl5/lib/ftp.pl
index fd78162..aa6a489 100644
--- a/contrib/perl5/lib/ftp.pl
+++ b/contrib/perl5/lib/ftp.pl
@@ -1,4 +1,13 @@
#-*-perl-*-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Net::FTP
+#
# This is a wrapper to the chat2.pl routines that make life easier
# to do ftp type work.
# Mostly by Lee McLoughlin <lmjm@doc.ic.ac.uk>
diff --git a/contrib/perl5/lib/getcwd.pl b/contrib/perl5/lib/getcwd.pl
index 9dd6945..eca6ba1 100644
--- a/contrib/perl5/lib/getcwd.pl
+++ b/contrib/perl5/lib/getcwd.pl
@@ -1,5 +1,14 @@
# By Brandon S. Allbery
#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Cwd
+#
+#
# Usage: $cwd = &getcwd;
sub getcwd
diff --git a/contrib/perl5/lib/getopt.pl b/contrib/perl5/lib/getopt.pl
index f871e41..77d8d89 100644
--- a/contrib/perl5/lib/getopt.pl
+++ b/contrib/perl5/lib/getopt.pl
@@ -1,5 +1,13 @@
;# $RCSfile: getopt.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:23:58 $
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternatives: Getopt::Long or Getopt::Std
+#
;# Process single-character switches with switch clustering. Pass one argument
;# which is a string containing all switches that take an argument. For each
;# switch found, sets $opt_x (where x is the switch name) to the value of the
diff --git a/contrib/perl5/lib/getopts.pl b/contrib/perl5/lib/getopts.pl
index 852aae8..2595819 100644
--- a/contrib/perl5/lib/getopts.pl
+++ b/contrib/perl5/lib/getopts.pl
@@ -1,5 +1,13 @@
;# getopts.pl - a better getopt.pl
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternatives: Getopt::Long or Getopt::Std
+#
;# Usage:
;# do Getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a
;# # side effect.
diff --git a/contrib/perl5/lib/hostname.pl b/contrib/perl5/lib/hostname.pl
index 5394c6e..63eea8f 100644
--- a/contrib/perl5/lib/hostname.pl
+++ b/contrib/perl5/lib/hostname.pl
@@ -1,5 +1,13 @@
# From: asherman@fmrco.com (Aaron Sherman)
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Sys::Hostname
+#
sub hostname
{
local(*P,@tmp,$hostname,$_);
diff --git a/contrib/perl5/lib/integer.pm b/contrib/perl5/lib/integer.pm
index 8949318..86afcaf 100644
--- a/contrib/perl5/lib/integer.pm
+++ b/contrib/perl5/lib/integer.pm
@@ -28,16 +28,29 @@ code
you'll be left with C<$x == 1.5>, C<$y == 2> and C<$z == -1>. The $z
case happens because unary C<-> counts as an operation.
+Native integer arithmetic (as provided by your C compiler) is used.
+This means that Perl's own semantics for arithmetic operations may
+not be preserved. One common source of trouble is the modulus of
+negative numbers, which Perl does one way, but your hardware may do
+another.
+
+ % perl -le 'print (4 % -3)'
+ -2
+ % perl -Minteger -le 'print (4 % -3)'
+ 1
+
See L<perlmod/Pragmatic Modules>.
=cut
+$integer::hint_bits = 0x1;
+
sub import {
- $^H |= 1;
+ $^H |= $integer::hint_bits;
}
sub unimport {
- $^H &= ~1;
+ $^H &= ~$integer::hint_bits;
}
1;
diff --git a/contrib/perl5/lib/lib.pm b/contrib/perl5/lib/lib.pm
index 6e6e15e..98e2f73 100644
--- a/contrib/perl5/lib/lib.pm
+++ b/contrib/perl5/lib/lib.pm
@@ -1,55 +1,59 @@
package lib;
-use vars qw(@ORIG_INC);
+use 5.005_64;
use Config;
-my $archname = $Config{'archname'};
-
-@ORIG_INC = @INC; # take a handy copy of 'original' value
+my $archname = defined($Config{'archname'}) ? $Config{'archname'} : '';
+my $ver = defined($Config{'version'}) ? $Config{'version'} : '';
+my @inc_version_list = defined($Config{'inc_version_list'}) ?
+ reverse split / /, $Config{'inc_version_list'} : ();
+our @ORIG_INC = @INC; # take a handy copy of 'original' value
+our $VERSION = '0.5564';
sub import {
shift;
+
+ my %names;
foreach (reverse @_) {
- ## Ignore this if not defined.
- next unless defined($_);
if ($_ eq '') {
require Carp;
Carp::carp("Empty compile time value given to use lib");
- # at foo.pl line ...
}
if (-e && ! -d _) {
require Carp;
Carp::carp("Parameter to use lib must be directory, not file");
}
unshift(@INC, $_);
+ # Add any previous version directories we found at configure time
+ foreach my $incver (@inc_version_list)
+ {
+ unshift(@INC, "$_/$incver") if -d "$_/$incver";
+ }
# Put a corresponding archlib directory infront of $_ if it
# looks like $_ has an archlib directory below it.
- if (-d "$_/$archname") {
- unshift(@INC, "$_/$archname") if -d "$_/$archname/auto";
- unshift(@INC, "$_/$archname/$]") if -d "$_/$archname/$]/auto";
- }
+ unshift(@INC, "$_/$ver") if -d "$_/$ver";
+ unshift(@INC, "$_/$ver/$archname") if -d "$_/$ver/$archname";
}
+
+ # remove trailing duplicates
+ @INC = grep { ++$names{$_} == 1 } @INC;
+ return;
}
sub unimport {
shift;
- my $mode = shift if $_[0] =~ m/^:[A-Z]+/;
my %names;
- foreach(@_) {
+ foreach (@_) {
++$names{$_};
++$names{"$_/$archname"} if -d "$_/$archname/auto";
}
- if ($mode and $mode eq ':ALL') {
- # Remove ALL instances of each named directory.
- @INC = grep { !exists $names{$_} } @INC;
- } else {
- # Remove INITIAL instance(s) of each named directory.
- @INC = grep { --$names{$_} < 0 } @INC;
- }
+ # Remove ALL instances of each named directory.
+ @INC = grep { !exists $names{$_} } @INC;
+ return;
}
1;
@@ -74,7 +78,7 @@ It is typically used to add extra directories to perl's search path so
that later C<use> or C<require> statements will find modules which are
not located on perl's default search path.
-=head2 ADDING DIRECTORIES TO @INC
+=head2 Adding directories to @INC
The parameters to C<use lib> are added to the start of the perl search
path. Saying
@@ -90,10 +94,10 @@ checks to see if a directory called $dir/$archname/auto exists.
If so the $dir/$archname directory is assumed to be a corresponding
architecture specific directory and is added to @INC in front of $dir.
-If LIST includes both $dir and $dir/$archname then $dir/$archname will
-be added to @INC twice (if $dir/$archname/auto exists).
+To avoid memory leaks, all trailing duplicate entries in @INC are
+removed.
-=head2 DELETING DIRECTORIES FROM @INC
+=head2 Deleting directories from @INC
You should normally only add directories to @INC. If you need to
delete directories from @INC take care to only delete those which you
@@ -101,24 +105,15 @@ added yourself or which you are certain are not needed by other modules
in your script. Other modules may have added directories which they
need for correct operation.
-By default the C<no lib> statement deletes the I<first> instance of
-each named directory from @INC. To delete multiple instances of the
-same name from @INC you can specify the name multiple times.
-
-To delete I<all> instances of I<all> the specified names from @INC you can
-specify ':ALL' as the first parameter of C<no lib>. For example:
-
- no lib qw(:ALL .);
+The C<no lib> statement deletes all instances of each named directory
+from @INC.
For each directory in LIST (called $dir here) the lib module also
checks to see if a directory called $dir/$archname/auto exists.
If so the $dir/$archname directory is assumed to be a corresponding
architecture specific directory and is also deleted from @INC.
-If LIST includes both $dir and $dir/$archname then $dir/$archname will
-be deleted from @INC twice (if $dir/$archname/auto exists).
-
-=head2 RESTORING ORIGINAL @INC
+=head2 Restoring original @INC
When the lib module is first loaded it records the current value of @INC
in an array C<@lib::ORIG_INC>. To restore @INC to that value you
@@ -136,4 +131,3 @@ FindBin - optional module which deals with paths relative to the source file.
Tim Bunce, 2nd June 1995.
=cut
-
diff --git a/contrib/perl5/lib/locale.pm b/contrib/perl5/lib/locale.pm
index 48213ab..6314aca 100644
--- a/contrib/perl5/lib/locale.pm
+++ b/contrib/perl5/lib/locale.pm
@@ -20,14 +20,19 @@ locales for built-in operations (LC_CTYPE for regular expressions, and
LC_COLLATE for string comparison). Each "use locale" or "no locale"
affects statements to the end of the enclosing BLOCK.
+See L<perllocale> for more detailed information on how Perl supports
+locales.
+
=cut
+$locale::hint_bits = 0x800;
+
sub import {
- $^H |= 0x800;
+ $^H |= $locale::hint_bits;
}
sub unimport {
- $^H &= ~0x800;
+ $^H &= ~$locale::hint_bits;
}
1;
diff --git a/contrib/perl5/lib/look.pl b/contrib/perl5/lib/look.pl
index e8dc8aa..ccc9b61 100644
--- a/contrib/perl5/lib/look.pl
+++ b/contrib/perl5/lib/look.pl
@@ -1,5 +1,11 @@
;# Usage: &look(*FILEHANDLE,$key,$dict,$fold)
-
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
;# Sets file position in FILEHANDLE to be first line greater than or equal
;# (stringwise) to $key. Pass flags for dictionary order and case folding.
diff --git a/contrib/perl5/lib/open.pm b/contrib/perl5/lib/open.pm
new file mode 100644
index 0000000..cdd20ac
--- /dev/null
+++ b/contrib/perl5/lib/open.pm
@@ -0,0 +1,76 @@
+package open;
+$open::hint_bits = 0x20000;
+
+sub import {
+ shift;
+ die "`use open' needs explicit list of disciplines" unless @_;
+ $^H |= $open::hint_bits;
+ while (@_) {
+ my $type = shift;
+ if ($type =~ /^(IN|OUT)\z/s) {
+ my $discp = shift;
+ unless ($discp =~ /^\s*:(raw|crlf)\s*\z/s) {
+ die "Unknown discipline '$discp'";
+ }
+ $^H{"open_$type"} = $discp;
+ }
+ else {
+ die "Unknown discipline class '$type'";
+ }
+ }
+}
+
+1;
+__END__
+
+=head1 NAME
+
+open - perl pragma to set default disciplines for input and output
+
+=head1 SYNOPSIS
+
+ use open IN => ":crlf", OUT => ":raw";
+
+=head1 DESCRIPTION
+
+The open pragma is used to declare one or more default disciplines for
+I/O operations. Any open() and readpipe() (aka qx//) operators found
+within the lexical scope of this pragma will use the declared defaults.
+Neither open() with an explicit set of disciplines, nor sysopen() are
+influenced by this pragma.
+
+Only the two pseudo-disciplines ":raw" and ":crlf" are currently
+available.
+
+The ":raw" discipline corresponds to "binary mode" and the ":crlf"
+discipline corresponds to "text mode" on platforms that distinguish
+between the two modes when opening files (which is many DOS-like
+platforms, including Windows). These two disciplines are currently
+no-ops on platforms where binmode() is a no-op, but will be
+supported everywhere in future.
+
+=head1 UNIMPLEMENTED FUNCTIONALITY
+
+Full-fledged support for I/O disciplines is currently unimplemented.
+When they are eventually supported, this pragma will serve as one of
+the interfaces to declare default disciplines for all I/O.
+
+In future, any default disciplines declared by this pragma will be
+available by the special discipline name ":DEFAULT", and could be used
+within handle constructors that allow disciplines to be specified.
+This would make it possible to stack new disciplines over the default
+ones.
+
+ open FH, "<:para :DEFAULT", $file or die "can't open $file: $!";
+
+Socket and directory handles will also support disciplines in
+future.
+
+Full support for I/O disciplines will enable all of the supported
+disciplines to work on all platforms.
+
+=head1 SEE ALSO
+
+L<perlfunc/"binmode">, L<perlfunc/"open">, L<perlunicode>
+
+=cut
diff --git a/contrib/perl5/lib/overload.pm b/contrib/perl5/lib/overload.pm
index f06b49c..ba96bc9 100644
--- a/contrib/perl5/lib/overload.pm
+++ b/contrib/perl5/lib/overload.pm
@@ -1,5 +1,7 @@
package overload;
+$overload::hint_bits = 0x20000;
+
sub nil {}
sub OVERLOAD {
@@ -87,7 +89,7 @@ sub AddrRef {
}
sub StrVal {
- (OverloadedStringify($_[0])) ?
+ (OverloadedStringify($_[0]) or ref($_[0]) eq 'Regexp') ?
(AddrRef(shift)) :
"$_[0]";
}
@@ -113,21 +115,23 @@ sub mycan { # Real can would leave stubs.
%ops = ( with_assign => "+ - * / % ** << >> x .",
assign => "+= -= *= /= %= **= <<= >>= x= .=",
- str_comparison => "< <= > >= == !=",
+ num_comparison => "< <= > >= == !=",
'3way_comparison'=> "<=> cmp",
- num_comparison => "lt le gt ge eq ne",
+ str_comparison => "lt le gt ge eq ne",
binary => "& | ^",
unary => "neg ! ~",
mutators => '++ --',
func => "atan2 cos sin exp abs log sqrt",
conversion => 'bool "" 0+',
+ iterators => '<>',
+ dereferencing => '${} @{} %{} &{} *{}',
special => 'nomethod fallback =');
sub constant {
# Arguments: what, sub
while (@_) {
$^H{$_[0]} = $_[1];
- $^H |= $constants{$_[0]} | 0x20000;
+ $^H |= $constants{$_[0]} | $overload::hint_bits;
shift, shift;
}
}
@@ -355,12 +359,29 @@ for "E<lt>" or "E<lt>=E<gt>" combined with either unary minus or subtraction.
"bool", "\"\"", "0+",
-If one or two of these operations are unavailable, the remaining ones can
+If one or two of these operations are not overloaded, the remaining ones can
be used instead. C<bool> is used in the flow control operators
(like C<while>) and for the ternary "C<?:>" operation. These functions can
return any arbitrary Perl value. If the corresponding operation for this value
is overloaded too, that operation will be called again with this value.
+=item * I<Iteration>
+
+ "<>"
+
+If not overloaded, the argument will be converted to a filehandle or
+glob (which may require a stringification). The same overloading
+happens both for the I<read-filehandle> syntax C<E<lt>$varE<gt>> and
+I<globbing> syntax C<E<lt>${var}E<gt>>.
+
+=item * I<Dereferencing>
+
+ '${}', '@{}', '%{}', '&{}', '*{}'.
+
+If not overloaded, the argument will be dereferenced I<as is>, thus
+should be of correct type. These functions should return a reference
+of correct type, or another object with overloaded dereferencing.
+
=item * I<Special>
"nomethod", "fallback", "=",
@@ -377,14 +398,16 @@ A computer-readable form of the above table is available in the hash
with_assign => '+ - * / % ** << >> x .',
assign => '+= -= *= /= %= **= <<= >>= x= .=',
- str_comparison => '< <= > >= == !=',
+ num_comparison => '< <= > >= == !=',
'3way_comparison'=> '<=> cmp',
- num_comparison => 'lt le gt ge eq ne',
+ str_comparison => 'lt le gt ge eq ne',
binary => '& | ^',
unary => 'neg ! ~',
mutators => '++ --',
func => 'atan2 cos sin exp abs log sqrt',
conversion => 'bool "" 0+',
+ iterators => '<>',
+ dereferencing => '${} @{} %{} &{} *{}',
special => 'nomethod fallback ='
=head2 Inheritance and overloading
@@ -582,6 +605,14 @@ C<E<lt>=E<gt>> or C<cmp>:
<, >, <=, >=, ==, != in terms of <=>
lt, gt, le, ge, eq, ne in terms of cmp
+=item I<Iterator>
+
+ <> in terms of builtin operations
+
+=item I<Dereferencing>
+
+ ${} @{} %{} &{} *{} in terms of builtin operations
+
=item I<Copy operator>
can be expressed in terms of an assignment to the dereferenced value, if this
@@ -844,6 +875,134 @@ numeric value.) This prints:
seven=vii, seven=7, eight=8
seven contains `i'
+=head2 Two-face references
+
+Suppose you want to create an object which is accessible as both an
+array reference, and a hash reference, similar to the builtin
+L<array-accessible-as-a-hash|perlref/"Pseudo-hashes: Using an array as
+a hash"> builtin Perl type. Let us make it better than the builtin
+type, there will be no restriction that you cannot use the index 0 of
+your array.
+
+ package two_refs;
+ use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} };
+ sub new {
+ my $p = shift;
+ bless \ [@_], $p;
+ }
+ sub gethash {
+ my %h;
+ my $self = shift;
+ tie %h, ref $self, $self;
+ \%h;
+ }
+
+ sub TIEHASH { my $p = shift; bless \ shift, $p }
+ my %fields;
+ my $i = 0;
+ $fields{$_} = $i++ foreach qw{zero one two three};
+ sub STORE {
+ my $self = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $$self->[$key] = shift;
+ }
+ sub FETCH {
+ my $self = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $$self->[$key];
+ }
+
+Now one can access an object using both the array and hash syntax:
+
+ my $bar = new two_refs 3,4,5,6;
+ $bar->[2] = 11;
+ $bar->{two} == 11 or die 'bad hash fetch';
+
+Note several important features of this example. First of all, the
+I<actual> type of $bar is a scalar reference, and we do not overload
+the scalar dereference. Thus we can get the I<actual> non-overloaded
+contents of $bar by just using C<$$bar> (what we do in functions which
+overload dereference). Similarly, the object returned by the
+TIEHASH() method is a scalar reference.
+
+Second, we create a new tied hash each time the hash syntax is used.
+This allows us not to worry about a possibility of a reference loop,
+would would lead to a memory leak.
+
+Both these problems can be cured. Say, if we want to overload hash
+dereference on a reference to an object which is I<implemented> as a
+hash itself, the only problem one has to circumvent is how to access
+this I<actual> hash (as opposed to the I<virtual> exhibited by
+overloaded dereference operator). Here is one possible fetching routine:
+
+ sub access_hash {
+ my ($self, $key) = (shift, shift);
+ my $class = ref $self;
+ bless $self, 'overload::dummy'; # Disable overloading of %{}
+ my $out = $self->{$key};
+ bless $self, $class; # Restore overloading
+ $out;
+ }
+
+To move creation of the tied hash on each access, one may an extra
+level of indirection which allows a non-circular structure of references:
+
+ package two_refs1;
+ use overload '%{}' => sub { ${shift()}->[1] },
+ '@{}' => sub { ${shift()}->[0] };
+ sub new {
+ my $p = shift;
+ my $a = [@_];
+ my %h;
+ tie %h, $p, $a;
+ bless \ [$a, \%h], $p;
+ }
+ sub gethash {
+ my %h;
+ my $self = shift;
+ tie %h, ref $self, $self;
+ \%h;
+ }
+
+ sub TIEHASH { my $p = shift; bless \ shift, $p }
+ my %fields;
+ my $i = 0;
+ $fields{$_} = $i++ foreach qw{zero one two three};
+ sub STORE {
+ my $a = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $a->[$key] = shift;
+ }
+ sub FETCH {
+ my $a = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $a->[$key];
+ }
+
+Now if $baz is overloaded like this, then C<$bar> is a reference to a
+reference to the intermediate array, which keeps a reference to an
+actual array, and the access hash. The tie()ing object for the access
+hash is also a reference to a reference to the actual array, so
+
+=over
+
+=item *
+
+There are no loops of references.
+
+=item *
+
+Both "objects" which are blessed into the class C<two_refs1> are
+references to a reference to an array, thus references to a I<scalar>.
+Thus the accessor expression C<$$foo-E<gt>[$ind]> involves no
+overloaded operations.
+
+=back
+
=head2 Symbolic calculator
Put this in F<symbolic.pm> in your Perl library directory:
@@ -872,7 +1031,7 @@ circumscribed octagon using the above package:
my $iter = 1; # 2**($iter+2) = 8
my $side = new symbolic 1;
my $cnt = $iter;
-
+
while ($cnt--) {
$side = (sqrt(1 + $side**2) - 1)/$side;
}
@@ -997,7 +1156,7 @@ Use this module like this:
my $iter = new symbolic 2; # 16-gon
my $side = new symbolic 1;
my $cnt = $iter;
-
+
while ($cnt) {
$cnt = $cnt - 1; # Mutator `--' not implemented
$side = (sqrt(1 + $side**2) - 1)/$side;
diff --git a/contrib/perl5/lib/perl5db.pl b/contrib/perl5/lib/perl5db.pl
index 4d05e6d..132e08e 100644
--- a/contrib/perl5/lib/perl5db.pl
+++ b/contrib/perl5/lib/perl5db.pl
@@ -2,17 +2,9 @@ package DB;
# Debugger for Perl 5.00x; perl5db.pl patch level:
-$VERSION = 1.0402;
+$VERSION = 1.07;
$header = "perl5db.pl version $VERSION";
-# Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich)
-# Latest version available: ftp://ftp.math.ohio-state.edu/pub/users/ilya/perl
-
-# modified Perl debugger, to be run from Emacs in perldb-mode
-# Ray Lischner (uunet!mntgfx!lisch) as of 5 Nov 1990
-# Johan Vromans -- upgrade to 4.0 pl 10
-# Ilya Zakharevich -- patches after 5.001 (and some before ;-)
-
#
# This file is automatically included if you do perl -d.
# It's probably not useful to include this yourself.
@@ -76,6 +68,8 @@ $header = "perl5db.pl version $VERSION";
# LineInfo - file or pipe to print line number info to. If it is a
# pipe, a short "emacs like" message is used.
#
+# RemotePort - host:port to connect to on remote host for remote debugging.
+#
# Example $rcfile: (delete leading hashes!)
#
# &parse_options("NonStop=1 LineInfo=db.out");
@@ -86,6 +80,15 @@ $header = "perl5db.pl version $VERSION";
# reset LineInfo to something "interactive"!)
#
##################################################################
+
+# Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich)
+# Latest version available: ftp://ftp.math.ohio-state.edu/pub/users/ilya/perl
+
+# modified Perl debugger, to be run from Emacs in perldb-mode
+# Ray Lischner (uunet!mntgfx!lisch) as of 5 Nov 1990
+# Johan Vromans -- upgrade to 4.0 pl 10
+# Ilya Zakharevich -- patches after 5.001 (and some before ;-)
+
# Changelog:
# A lot of things changed after 0.94. First of all, core now informs
@@ -142,6 +145,48 @@ $header = "perl5db.pl version $VERSION";
# `b load' strips trailing whitespace.
# completion ignores leading `|'; takes into account current package
# when completing a subroutine name (same for `l').
+# Changes: 1.07: Many fixed by tchrist 13-March-2000
+# BUG FIXES:
+# + Added bare mimimal security checks on perldb rc files, plus
+# comments on what else is needed.
+# + Fixed the ornaments that made "|h" completely unusable.
+# They are not used in print_help if they will hurt. Strip pod
+# if we're paging to less.
+# + Fixed mis-formatting of help messages caused by ornaments
+# to restore Larry's original formatting.
+# + Fixed many other formatting errors. The code is still suboptimal,
+# and needs a lot of work at restructuing. It's also misindented
+# in many places.
+# + Fixed bug where trying to look at an option like your pager
+# shows "1".
+# + Fixed some $? processing. Note: if you use csh or tcsh, you will
+# lose. You should consider shell escapes not using their shell,
+# or else not caring about detailed status. This should really be
+# unified into one place, too.
+# + Fixed bug where invisible trailing whitespace on commands hoses you,
+# tricking Perl into thinking you wern't calling a debugger command!
+# + Fixed bug where leading whitespace on commands hoses you. (One
+# suggests a leading semicolon or any other irrelevant non-whitespace
+# to indicate literal Perl code.)
+# + Fixed bugs that ate warnings due to wrong selected handle.
+# + Fixed a precedence bug on signal stuff.
+# + Fixed some unseemly wording.
+# + Fixed bug in help command trying to call perl method code.
+# + Fixed to call dumpvar from exception handler. SIGPIPE killed us.
+# ENHANCEMENTS:
+# + Added some comments. This code is still nasty spaghetti.
+# + Added message if you clear your pre/post command stacks which was
+# very easy to do if you just typed a bare >, <, or {. (A command
+# without an argument should *never* be a destructive action; this
+# API is fundamentally screwed up; likewise option setting, which
+# is equally buggered.)
+# + Added command stack dump on argument of "?" for >, <, or {.
+# + Added a semi-built-in doc viewer command that calls man with the
+# proper %Config::Config path (and thus gets caching, man -k, etc),
+# or else perldoc on obstreperous platforms.
+# + Added to and rearranged the help information.
+# + Detected apparent misuse of { ... } to declare a block; this used
+# to work but now is a command, and mysteriously gave no complaint.
####################################################################
@@ -179,7 +224,8 @@ $inhibit_exit = $option{PrintRet} = 1;
TTY noTTY ReadLine NonStop LineInfo maxTraceLen
recallCommand ShellBang pager tkRunning ornaments
signalLevel warnLevel dieLevel inhibit_exit
- ImmediateStop bareStringify);
+ ImmediateStop bareStringify
+ RemotePort);
%optionVars = (
hashDepth => \$dumpvar::hashDepth,
@@ -197,6 +243,7 @@ $inhibit_exit = $option{PrintRet} = 1;
inhibit_exit => \$inhibit_exit,
maxTraceLen => \$maxtrace,
ImmediateStop => \$ImmediateStop,
+ RemotePort => \$remoteport,
);
%optionAction = (
@@ -216,6 +263,7 @@ $inhibit_exit = $option{PrintRet} = 1;
dieLevel => \&dieLevel,
tkRunning => \&tkRunning,
ornaments => \&ornaments,
+ RemotePort => \&RemotePort,
);
%optionRequire = (
@@ -225,43 +273,93 @@ $inhibit_exit = $option{PrintRet} = 1;
);
# These guys may be defined in $ENV{PERL5DB} :
-$rl = 1 unless defined $rl;
-$warnLevel = 1 unless defined $warnLevel;
-$dieLevel = 1 unless defined $dieLevel;
-$signalLevel = 1 unless defined $signalLevel;
-$pre = [] unless defined $pre;
-$post = [] unless defined $post;
-$pretype = [] unless defined $pretype;
+$rl = 1 unless defined $rl;
+$warnLevel = 0 unless defined $warnLevel;
+$dieLevel = 0 unless defined $dieLevel;
+$signalLevel = 1 unless defined $signalLevel;
+$pre = [] unless defined $pre;
+$post = [] unless defined $post;
+$pretype = [] unless defined $pretype;
+
warnLevel($warnLevel);
dieLevel($dieLevel);
signalLevel($signalLevel);
-&pager((defined($ENV{PAGER})
+
+&pager(
+ (defined($ENV{PAGER})
? $ENV{PAGER}
: ($^O eq 'os2'
? 'cmd /c more'
: 'more'))) unless defined $pager;
+setman();
&recallCommand("!") unless defined $prc;
&shellBang("!") unless defined $psh;
$maxtrace = 400 unless defined $maxtrace;
-if (-e "/dev/tty") {
+if (-e "/dev/tty") { # this is the wrong metric!
$rcfile=".perldb";
} else {
$rcfile="perldb.ini";
}
+# This isn't really safe, because there's a race
+# between checking and opening. The solution is to
+# open and fstat the handle, but then you have to read and
+# eval the contents. But then the silly thing gets
+# your lexical scope, which is unfortunately at best.
+sub safe_do {
+ my $file = shift;
+
+ # Just exactly what part of the word "CORE::" don't you understand?
+ local $SIG{__WARN__};
+ local $SIG{__DIE__};
+
+ unless (is_safe_file($file)) {
+ CORE::warn <<EO_GRIPE;
+perldb: Must not source insecure rcfile $file.
+ You or the superuser must be the owner, and it must not
+ be writable by anyone but its owner.
+EO_GRIPE
+ return;
+ }
+
+ do $file;
+ CORE::warn("perldb: couldn't parse $file: $@") if $@;
+}
+
+
+# Verifies that owner is either real user or superuser and that no
+# one but owner may write to it. This function is of limited use
+# when called on a path instead of upon a handle, because there are
+# no guarantees that filename (by dirent) whose file (by ino) is
+# eventually accessed is the same as the one tested.
+# Assumes that the file's existence is not in doubt.
+sub is_safe_file {
+ my $path = shift;
+ stat($path) || return; # mysteriously vaporized
+ my($dev,$ino,$mode,$nlink,$uid,$gid) = stat(_);
+
+ return 0 if $uid != 0 && $uid != $<;
+ return 0 if $mode & 022;
+ return 1;
+}
+
if (-f $rcfile) {
- do "./$rcfile";
-} elsif (defined $ENV{LOGDIR} and -f "$ENV{LOGDIR}/$rcfile") {
- do "$ENV{LOGDIR}/$rcfile";
-} elsif (defined $ENV{HOME} and -f "$ENV{HOME}/$rcfile") {
- do "$ENV{HOME}/$rcfile";
+ safe_do("./$rcfile");
+}
+elsif (defined $ENV{HOME} && -f "$ENV{HOME}/$rcfile") {
+ safe_do("$ENV{HOME}/$rcfile");
+}
+elsif (defined $ENV{LOGDIR} && -f "$ENV{LOGDIR}/$rcfile") {
+ safe_do("$ENV{LOGDIR}/$rcfile");
}
if (defined $ENV{PERLDB_OPTS}) {
parse_options($ENV{PERLDB_OPTS});
}
+# Here begin the unreadable code. It needs fixing.
+
if (exists $ENV{PERLDB_RESTART}) {
delete $ENV{PERLDB_RESTART};
# $restart = 1;
@@ -290,13 +388,16 @@ if (exists $ENV{PERLDB_RESTART}) {
if ($notty) {
$runnonstop = 1;
} else {
- # Is Perl being run from Emacs?
- $emacs = ((defined $main::ARGV[0]) and ($main::ARGV[0] eq '-emacs'));
- $rl = 0, shift(@main::ARGV) if $emacs;
+ # Is Perl being run from a slave editor or graphical debugger?
+ $slave_editor = ((defined $main::ARGV[0]) and ($main::ARGV[0] eq '-emacs'));
+ $rl = 0, shift(@main::ARGV) if $slave_editor;
#require Term::ReadLine;
- if (-e "/dev/tty") {
+ if ($^O eq 'cygwin') {
+ # /dev/tty is binary. use stdin for textmode
+ undef $console;
+ } elsif (-e "/dev/tty") {
$console = "/dev/tty";
} elsif ($^O eq 'dos' or -e "con" or $^O eq 'MSWin32') {
$console = "con";
@@ -304,30 +405,45 @@ if ($notty) {
$console = "sys\$command";
}
- if (($^O eq 'MSWin32') and ($emacs or defined $ENV{EMACS})) {
+ if (($^O eq 'MSWin32') and ($slave_editor or defined $ENV{EMACS})) {
$console = undef;
}
# Around a bug:
- if (defined $ENV{OS2_SHELL} and ($emacs or $ENV{WINDOWID})) { # In OS/2
+ if (defined $ENV{OS2_SHELL} and ($slave_editor or $ENV{WINDOWID})) { # In OS/2
+ $console = undef;
+ }
+
+ if ($^O eq 'epoc') {
$console = undef;
}
$console = $tty if defined $tty;
- if (defined $console) {
- open(IN,"+<$console") || open(IN,"<$console") || open(IN,"<&STDIN");
- open(OUT,"+>$console") || open(OUT,">$console") || open(OUT,">&STDERR")
- || open(OUT,">&STDOUT"); # so we don't dongle stdout
- } else {
- open(IN,"<&STDIN");
- open(OUT,">&STDERR") || open(OUT,">&STDOUT"); # so we don't dongle stdout
- $console = 'STDIN/OUT';
+ if (defined $remoteport) {
+ require IO::Socket;
+ $OUT = new IO::Socket::INET( Timeout => '10',
+ PeerAddr => $remoteport,
+ Proto => 'tcp',
+ );
+ if (!$OUT) { die "Could not create socket to connect to remote host."; }
+ $IN = $OUT;
}
- # so open("|more") can read from STDOUT and so we don't dingle stdin
- $IN = \*IN;
+ else {
+ if (defined $console) {
+ open(IN,"+<$console") || open(IN,"<$console") || open(IN,"<&STDIN");
+ open(OUT,"+>$console") || open(OUT,">$console") || open(OUT,">&STDERR")
+ || open(OUT,">&STDOUT"); # so we don't dongle stdout
+ } else {
+ open(IN,"<&STDIN");
+ open(OUT,">&STDERR") || open(OUT,">&STDOUT"); # so we don't dongle stdout
+ $console = 'STDIN/OUT';
+ }
+ # so open("|more") can read from STDOUT and so we don't dingle stdin
+ $IN = \*IN;
- $OUT = \*OUT;
+ $OUT = \*OUT;
+ }
select($OUT);
$| = 1; # for DB::OUT
select(STDOUT);
@@ -340,10 +456,10 @@ if ($notty) {
$header =~ s/.Header: ([^,]+),v(\s+\S+\s+\S+).*$/$1$2/;
unless ($runnonstop) {
print $OUT "\nLoading DB routines from $header\n";
- print $OUT ("Emacs support ",
- $emacs ? "enabled" : "available",
+ print $OUT ("Editor support ",
+ $slave_editor ? "enabled" : "available",
".\n");
- print $OUT "\nEnter h or `h h' for help.\n\n";
+ print $OUT "\nEnter h or `h h' for help, or `$doccmd perldebug' for more help.\n\n";
}
}
@@ -416,7 +532,7 @@ EOP
$was_signal = $signal;
$signal = 0;
if ($single || ($trace & 1) || $was_signal) {
- if ($emacs) {
+ if ($slave_editor) {
$position = "\032\032$filename:$line:0\n";
print $LINEINFO $position;
} elsif ($package eq 'DB::fake') {
@@ -427,7 +543,7 @@ Debugged program terminated. Use B<q> to quit or B<R> to restart,
B<h q>, B<h R> or B<h O> to get additional info.
EOP
$package = 'main';
- $usercontext = '($@, $!, $,, $/, $\, $^W) = @saved;' .
+ $usercontext = '($@, $!, $^E, $,, $/, $\, $^W) = @saved;' .
"package $package;"; # this won't let them modify, alas
} else {
$sub =~ s/\'/::/;
@@ -471,13 +587,14 @@ EOP
if $single & 4;
$start = $line;
$incr = -1; # for backward motion.
- @typeahead = @$pretype, @typeahead;
+ @typeahead = (@$pretype, @typeahead);
CMD:
while (($term || &setterm),
($term_pid == $$ or &resetterm),
defined ($cmd=&readline(" DB" . ('<' x $level) .
($#hist+1) . ('>' x $level) .
- " "))) {
+ " ")))
+ {
$single = 0;
$signal = 0;
$cmd =~ s/\\$/\n/ && do {
@@ -487,8 +604,19 @@ EOP
$cmd =~ /^$/ && ($cmd = $laststep);
push(@hist,$cmd) if length($cmd) > 1;
PIPE: {
+ $cmd =~ s/^\s+//s; # trim annoying leading whitespace
+ $cmd =~ s/\s+$//s; # trim annoying trailing whitespace
($i) = split(/\s+/,$cmd);
- eval "\$cmd =~ $alias{$i}", print $OUT $@ if $alias{$i};
+ if ($alias{$i}) {
+ # squelch the sigmangler
+ local $SIG{__DIE__};
+ local $SIG{__WARN__};
+ eval "\$cmd =~ $alias{$i}";
+ if ($@) {
+ print $OUT "Couldn't evaluate `$i' alias: $@";
+ next CMD;
+ }
+ }
$cmd =~ /^q$/ && ($exiting = 1) && exit 0;
$cmd =~ /^h$/ && do {
print_help($help);
@@ -496,10 +624,14 @@ EOP
$cmd =~ /^h\s+h$/ && do {
print_help($summary);
next CMD; };
- $cmd =~ /^h\s+(\S)$/ && do {
- my $asked = "\Q$1";
- if ($help =~ /^(?:[IB]<)$asked/m) {
- while ($help =~ /^((?:[IB]<)$asked([\s\S]*?)\n)(?!\s)/mg) {
+ # support long commands; otherwise bogus errors
+ # happen when you ask for h on <CR> for example
+ $cmd =~ /^h\s+(\S.*)$/ && do {
+ my $asked = $1; # for proper errmsg
+ my $qasked = quotemeta($asked); # for searching
+ # XXX: finds CR but not <CR>
+ if ($help =~ /^<?(?:[IB]<)$qasked/m) {
+ while ($help =~ /^(<?(?:[IB]<)$qasked([\s\S]*?)\n)(?!\s)/mg) {
print_help($1);
}
} else {
@@ -507,7 +639,7 @@ EOP
}
next CMD; };
$cmd =~ /^t$/ && do {
- ($trace & 1) ? ($trace &= ~1) : ($trace |= 1);
+ $trace ^= 1;
print $OUT "Trace = " .
(($trace & 1) ? "on" : "off" ) . "\n";
next CMD; };
@@ -532,7 +664,11 @@ EOP
if (defined &main::dumpvar) {
local $frame = 0;
local $doret = -2;
- &main::dumpvar($packname,@vars);
+ # must detect sigpipe failures
+ eval { &main::dumpvar($packname,@vars) };
+ if ($@) {
+ die unless $@ =~ /dumpvar print failed/;
+ }
} else {
print $OUT "dumpvar.pl not available.\n";
}
@@ -574,16 +710,26 @@ EOP
}
};
$cmd =~ s/^l\s+-\s*$/-/;
- $cmd =~ /^l\b\s*([\':A-Za-z_][\':\w]*)/ && do {
+ $cmd =~ /^([lb])\b\s*(\$.*)/s && do {
+ $evalarg = $2;
+ my ($s) = &eval;
+ print($OUT "Error: $@\n"), next CMD if $@;
+ $s = CvGV_name($s);
+ print($OUT "Interpreted as: $1 $s\n");
+ $cmd = "$1 $s";
+ };
+ $cmd =~ /^l\b\s*([\':A-Za-z_][\':\w]*(\[.*\])?)/s && do {
$subname = $1;
$subname =~ s/\'/::/;
$subname = $package."::".$subname
unless $subname =~ /::/;
$subname = "main".$subname if substr($subname,0,2) eq "::";
- @pieces = split(/:/,find_sub($subname));
+ @pieces = split(/:/,find_sub($subname) || $sub{$subname});
$subrange = pop @pieces;
$file = join(':', @pieces);
if ($file ne $filename) {
+ print $OUT "Switching to file '$file'.\n"
+ unless $slave_editor;
*dbline = $main::{'_<' . $file};
$max = $#dbline;
$filename = $file;
@@ -631,7 +777,7 @@ EOP
$i = $line if $i eq '.';
$i = 1 if $i < 1;
$incr = $end - $i;
- if ($emacs) {
+ if ($slave_editor) {
print $OUT "\032\032$filename:$i:0\n";
$i = $end;
} else {
@@ -667,11 +813,14 @@ EOP
}
}
}
+
+ if (not $had_breakpoints{$file} &= ~1) {
+ delete $had_breakpoints{$file};
+ }
}
undef %postponed;
undef %postponed_file;
undef %break_on_load;
- undef %had_breakpoints;
next CMD; };
$cmd =~ /^L$/ && do {
my $file;
@@ -682,7 +831,7 @@ EOP
for ($i = 1; $i <= $max; $i++) {
if (defined $dbline{$i}) {
- print "$file:\n" unless $was++;
+ print $OUT "$file:\n" unless $was++;
print $OUT " $i:\t", $dbline[$i];
($stop,$action) = split(/\0/, $dbline{$i});
print $OUT " break if (", $stop, ")\n"
@@ -746,7 +895,7 @@ EOP
$break_on_load{$::INC{$file}} = 1 if $::INC{$file};
$file .= '.pm', redo unless $file =~ /\./;
}
- $had_breakpoints{$file} = 1;
+ $had_breakpoints{$file} |= 1;
print $OUT "Will stop on load of `@{[join '\', `', sort keys %break_on_load]}'.\n";
next CMD; };
$cmd =~ /^b\b\s*(postpone|compile)\b\s*([':A-Za-z_][':\w]*)\s*(.*)/ && do {
@@ -759,7 +908,7 @@ EOP
$postponed{$subname} = $break
? "break +0 if $cond" : "compile";
next CMD; };
- $cmd =~ /^b\b\s*([':A-Za-z_][':\w]*)\s*(.*)/ && do {
+ $cmd =~ /^b\b\s*([':A-Za-z_][':\w]*(?:\[.*\])?)\s*(.*)/ && do {
$subname = $1;
$cond = $2 || '1';
$subname =~ s/\'/::/;
@@ -770,9 +919,9 @@ EOP
($file,$i) = (find_sub($subname) =~ /^(.*):(.*)$/);
$i += 0;
if ($i) {
- $filename = $file;
- *dbline = $main::{'_<' . $filename};
- $had_breakpoints{$filename} = 1;
+ local $filename = $file;
+ local *dbline = $main::{'_<' . $filename};
+ $had_breakpoints{$filename} |= 1;
$max = $#dbline;
++$i while $dbline[$i] == 0 && $i < $max;
$dbline{$i} =~ s/^[^\0]*/$cond/;
@@ -781,21 +930,22 @@ EOP
}
next CMD; };
$cmd =~ /^b\b\s*(\d*)\s*(.*)/ && do {
- $i = ($1?$1:$line);
+ $i = $1 || $line;
$cond = $2 || '1';
if ($dbline[$i] == 0) {
print $OUT "Line $i not breakable.\n";
} else {
- $had_breakpoints{$filename} = 1;
+ $had_breakpoints{$filename} |= 1;
$dbline{$i} =~ s/^[^\0]*/$cond/;
}
next CMD; };
- $cmd =~ /^d\b\s*(\d+)?/ && do {
- $i = ($1?$1:$line);
+ $cmd =~ /^d\b\s*(\d*)/ && do {
+ $i = $1 || $line;
$dbline{$i} =~ s/^[^\0]*//;
delete $dbline{$i} if $dbline{$i} eq '';
next CMD; };
$cmd =~ /^A$/ && do {
+ print $OUT "Deleting all actions...\n";
my $file;
for $file (keys %had_breakpoints) {
local *dbline = $main::{'_<' . $file};
@@ -808,6 +958,10 @@ EOP
delete $dbline{$i} if $dbline{$i} eq '';
}
}
+
+ unless ($had_breakpoints{$file} &= ~2) {
+ delete $had_breakpoints{$file};
+ }
}
next CMD; };
$cmd =~ /^O\s*$/ && do {
@@ -825,27 +979,90 @@ EOP
push @$post, action($1);
next CMD; };
$cmd =~ /^<\s*(.*)/ && do {
- $pre = [], next CMD unless $1;
+ unless ($1) {
+ print OUT "All < actions cleared.\n";
+ $pre = [];
+ next CMD;
+ }
+ if ($1 eq '?') {
+ unless (@$pre) {
+ print OUT "No pre-prompt Perl actions.\n";
+ next CMD;
+ }
+ print OUT "Perl commands run before each prompt:\n";
+ for my $action ( @$pre ) {
+ print "\t< -- $action\n";
+ }
+ next CMD;
+ }
$pre = [action($1)];
next CMD; };
$cmd =~ /^>\s*(.*)/ && do {
- $post = [], next CMD unless $1;
+ unless ($1) {
+ print OUT "All > actions cleared.\n";
+ $post = [];
+ next CMD;
+ }
+ if ($1 eq '?') {
+ unless (@$post) {
+ print OUT "No post-prompt Perl actions.\n";
+ next CMD;
+ }
+ print OUT "Perl commands run after each prompt:\n";
+ for my $action ( @$post ) {
+ print "\t> -- $action\n";
+ }
+ next CMD;
+ }
$post = [action($1)];
next CMD; };
$cmd =~ /^\{\{\s*(.*)/ && do {
+ if ($cmd =~ /^\{.*\}$/ && unbalanced(substr($cmd,2))) {
+ print OUT "{{ is now a debugger command\n",
+ "use `;{{' if you mean Perl code\n";
+ $cmd = "h {{";
+ redo CMD;
+ }
push @$pretype, $1;
next CMD; };
$cmd =~ /^\{\s*(.*)/ && do {
- $pretype = [], next CMD unless $1;
+ unless ($1) {
+ print OUT "All { actions cleared.\n";
+ $pretype = [];
+ next CMD;
+ }
+ if ($1 eq '?') {
+ unless (@$pretype) {
+ print OUT "No pre-prompt debugger actions.\n";
+ next CMD;
+ }
+ print OUT "Debugger commands run before each prompt:\n";
+ for my $action ( @$pretype ) {
+ print "\t{ -- $action\n";
+ }
+ next CMD;
+ }
+ if ($cmd =~ /^\{.*\}$/ && unbalanced(substr($cmd,1))) {
+ print OUT "{ is now a debugger command\n",
+ "use `;{' if you mean Perl code\n";
+ $cmd = "h {";
+ redo CMD;
+ }
$pretype = [$1];
next CMD; };
- $cmd =~ /^a\b\s*(\d+)(\s+(.*))?/ && do {
- $i = $1; $j = $3;
- if ($dbline[$i] == 0) {
- print $OUT "Line $i may not have an action.\n";
+ $cmd =~ /^a\b\s*(\d*)\s*(.*)/ && do {
+ $i = $1 || $line; $j = $2;
+ if (length $j) {
+ if ($dbline[$i] == 0) {
+ print $OUT "Line $i may not have an action.\n";
+ } else {
+ $had_breakpoints{$filename} |= 2;
+ $dbline{$i} =~ s/\0[^\0]*//;
+ $dbline{$i} .= "\0" . action($j);
+ }
} else {
$dbline{$i} =~ s/\0[^\0]*//;
- $dbline{$i} .= "\0" . action($j);
+ delete $dbline{$i} if $dbline{$i} eq '';
}
next CMD; };
$cmd =~ /^n$/ && do {
@@ -861,6 +1078,10 @@ EOP
$cmd =~ /^c\b\s*([\w:]*)\s*$/ && do {
end_report(), next CMD if $finished and $level <= 1;
$subname = $i = $1;
+ # Probably not needed, since we finish an interactive
+ # sub-session anyway...
+ # local $filename = $filename;
+ # local *dbline = *dbline; # XXX Would this work?!
if ($i =~ /\D/) { # subroutine name
$subname = $package."::".$subname
unless $subname =~ /::/;
@@ -869,7 +1090,7 @@ EOP
if ($i) {
$filename = $file;
*dbline = $main::{'_<' . $filename};
- $had_breakpoints{$filename}++;
+ $had_breakpoints{$filename} |= 1;
$max = $#dbline;
++$i while $dbline[$i] == 0 && $i < $max;
} else {
@@ -906,7 +1127,7 @@ EOP
set_list("PERLDB_INC", @ini_INC);
if ($0 eq '-e') {
for (1..$#{'::_<-e'}) { # The first line is PERL5DB
- chomp ($cl = $ {'::_<-e'}[$_]);
+ chomp ($cl = ${'::_<-e'}[$_]);
push @script, '-e', $cl;
}
} else {
@@ -970,8 +1191,8 @@ EOP
set_list("PERLDB_POST", @$post);
set_list("PERLDB_TYPEAHEAD", @typeahead);
$ENV{PERLDB_RESTART} = 1;
- #print "$^X, '-d', @flags, @script, ($emacs ? '-emacs' : ()), @ARGS";
- exec $^X, '-d', @flags, @script, ($emacs ? '-emacs' : ()), @ARGS;
+ #print "$^X, '-d', @flags, @script, ($slave_editor ? '-emacs' : ()), @ARGS";
+ exec $^X, '-d', @flags, @script, ($slave_editor ? '-emacs' : ()), @ARGS;
print $OUT "exec failed: $!\n";
last CMD; };
$cmd =~ /^T$/ && do {
@@ -993,6 +1214,9 @@ EOP
$inpat = $1;
$inpat =~ s:([^\\])/$:$1:;
if ($inpat ne "") {
+ # squelch the sigmangler
+ local $SIG{__DIE__};
+ local $SIG{__WARN__};
eval '$inpat =~ m'."\a$inpat\a";
if ($@ ne "") {
print $OUT "$@";
@@ -1008,7 +1232,7 @@ EOP
$start = 1 if ($start > $max);
last if ($start == $end);
if ($dbline[$start] =~ m' . "\a$pat\a" . 'i) {
- if ($emacs) {
+ if ($slave_editor) {
print $OUT "\032\032$filename:$start:0\n";
} else {
print $OUT "$start:\t", $dbline[$start], "\n";
@@ -1022,9 +1246,12 @@ EOP
$inpat = $1;
$inpat =~ s:([^\\])\?$:$1:;
if ($inpat ne "") {
+ # squelch the sigmangler
+ local $SIG{__DIE__};
+ local $SIG{__WARN__};
eval '$inpat =~ m'."\a$inpat\a";
if ($@ ne "") {
- print $OUT "$@";
+ print $OUT $@;
next CMD;
}
$pat = $inpat;
@@ -1037,7 +1264,7 @@ EOP
$start = $max if ($start <= 0);
last if ($start == $end);
if ($dbline[$start] =~ m' . "\a$pat\a" . 'i) {
- if ($emacs) {
+ if ($slave_editor) {
print $OUT "\032\032$filename:$start:0\n";
} else {
print $OUT "$start:\t", $dbline[$start], "\n";
@@ -1049,9 +1276,9 @@ EOP
next CMD; };
$cmd =~ /^$rc+\s*(-)?(\d+)?$/ && do {
pop(@hist) if length($cmd) > 1;
- $i = $1 ? ($#hist-($2?$2:1)) : ($2?$2:$#hist);
+ $i = $1 ? ($#hist-($2||1)) : ($2||$#hist);
$cmd = $hist[$i];
- print $OUT $cmd;
+ print $OUT $cmd, "\n";
redo CMD; };
$cmd =~ /^$sh$sh\s*([\x00-\xff]*)/ && do {
&system($1);
@@ -1067,37 +1294,62 @@ EOP
next CMD;
}
$cmd = $hist[$i];
- print $OUT $cmd;
+ print $OUT $cmd, "\n";
redo CMD; };
$cmd =~ /^$sh$/ && do {
&system($ENV{SHELL}||"/bin/sh");
next CMD; };
$cmd =~ /^$sh\s*([\x00-\xff]*)/ && do {
+ # XXX: using csh or tcsh destroys sigint retvals!
+ #&system($1); # use this instead
&system($ENV{SHELL}||"/bin/sh","-c",$1);
next CMD; };
$cmd =~ /^H\b\s*(-(\d+))?/ && do {
- $end = $2?($#hist-$2):0;
+ $end = $2 ? ($#hist-$2) : 0;
$hist = 0 if $hist < 0;
for ($i=$#hist; $i>$end; $i--) {
print $OUT "$i: ",$hist[$i],"\n"
unless $hist[$i] =~ /^.?$/;
};
next CMD; };
+ $cmd =~ /^(?:man|(?:perl)?doc)\b(?:\s+([^(]*))?$/ && do {
+ runman($1);
+ next CMD; };
$cmd =~ s/^p$/print {\$DB::OUT} \$_/;
$cmd =~ s/^p\b/print {\$DB::OUT} /;
- $cmd =~ /^=/ && do {
- if (local($k,$v) = ($cmd =~ /^=\s*(\S+)\s+(.*)/)) {
- $alias{$k}="s~$k~$v~";
- print $OUT "$k = $v\n";
- } elsif ($cmd =~ /^=\s*$/) {
- foreach $k (sort keys(%alias)) {
- if (($v = $alias{$k}) =~ s~^s\~$k\~(.*)\~$~$1~) {
- print $OUT "$k = $v\n";
- } else {
+ $cmd =~ s/^=\s*// && do {
+ my @keys;
+ if (length $cmd == 0) {
+ @keys = sort keys %alias;
+ }
+ elsif (my($k,$v) = ($cmd =~ /^(\S+)\s+(\S.*)/)) {
+ # can't use $_ or kill //g state
+ for my $x ($k, $v) { $x =~ s/\a/\\a/g }
+ $alias{$k} = "s\a$k\a$v\a";
+ # squelch the sigmangler
+ local $SIG{__DIE__};
+ local $SIG{__WARN__};
+ unless (eval "sub { s\a$k\a$v\a }; 1") {
+ print $OUT "Can't alias $k to $v: $@\n";
+ delete $alias{$k};
+ next CMD;
+ }
+ @keys = ($k);
+ }
+ else {
+ @keys = ($cmd);
+ }
+ for my $k (@keys) {
+ if ((my $v = $alias{$k}) =~ ss\a$k\a(.*)\a$1) {
+ print $OUT "$k\t= $1\n";
+ }
+ elsif (defined $alias{$k}) {
print $OUT "$k\t$alias{$k}\n";
- };
- };
- };
+ }
+ else {
+ print "No alias for $k\n";
+ }
+ }
next CMD; };
$cmd =~ /^\|\|?\s*[^|]/ && do {
if ($pager =~ /^\|/) {
@@ -1106,25 +1358,29 @@ EOP
} else {
open(SAVEOUT,">&OUT") || &warn("Can't save DB::OUT");
}
+ fix_less();
unless ($piped=open(OUT,$pager)) {
&warn("Can't pipe output to `$pager'");
if ($pager =~ /^\|/) {
- open(OUT,">&STDOUT") || &warn("Can't restore DB::OUT");
+ open(OUT,">&STDOUT") # XXX: lost message
+ || &warn("Can't restore DB::OUT");
open(STDOUT,">&SAVEOUT")
|| &warn("Can't restore STDOUT");
close(SAVEOUT);
} else {
- open(OUT,">&STDOUT") || &warn("Can't restore DB::OUT");
+ open(OUT,">&STDOUT") # XXX: lost message
+ || &warn("Can't restore DB::OUT");
}
next CMD;
}
$SIG{PIPE}= \&DB::catch if $pager =~ /^\|/
- && "" eq $SIG{PIPE} || "DEFAULT" eq $SIG{PIPE};
+ && ("" eq $SIG{PIPE} || "DEFAULT" eq $SIG{PIPE});
$selected= select(OUT);
$|= 1;
select( $selected ), $selected= "" unless $cmd =~ /^\|\|/;
$cmd =~ s/^\|+\s*//;
- redo PIPE; };
+ redo PIPE;
+ };
# XXX Local variants do not work!
$cmd =~ s/^t\s/\$DB::trace |= 1;\n/;
$cmd =~ s/^s\s/\$DB::single = 1;\n/ && do {$laststep = 's'};
@@ -1139,14 +1395,27 @@ EOP
} continue { # CMD:
if ($piped) {
if ($pager =~ /^\|/) {
- $?= 0; close(OUT) || &warn("Can't close DB::OUT");
- &warn( "Pager `$pager' failed: ",
- ($?>>8) > 128 ? ($?>>8)-256 : ($?>>8),
- ( $? & 128 ) ? " (core dumped)" : "",
- ( $? & 127 ) ? " (SIG ".($?&127).")" : "", "\n" ) if $?;
+ $? = 0;
+ # we cannot warn here: the handle is missing --tchrist
+ close(OUT) || print SAVEOUT "\nCan't close DB::OUT\n";
+
+ # most of the $? crud was coping with broken cshisms
+ if ($?) {
+ print SAVEOUT "Pager `$pager' failed: ";
+ if ($? == -1) {
+ print SAVEOUT "shell returned -1\n";
+ } elsif ($? >> 8) {
+ print SAVEOUT
+ ( $? & 127 ) ? " (SIG#".($?&127).")" : "",
+ ( $? & 128 ) ? " -- core dumped" : "", "\n";
+ } else {
+ print SAVEOUT "status ", ($? >> 8), "\n";
+ }
+ }
+
open(OUT,">&STDOUT") || &warn("Can't restore DB::OUT");
open(STDOUT,">&SAVEOUT") || &warn("Can't restore STDOUT");
- $SIG{PIPE}= "DEFAULT" if $SIG{PIPE} eq \&DB::catch;
+ $SIG{PIPE} = "DEFAULT" if $SIG{PIPE} eq \&DB::catch;
# Will stop ignoring SIGPIPE if done like nohup(1)
# does SIGINT but Perl doesn't give us a choice.
} else {
@@ -1231,11 +1500,13 @@ sub save {
# The following takes its argument via $evalarg to preserve current @_
sub eval {
- my @res;
+ # 'my' would make it visible from user code
+ # but so does local! --tchrist
+ local @res;
{
- my $otrace = $trace;
- my $osingle = $single;
- my $od = $^D;
+ local $otrace = $trace;
+ local $osingle = $single;
+ local $od = $^D;
@res = eval "$usercontext $evalarg;\n"; # '\n' for nice recursive debug
$trace = $otrace;
$single = $osingle;
@@ -1264,7 +1535,7 @@ sub postponed_sub {
$i += $offset;
local *dbline = $main::{'_<' . $file};
local $^W = 0; # != 0 is magical below
- $had_breakpoints{$file}++;
+ $had_breakpoints{$file} |= 1;
my $max = $#dbline;
++$i until $dbline[$i] != 0 or $i >= $max;
$dbline{$i} = delete $postponed{$subname};
@@ -1292,11 +1563,11 @@ sub postponed {
if $break_on_load{$filename};
print $LINEINFO ' ' x $stack_depth, "Package $filename.\n" if $frame;
return unless $postponed_file{$filename};
- $had_breakpoints{$filename}++;
+ $had_breakpoints{$filename} |= 1;
#%dbline = %{$postponed_file{$filename}}; # Cannot be done: unsufficient magic
my $key;
for $key (keys %{$postponed_file{$filename}}) {
- $dbline{$key} = $ {$postponed_file{$filename}}{$key};
+ $dbline{$key} = ${$postponed_file{$filename}}{$key};
}
delete $postponed_file{$filename};
}
@@ -1412,6 +1683,20 @@ sub action {
$action;
}
+sub unbalanced {
+ # i hate using globals!
+ $balanced_brace_re ||= qr{
+ ^ \{
+ (?:
+ (?> [^{}] + ) # Non-parens without backtracking
+ |
+ (??{ $balanced_brace_re }) # Group with matching parens
+ ) *
+ \} $
+ }x;
+ return $_[0] !~ m/$balanced_brace_re/;
+}
+
sub gets {
local($.);
#<IN>;
@@ -1420,19 +1705,30 @@ sub gets {
sub system {
# We save, change, then restore STDIN and STDOUT to avoid fork() since
- # many non-Unix systems can do system() but have problems with fork().
+ # some non-Unix systems can do system() but have problems with fork().
open(SAVEIN,"<&STDIN") || &warn("Can't save STDIN");
open(SAVEOUT,">&STDOUT") || &warn("Can't save STDOUT");
open(STDIN,"<&IN") || &warn("Can't redirect STDIN");
open(STDOUT,">&OUT") || &warn("Can't redirect STDOUT");
+
+ # XXX: using csh or tcsh destroys sigint retvals!
system(@_);
open(STDIN,"<&SAVEIN") || &warn("Can't restore STDIN");
open(STDOUT,">&SAVEOUT") || &warn("Can't restore STDOUT");
- close(SAVEIN); close(SAVEOUT);
- &warn( "(Command returned ", ($?>>8) > 128 ? ($?>>8)-256 : ($?>>8), ")",
- ( $? & 128 ) ? " (core dumped)" : "",
- ( $? & 127 ) ? " (SIG ".($?&127).")" : "", "\n" ) if $?;
- $?;
+ close(SAVEIN);
+ close(SAVEOUT);
+
+
+ # most of the $? crud was coping with broken cshisms
+ if ($? >> 8) {
+ &warn("(Command exited ", ($? >> 8), ")\n");
+ } elsif ($?) {
+ &warn( "(Command died of SIG#", ($? & 127),
+ (($? & 128) ? " -- core dumped" : "") , ")", "\n");
+ }
+
+ return $?;
+
}
sub setterm {
@@ -1449,7 +1745,7 @@ sub setterm {
$| = 1;
select($sel);
} else {
- eval "require Term::Rendezvous;" or die $@;
+ eval "require Term::Rendezvous;" or die;
my $rv = $ENV{PERLDB_NOTTY} || "/tmp/perldbtty$$";
my $term_rv = new Term::Rendezvous $rv;
$IN = $term_rv->IN;
@@ -1518,7 +1814,15 @@ sub readline {
}
local $frame = 0;
local $doret = -2;
- $term->readline(@_);
+ if (ref $OUT and UNIVERSAL::isa($OUT, 'IO::Socket::INET')) {
+ print $OUT @_;
+ my $stuff;
+ $IN->recv( $stuff, 2048 ); # XXX: what's wrong with sysread?
+ $stuff;
+ }
+ else {
+ $term->readline(@_);
+ }
}
sub dump_option {
@@ -1532,15 +1836,15 @@ sub option_val {
my ($opt, $default)= @_;
my $val;
if (defined $optionVars{$opt}
- and defined $ {$optionVars{$opt}}) {
- $val = $ {$optionVars{$opt}};
+ and defined ${$optionVars{$opt}}) {
+ $val = ${$optionVars{$opt}};
} elsif (defined $optionAction{$opt}
and defined &{$optionAction{$opt}}) {
$val = &{$optionAction{$opt}}();
} elsif (defined $optionAction{$opt}
and not defined $option{$opt}
or defined $optionVars{$opt}
- and not defined $ {$optionVars{$opt}}) {
+ and not defined ${$optionVars{$opt}}) {
$val = $default;
} else {
$val = $option{$opt};
@@ -1550,8 +1854,16 @@ sub option_val {
sub parse_options {
local($_)= @_;
- while ($_ ne "") {
- s/^(\w+)(\s*$|\W)// or print($OUT "Invalid option `$_'\n"), last;
+ # too dangerous to let intuitive usage overwrite important things
+ # defaultion should never be the default
+ my %opt_needs_val = map { ( $_ => 1 ) } qw{
+ arrayDepth hashDepth LineInfo maxTraceLen ornaments
+ pager quote ReadLine recallCommand RemotePort ShellBang TTY
+ };
+ while (length) {
+ my $val_defaulted;
+ s/^\s+// && next;
+ s/^(\w+)(\W?)// or print($OUT "Invalid option `$_'\n"), last;
my ($opt,$sep) = ($1,$2);
my $val;
if ("?" eq $sep) {
@@ -1559,59 +1871,83 @@ sub parse_options {
if /^\S/;
#&dump_option($opt);
} elsif ($sep !~ /\S/) {
- $val = "1";
+ $val_defaulted = 1;
+ $val = "1"; # this is an evil default; make 'em set it!
} elsif ($sep eq "=") {
- s/^(\S*)($|\s+)//;
+
+ if (s/ (["']) ( (?: \\. | (?! \1 ) [^\\] )* ) \1 //x) {
+ my $quote = $1;
+ ($val = $2) =~ s/\\([$quote\\])/$1/g;
+ } else {
+ s/^(\S*)//;
$val = $1;
+ print OUT qq(Option better cleared using $opt=""\n)
+ unless length $val;
+ }
+
} else { #{ to "let some poor schmuck bounce on the % key in B<vi>."
my ($end) = "\\" . substr( ")]>}$sep", index("([<{",$sep), 1 ); #}
s/^(([^\\$end]|\\[\\$end])*)$end($|\s+)// or
print($OUT "Unclosed option value `$opt$sep$_'\n"), last;
- $val = $1;
- $val =~ s/\\([\\$end])/$1/g;
+ ($val = $1) =~ s/\\([\\$end])/$1/g;
}
- my ($option);
- my $matches =
- grep( /^\Q$opt/ && ($option = $_), @options );
- $matches = grep( /^\Q$opt/i && ($option = $_), @options )
- unless $matches;
- print $OUT "Unknown option `$opt'\n" unless $matches;
- print $OUT "Ambiguous option `$opt'\n" if $matches > 1;
- $option{$option} = $val if $matches == 1 and defined $val;
- eval "local \$frame = 0; local \$doret = -2;
- require '$optionRequire{$option}'"
- if $matches == 1 and defined $optionRequire{$option} and defined $val;
- $ {$optionVars{$option}} = $val
- if $matches == 1
- and defined $optionVars{$option} and defined $val;
- & {$optionAction{$option}} ($val)
- if $matches == 1
- and defined $optionAction{$option}
- and defined &{$optionAction{$option}} and defined $val;
- &dump_option($option) if $matches == 1 && $OUT ne \*STDERR; # Not $rcfile
- s/^\s+//;
+
+ my $option;
+ my $matches = grep( /^\Q$opt/ && ($option = $_), @options )
+ || grep( /^\Q$opt/i && ($option = $_), @options );
+
+ print($OUT "Unknown option `$opt'\n"), next unless $matches;
+ print($OUT "Ambiguous option `$opt'\n"), next if $matches > 1;
+
+ if ($opt_needs_val{$option} && $val_defaulted) {
+ print $OUT "Option `$opt' is non-boolean. Use `O $option=VAL' to set, `O $option?' to query\n";
+ next;
+ }
+
+ $option{$option} = $val if defined $val;
+
+ eval qq{
+ local \$frame = 0;
+ local \$doret = -2;
+ require '$optionRequire{$option}';
+ 1;
+ } || die # XXX: shouldn't happen
+ if defined $optionRequire{$option} &&
+ defined $val;
+
+ ${$optionVars{$option}} = $val
+ if defined $optionVars{$option} &&
+ defined $val;
+
+ &{$optionAction{$option}} ($val)
+ if defined $optionAction{$option} &&
+ defined &{$optionAction{$option}} &&
+ defined $val;
+
+ # Not $rcfile
+ dump_option($option) unless $OUT eq \*STDERR;
}
}
sub set_list {
my ($stem,@list) = @_;
my $val;
- $ENV{"$ {stem}_n"} = @list;
+ $ENV{"${stem}_n"} = @list;
for $i (0 .. $#list) {
$val = $list[$i];
$val =~ s/\\/\\\\/g;
$val =~ s/([\0-\37\177\200-\377])/"\\0x" . unpack('H2',$1)/eg;
- $ENV{"$ {stem}_$i"} = $val;
+ $ENV{"${stem}_$i"} = $val;
}
}
sub get_list {
my $stem = shift;
my @list;
- my $n = delete $ENV{"$ {stem}_n"};
+ my $n = delete $ENV{"${stem}_n"};
my $val;
for $i (0 .. $n - 1) {
- $val = delete $ENV{"$ {stem}_$i"};
+ $val = delete $ENV{"${stem}_$i"};
$val =~ s/\\((\\)|0x(..))/ $2 ? $2 : pack('H2', $3) /ge;
push @list, $val;
}
@@ -1666,8 +2002,16 @@ sub ReadLine {
$rl;
}
+sub RemotePort {
+ if ($term) {
+ &warn("Too late to set RemotePort, enabled on next 'R'!\n") if @_;
+ }
+ $remoteport = shift if @_;
+ $remoteport;
+}
+
sub tkRunning {
- if ($ {$term->Features}{tkRunning}) {
+ if (${$term->Features}{tkRunning}) {
return $term->tkRunning(@_);
} else {
print $OUT "tkRunning not supported by current ReadLine package.\n";
@@ -1729,7 +2073,7 @@ sub LineInfo {
return $lineinfo unless @_;
$lineinfo = shift;
my $stream = ($lineinfo =~ /^(\+?\>|\|)/) ? $lineinfo : ">$lineinfo";
- $emacs = ($stream =~ /^\|/);
+ $slave_editor = ($stream =~ /^\|/);
open(LINEINFO, "$stream") || &warn("Cannot open `$stream' for write");
$LINEINFO = \*LINEINFO;
my $save = select($LINEINFO);
@@ -1747,8 +2091,8 @@ sub list_versions {
s,/,::,g ;
s/^perl5db$/DB/;
s/^Term::ReadLine::readline$/readline/;
- if (defined $ { $_ . '::VERSION' }) {
- $version{$file} = "$ { $_ . '::VERSION' } from ";
+ if (defined ${ $_ . '::VERSION' }) {
+ $version{$file} = "${ $_ . '::VERSION' } from ";
}
$version{$file} .= $INC{$file};
}
@@ -1756,6 +2100,10 @@ sub list_versions {
}
sub sethelp {
+ # XXX: make sure these are tabs between the command and explantion,
+ # or print_help will screw up your formatting if you have
+ # eeevil ornaments enabled. This is an insane mess.
+
$help = "
B<T> Stack trace.
B<s> [I<expr>] Single step [in I<expr>].
@@ -1768,11 +2116,18 @@ B<l> I<min>B<+>I<incr> List I<incr>+1 lines starting at I<min>.
B<l> I<min>B<->I<max> List lines I<min> through I<max>.
B<l> I<line> List single I<line>.
B<l> I<subname> List first window of lines from subroutine.
+B<l> I<\$var> List first window of lines from subroutine referenced by I<\$var>.
B<l> List next window of lines.
B<-> List previous window of lines.
B<w> [I<line>] List window around I<line>.
B<.> Return to the executed line.
-B<f> I<filename> Switch to viewing I<filename>. Must be loaded.
+B<f> I<filename> Switch to viewing I<filename>. File must be already loaded.
+ I<filename> may be either the full name of the file, or a regular
+ expression matching the full file name:
+ B<f> I</home/me/foo.pl> and B<f> I<oo\\.> may access the same file.
+ Evals (with saved bodies) are considered to be filenames:
+ B<f> I<(eval 7)> and B<f> I<eval 7\\b> access the body of the 7th eval
+ (in the order of execution).
B</>I<pattern>B</> Search forwards for I<pattern>; final B</> is optional.
B<?>I<pattern>B<?> Search backwards for I<pattern>; final B<?> is optional.
B<L> List all breakpoints and actions.
@@ -1784,6 +2139,7 @@ B<b> [I<line>] [I<condition>]
I<condition> breaks if it evaluates to true, defaults to '1'.
B<b> I<subname> [I<condition>]
Set breakpoint at first line of subroutine.
+B<b> I<\$var> Set breakpoint at first line of subroutine referenced by I<\$var>.
B<b> B<load> I<filename> Set breakpoint on `require'ing the given file.
B<b> B<postpone> I<subname> [I<condition>]
Set breakpoint at first line of subroutine after
@@ -1793,10 +2149,12 @@ B<b> B<compile> I<subname>
B<d> [I<line>] Delete the breakpoint for I<line>.
B<D> Delete all breakpoints.
B<a> [I<line>] I<command>
- Set an action to be done before the I<line> is executed.
+ Set an action to be done before the I<line> is executed;
+ I<line> defaults to the current execution line.
Sequence is: check for breakpoint/watchpoint, print line
if necessary, do action, prompt user if necessary,
- execute expression.
+ execute line.
+B<a> [I<line>] Delete the action for I<line>.
B<A> Delete all actions.
B<W> I<expr> Add a global watch-expression.
B<W> Delete all watch-expressions.
@@ -1807,37 +2165,16 @@ B<x> I<expr> Evals expression in array context, dumps the result.
B<m> I<expr> Evals expression in array context, prints methods callable
on the first element of the result.
B<m> I<class> Prints methods callable via the given class.
-B<O> [I<opt>[B<=>I<val>]] [I<opt>B<\">I<val>B<\">] [I<opt>B<?>]...
- Set or query values of options. I<val> defaults to 1. I<opt> can
- be abbreviated. Several options can be listed.
- I<recallCommand>, I<ShellBang>: chars used to recall command or spawn shell;
- I<pager>: program for output of \"|cmd\";
- I<tkRunning>: run Tk while prompting (with ReadLine);
- I<signalLevel> I<warnLevel> I<dieLevel>: level of verbosity;
- I<inhibit_exit> Allows stepping off the end of the script.
- I<ImmediateStop> Debugger should stop as early as possible.
- The following options affect what happens with B<V>, B<X>, and B<x> commands:
- I<arrayDepth>, I<hashDepth>: print only first N elements ('' for all);
- I<compactDump>, I<veryCompact>: change style of array and hash dump;
- I<globPrint>: whether to print contents of globs;
- I<DumpDBFiles>: dump arrays holding debugged files;
- I<DumpPackages>: dump symbol tables of packages;
- I<DumpReused>: dump contents of \"reused\" addresses;
- I<quote>, I<HighBit>, I<undefPrint>: change style of string dump;
- I<bareStringify>: Do not print the overload-stringified value;
- Option I<PrintRet> affects printing of return value after B<r> command,
- I<frame> affects printing messages on entry and exit from subroutines.
- I<AutoTrace> affects printing messages on every possible breaking point.
- I<maxTraceLen> gives maximal length of evals/args listed in stack trace.
- I<ornaments> affects screen appearance of the command line.
- During startup options are initialized from \$ENV{PERLDB_OPTS}.
- You can put additional initialization options I<TTY>, I<noTTY>,
- I<ReadLine>, and I<NonStop> there (or use `B<R>' after you set them).
+
+B<<> ? List Perl commands to run before each prompt.
B<<> I<expr> Define Perl command to run before each prompt.
B<<<> I<expr> Add to the list of Perl commands to run before each prompt.
+B<>> ? List Perl commands to run after each prompt.
B<>> I<expr> Define Perl command to run after each prompt.
-B<>>B<>> I<expr> Add to the list of Perl commands to run after each prompt.
+B<>>B<>> I<expr> Add to the list of Perl commands to run after each prompt.
B<{> I<db_command> Define debugger command to run before each prompt.
+B<{> ? List debugger commands to run before each prompt.
+B<<> I<expr> Define Perl command to run before each prompt.
B<{{> I<db_command> Add to the list of debugger commands to run before each prompt.
B<$prc> I<number> Redo a previous command (default previous command).
B<$prc> I<-number> Redo number'th-to-last command.
@@ -1859,28 +2196,65 @@ B<R> Pure-man-restart of debugger, some of debugger state
Currently the following setting are preserved:
history, breakpoints and actions, debugger B<O>ptions
and the following command-line options: I<-w>, I<-I>, I<-e>.
+
+B<O> [I<opt>] ... Set boolean option to true
+B<O> [I<opt>B<?>] Query options
+B<O> [I<opt>B<=>I<val>] [I<opt>=B<\">I<val>B<\">] ...
+ Set options. Use quotes in spaces in value.
+ I<recallCommand>, I<ShellBang> chars used to recall command or spawn shell;
+ I<pager> program for output of \"|cmd\";
+ I<tkRunning> run Tk while prompting (with ReadLine);
+ I<signalLevel> I<warnLevel> I<dieLevel> level of verbosity;
+ I<inhibit_exit> Allows stepping off the end of the script.
+ I<ImmediateStop> Debugger should stop as early as possible.
+ I<RemotePort> Remote hostname:port for remote debugging
+ The following options affect what happens with B<V>, B<X>, and B<x> commands:
+ I<arrayDepth>, I<hashDepth> print only first N elements ('' for all);
+ I<compactDump>, I<veryCompact> change style of array and hash dump;
+ I<globPrint> whether to print contents of globs;
+ I<DumpDBFiles> dump arrays holding debugged files;
+ I<DumpPackages> dump symbol tables of packages;
+ I<DumpReused> dump contents of \"reused\" addresses;
+ I<quote>, I<HighBit>, I<undefPrint> change style of string dump;
+ I<bareStringify> Do not print the overload-stringified value;
+ Other options include:
+ I<PrintRet> affects printing of return value after B<r> command,
+ I<frame> affects printing messages on entry and exit from subroutines.
+ I<AutoTrace> affects printing messages on every possible breaking point.
+ I<maxTraceLen> gives maximal length of evals/args listed in stack trace.
+ I<ornaments> affects screen appearance of the command line.
+ During startup options are initialized from \$ENV{PERLDB_OPTS}.
+ You can put additional initialization options I<TTY>, I<noTTY>,
+ I<ReadLine>, I<NonStop>, and I<RemotePort> there (or use
+ `B<R>' after you set them).
+
+B<q> or B<^D> Quit. Set B<\$DB::finished = 0> to debug global destruction.
B<h> [I<db_command>] Get help [on a specific debugger command], enter B<|h> to page.
B<h h> Summary of debugger commands.
-B<q> or B<^D> Quit. Set B<\$DB::finished = 0> to debug global destruction.
+B<$doccmd> I<manpage> Runs the external doc viewer B<$doccmd> command on the
+ named Perl I<manpage>, or on B<$doccmd> itself if omitted.
+ Set B<\$DB::doccmd> to change viewer.
+
+Type `|h' for a paged display if this was too hard to read.
+
+"; # Fix balance of vi % matching: } }}
-";
$summary = <<"END_SUM";
I<List/search source lines:> I<Control script execution:>
B<l> [I<ln>|I<sub>] List source code B<T> Stack trace
B<-> or B<.> List previous/current line B<s> [I<expr>] Single step [in expr]
B<w> [I<line>] List around line B<n> [I<expr>] Next, steps over subs
- B<f> I<filename> View source in file <B<CR>> Repeat last B<n> or B<s>
+ B<f> I<filename> View source in file <B<CR>/B<Enter>> Repeat last B<n> or B<s>
B</>I<pattern>B</> B<?>I<patt>B<?> Search forw/backw B<r> Return from subroutine
B<v> Show versions of modules B<c> [I<ln>|I<sub>] Continue until position
I<Debugger controls:> B<L> List break/watch/actions
B<O> [...] Set debugger options B<t> [I<expr>] Toggle trace [trace expr]
- B<<>[B<<>] or B<{>[B<{>] [I<cmd>] Do before prompt B<b> [I<ln>|I<event>] [I<cnd>] Set breakpoint
- B<>>[B<>>] [I<cmd>] Do after prompt B<b> I<sub> [I<cnd>] Set breakpoint for sub
+ B<<>[B<<>]|B<{>[B<{>]|B<>>[B<>>] [I<cmd>] Do pre/post-prompt B<b> [I<ln>|I<event>|I<sub>] [I<cnd>] Set breakpoint
B<$prc> [I<N>|I<pat>] Redo a previous command B<d> [I<ln>] or B<D> Delete a/all breakpoints
B<H> [I<-num>] Display last num commands B<a> [I<ln>] I<cmd> Do cmd before line
B<=> [I<a> I<val>] Define/list an alias B<W> I<expr> Add a watch expression
B<h> [I<db_cmd>] Get help on command B<A> or B<W> Delete all actions/watch
- B<|>[B<|>]I<dbcmd> Send output to pager B<$psh>\[B<$psh>\] I<syscmd> Run cmd in a subprocess
+ B<|>[B<|>]I<db_cmd> Send output to pager B<$psh>\[B<$psh>\] I<syscmd> Run cmd in a subprocess
B<q> or B<^D> Quit B<R> Attempt a restart
I<Data Examination:> B<expr> Execute perl code, also see: B<s>,B<n>,B<t> I<expr>
B<x>|B<m> I<expr> Evals expr in array context, dumps the result or lists methods.
@@ -1888,17 +2262,71 @@ I<Data Examination:> B<expr> Execute perl code, also see: B<s>,B<n>,B<
B<S> [[B<!>]I<pat>] List subroutine names [not] matching pattern
B<V> [I<Pk> [I<Vars>]] List Variables in Package. Vars can be ~pattern or !pattern.
B<X> [I<Vars>] Same as \"B<V> I<current_package> [I<Vars>]\".
+For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
END_SUM
- # ')}}; # Fix balance of Emacs parsing
+ # ')}}; # Fix balance of vi % matching
}
sub print_help {
- my $message = shift;
- if (@Term::ReadLine::TermCap::rl_term_set) {
- $message =~ s/B<([^>]+|>)>/$Term::ReadLine::TermCap::rl_term_set[2]$1$Term::ReadLine::TermCap::rl_term_set[3]/g;
- $message =~ s/I<([^>]+|>)>/$Term::ReadLine::TermCap::rl_term_set[0]$1$Term::ReadLine::TermCap::rl_term_set[1]/g;
- }
- print $OUT $message;
+ local $_ = shift;
+
+ # Restore proper alignment destroyed by eeevil I<> and B<>
+ # ornaments: A pox on both their houses!
+ #
+ # A help command will have everything up to and including
+ # the first tab sequence paddeed into a field 16 (or if indented 20)
+ # wide. If it's wide than that, an extra space will be added.
+ s{
+ ^ # only matters at start of line
+ ( \040{4} | \t )* # some subcommands are indented
+ ( < ? # so <CR> works
+ [BI] < [^\t\n] + ) # find an eeevil ornament
+ ( \t+ ) # original separation, discarded
+ ( .* ) # this will now start (no earlier) than
+ # column 16
+ } {
+ my($leadwhite, $command, $midwhite, $text) = ($1, $2, $3, $4);
+ my $clean = $command;
+ $clean =~ s/[BI]<([^>]*)>/$1/g;
+ # replace with this whole string:
+ (length($leadwhite) ? " " x 4 : "")
+ . $command
+ . ((" " x (16 + (length($leadwhite) ? 4 : 0) - length($clean))) || " ")
+ . $text;
+
+ }mgex;
+
+ s{ # handle bold ornaments
+ B < ( [^>] + | > ) >
+ } {
+ $Term::ReadLine::TermCap::rl_term_set[2]
+ . $1
+ . $Term::ReadLine::TermCap::rl_term_set[3]
+ }gex;
+
+ s{ # handle italic ornaments
+ I < ( [^>] + | > ) >
+ } {
+ $Term::ReadLine::TermCap::rl_term_set[0]
+ . $1
+ . $Term::ReadLine::TermCap::rl_term_set[1]
+ }gex;
+
+ print $OUT $_;
+}
+
+sub fix_less {
+ return if defined $ENV{LESS} && $ENV{LESS} =~ /r/;
+ my $is_less = $pager =~ /\bless\b/;
+ if ($pager =~ /\bmore\b/) {
+ my @st_more = stat('/usr/bin/more');
+ my @st_less = stat('/usr/bin/less');
+ $is_less = @st_more && @st_less
+ && $st_more[0] == $st_less[0]
+ && $st_more[1] == $st_less[1];
+ }
+ # changes environment!
+ $ENV{LESS} .= 'r' if $is_less;
}
sub diesignal {
@@ -1949,8 +2377,10 @@ sub dbdie {
}
eval { require Carp } if defined $^S; # If error/warning during compilation,
# require may be broken.
+
die(@_, "\nCannot print stack trace, load with -MCarp option to see stack")
unless defined &Carp::longmess;
+
# We do not want to debug this chunk (automatic disabling works
# inside DB::DB, but not in Carp).
my ($mysingle,$mytrace) = ($single,$trace);
@@ -2008,10 +2438,31 @@ sub signalLevel {
$signalLevel;
}
+sub CvGV_name {
+ my $in = shift;
+ my $name = CvGV_name_or_bust($in);
+ defined $name ? $name : $in;
+}
+
+sub CvGV_name_or_bust {
+ my $in = shift;
+ return if $skipCvGV; # Backdoor to avoid problems if XS broken...
+ $in = \&$in; # Hard reference...
+ eval {require Devel::Peek; 1} or return;
+ my $gv = Devel::Peek::CvGV($in) or return;
+ *$gv{PACKAGE} . '::' . *$gv{NAME};
+}
+
sub find_sub {
my $subr = shift;
- return unless defined &$subr;
$sub{$subr} or do {
+ return unless defined &$subr;
+ my $name = CvGV_name_or_bust($subr);
+ my $data;
+ $data = $sub{$name} if defined $name;
+ return $data if defined $data;
+
+ # Old stupid way...
$subr = \&$subr; # Hard reference
my $s;
for (keys %sub) {
@@ -2036,18 +2487,81 @@ sub methods_via {
my $prefix = shift;
my $prepend = $prefix ? "via $prefix: " : '';
my $name;
- for $name (grep {defined &{$ {"$ {class}::"}{$_}}}
- sort keys %{"$ {class}::"}) {
+ for $name (grep {defined &{${"${class}::"}{$_}}}
+ sort keys %{"${class}::"}) {
next if $seen{ $name }++;
print $DB::OUT "$prepend$name\n";
}
return unless shift; # Recurse?
- for $name (@{"$ {class}::ISA"}) {
+ for $name (@{"${class}::ISA"}) {
$prepend = $prefix ? $prefix . " -> $name" : $name;
methods_via($name, $prepend, 1);
}
}
+sub setman {
+ $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|dos|amigaos|riscos|MacOS)\z/s
+ ? "man" # O Happy Day!
+ : "perldoc"; # Alas, poor unfortunates
+}
+
+sub runman {
+ my $page = shift;
+ unless ($page) {
+ &system("$doccmd $doccmd");
+ return;
+ }
+ # this way user can override, like with $doccmd="man -Mwhatever"
+ # or even just "man " to disable the path check.
+ unless ($doccmd eq 'man') {
+ &system("$doccmd $page");
+ return;
+ }
+
+ $page = 'perl' if lc($page) eq 'help';
+
+ require Config;
+ my $man1dir = $Config::Config{'man1dir'};
+ my $man3dir = $Config::Config{'man3dir'};
+ for ($man1dir, $man3dir) { s#/[^/]*\z## if /\S/ }
+ my $manpath = '';
+ $manpath .= "$man1dir:" if $man1dir =~ /\S/;
+ $manpath .= "$man3dir:" if $man3dir =~ /\S/ && $man1dir ne $man3dir;
+ chop $manpath if $manpath;
+ # harmless if missing, I figure
+ my $oldpath = $ENV{MANPATH};
+ $ENV{MANPATH} = $manpath if $manpath;
+ my $nopathopt = $^O =~ /dunno what goes here/;
+ if (system($doccmd,
+ # I just *know* there are men without -M
+ (($manpath && !$nopathopt) ? ("-M", $manpath) : ()),
+ split ' ', $page) )
+ {
+ unless ($page =~ /^perl\w/) {
+ if (grep { $page eq $_ } qw{
+ 5004delta 5005delta amiga api apio book boot bot call compile
+ cygwin data dbmfilter debug debguts delta diag doc dos dsc embed
+ faq faq1 faq2 faq3 faq4 faq5 faq6 faq7 faq8 faq9 filter fork
+ form func guts hack hist hpux intern ipc lexwarn locale lol mod
+ modinstall modlib number obj op opentut os2 os390 pod port
+ ref reftut run sec style sub syn thrtut tie toc todo toot tootc
+ trap unicode var vms win32 xs xstut
+ })
+ {
+ $page =~ s/^/perl/;
+ system($doccmd,
+ (($manpath && !$nopathopt) ? ("-M", $manpath) : ()),
+ $page);
+ }
+ }
+ }
+ if (defined $oldpath) {
+ $ENV{MANPATH} = $manpath;
+ } else {
+ delete $ENV{MANPATH};
+ }
+}
+
# The following BEGIN is very handy if debugger goes havoc, debugging debugger?
BEGIN { # This does not compile, alas.
@@ -2085,7 +2599,7 @@ sub db_complete {
# Specific code for b c l V m f O, &blah, $blah, @blah, %blah
my($text, $line, $start) = @_;
my ($itext, $search, $prefix, $pack) =
- ($text, "^\Q$ {'package'}::\E([^:]+)\$");
+ ($text, "^\Q${'package'}::\E([^:]+)\$");
return sort grep /^\Q$text/, (keys %sub), qw(postpone load compile), # subroutines
(map { /$search/ ? ($1) : () } keys %sub)
diff --git a/contrib/perl5/lib/pwd.pl b/contrib/perl5/lib/pwd.pl
index beb5916..6b429eb 100644
--- a/contrib/perl5/lib/pwd.pl
+++ b/contrib/perl5/lib/pwd.pl
@@ -1,5 +1,14 @@
;# pwd.pl - keeps track of current working directory in PWD environment var
;#
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Cwd
+#
;# $RCSfile: pwd.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:11 $
;#
;# $Log: pwd.pl,v $
@@ -16,7 +25,7 @@ sub main'initpwd {
if ($ENV{'PWD'}) {
local($dd,$di) = stat('.');
local($pd,$pi) = stat($ENV{'PWD'});
- if ($di != $pi || $dd != $pd) {
+ if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
chop($ENV{'PWD'} = `pwd`);
}
}
@@ -26,7 +35,7 @@ sub main'initpwd {
if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) {
local($pd,$pi) = stat($2);
local($dd,$di) = stat($1);
- if ($di == $pi && $dd == $pd) {
+ if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
$ENV{'PWD'}="$2$3";
}
}
diff --git a/contrib/perl5/lib/strict.pm b/contrib/perl5/lib/strict.pm
index 940e8bf..042227f 100644
--- a/contrib/perl5/lib/strict.pm
+++ b/contrib/perl5/lib/strict.pm
@@ -34,12 +34,14 @@ use symbolic references (see L<perlref>).
print $$ref; # ok
$ref = "foo";
print $$ref; # runtime error; normally ok
+ $file = "STDOUT";
+ print $file "Hi!"; # error; note: no comma after $file
=item C<strict vars>
This generates a compile-time error if you access a variable that wasn't
-declared via C<use vars>,
-localized via C<my()> or wasn't fully qualified. Because this is to avoid
+declared via "our" or C<use vars>,
+localized via C<my()>, or wasn't fully qualified. Because this is to avoid
variable suicide problems and subtle dynamic scoping issues, a merely
local() variable isn't good enough. See L<perlfunc/my> and
L<perlfunc/local>.
@@ -50,12 +52,15 @@ L<perlfunc/local>.
local $foo = 9; # blows up
package Cinna;
- use vars qw/ $bar /; # Declares $bar in current package
+ our $bar; # Declares $bar in current package
$bar = 'HgS'; # ok, global declared via pragma
The local() generated a compile-time error because you just touched a global
name without fully qualifying it.
+Because of their special use by sort(), the variables $a and $b are
+exempted from this check.
+
=item C<strict subs>
This disables the poetry optimization, generating a compile-time error if
diff --git a/contrib/perl5/lib/syslog.pl b/contrib/perl5/lib/syslog.pl
index 9e03399..70c439b 100644
--- a/contrib/perl5/lib/syslog.pl
+++ b/contrib/perl5/lib/syslog.pl
@@ -29,10 +29,12 @@
package syslog;
+use warnings::register;
+
$host = 'localhost' unless $host; # set $syslog'host to change
-if ($] >= 5) {
- warn "You should 'use Sys::Syslog' instead; continuing" # if $^W
+if ($] >= 5 && warnings::enabled()) {
+ warnings::warn "You should 'use Sys::Syslog' instead; continuing";
}
require 'syslog.ph';
diff --git a/contrib/perl5/lib/termcap.pl b/contrib/perl5/lib/termcap.pl
index 3731343..06da956 100644
--- a/contrib/perl5/lib/termcap.pl
+++ b/contrib/perl5/lib/termcap.pl
@@ -1,4 +1,13 @@
;# $RCSfile: termcap.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:16 $
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Term::Cap
+#
;#
;# Usage:
;# require 'ioctl.pl';
diff --git a/contrib/perl5/lib/unicode/ArabLink.pl b/contrib/perl5/lib/unicode/ArabLink.pl
new file mode 100644
index 0000000..fd5ed8a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/ArabLink.pl
@@ -0,0 +1,46 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0622 0625 R
+0626 D
+0627 R
+0628 D
+0629 R
+062a 062e D
+062f 0632 R
+0633 063a D
+0640 C
+0641 0647 D
+0648 0649 R
+064a D
+0671 U
+0672 0673 R
+0674 U
+0675 0677 R
+0678 0687 D
+0688 0699 R
+069a 06bf D
+06c0 R
+06c1 D
+06c2 06cb R
+06cc D
+06cd R
+06ce D
+06cf R
+06d0 06d1 D
+06d2 06d3 R
+06d5 U
+06fa 06fc D
+0710 R
+0712 0714 D
+0715 0719 R
+071a 071d D
+071e R
+071f 0727 D
+0728 R
+0729 D
+072a R
+072b D
+072c R
+END
diff --git a/contrib/perl5/lib/unicode/ArabLnkGrp.pl b/contrib/perl5/lib/unicode/ArabLnkGrp.pl
new file mode 100644
index 0000000..61f30d4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/ArabLnkGrp.pl
@@ -0,0 +1,94 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0622 0623 ALEF
+0624 WAW
+0625 ALEF
+0626 YEH
+0627 ALEF
+0628 BEH
+0629 TEH MARBUTA
+062a 062b BEH
+062c 062e HAH
+062f 0630 DAL
+0631 0632 REH
+0633 0634 SEEN
+0635 0636 SAD
+0637 0638 TAH
+0639 063a AIN
+0640 <no shaping>
+0641 FEH
+0642 QAF
+0643 KAF
+0644 LAM
+0645 MEEM
+0646 NOON
+0647 HEH
+0648 WAW
+0649 064a YEH
+0671 <no shaping>
+0672 0673 ALEF
+0674 <no shaping>
+0675 ALEF
+0676 0677 WAW
+0678 YEH
+0679 0680 BEH
+0681 0687 HAH
+0688 0690 DAL
+0691 0699 REH
+069a 069c SEEN
+069d 069e SAD
+069f TAH
+06a0 AIN
+06a1 06a6 FEH
+06a7 06a8 QAF
+06a9 GAF
+06aa SWASH KAF
+06ab GAF
+06ac 06ae KAF
+06af 06b4 GAF
+06b5 06b8 LAM
+06b9 06bd NOON
+06be KNOTTED HEH
+06bf HAH
+06c0 TEH MARBUTA
+06c1 HEH GOAL
+06c2 06c3 HAMZA ON HEH GOAL
+06c4 06cb WAW
+06cc YEH
+06cd YEH WITH TAIL
+06ce YEH
+06cf WAW
+06d0 06d1 YEH
+06d2 06d3 YEH BARREE
+06d5 <no shaping>
+06fa SEEN
+06fb SAD
+06fc AIN
+0710 ALAPH
+0712 BETH
+0713 0714 GAMAL
+0715 0716 DALATH RISH
+0717 HE
+0718 WAW
+0719 ZAIN
+071a HETH
+071b 071c TETH
+071d YUDH
+071e YUDH HE
+071f KAPH
+0720 LAMADH
+0721 MIM
+0722 NUN
+0723 SEMKATH
+0724 FINAL SEMKATH
+0725 E
+0726 PE
+0727 REVERSED PE
+0728 SADHE
+0729 QAPH
+072a DALATH RISH
+072b SHIN
+072c TAW
+END
diff --git a/contrib/perl5/lib/unicode/ArabShap.txt b/contrib/perl5/lib/unicode/ArabShap.txt
new file mode 100644
index 0000000..6092d62
--- /dev/null
+++ b/contrib/perl5/lib/unicode/ArabShap.txt
@@ -0,0 +1,170 @@
+# Unicode; Schematic Name; Link; Link Group
+# Arabic characters
+0622; MADDA ON ALEF; R; ALEF
+0623; HAMZA ON ALEF; R; ALEF
+0624; HAMZA ON WAW; R; WAW
+0625; HAMZA UNDER ALEF; R; ALEF
+0626; HAMZA ON YEH; D; YEH
+0627; ALEF; R; ALEF
+0628; BEH; D; BEH
+0629; TEH MARBUTA; R; TEH MARBUTA
+062A; TEH; D; BEH
+062B; THEH; D; BEH
+062C; JEEM; D; HAH
+062D; HAH; D; HAH
+062E; KHAH; D; HAH
+062F; DAL; R; DAL
+0630; THAL; R; DAL
+0631; REH; R; REH
+0632; ZAIN; R; REH
+0633; SEEN; D; SEEN
+0634; SHEEN; D; SEEN
+0635; SAD; D; SAD
+0636; DAD; D; SAD
+0637; TAH; D; TAH
+0638; ZAH; D; TAH
+0639; AIN; D; AIN
+063A; GHAIN; D; AIN
+0640; TATWEEL; C; <no shaping>
+0641; FEH; D; FEH
+0642; QAF; D; QAF
+0643; KAF; D; KAF
+0644; LAM; D; LAM
+0645; MEEM; D; MEEM
+0646; NOON; D; NOON
+0647; HEH; D; HEH
+0648; WAW; R; WAW
+0649; ALEF MAKSURA; R; YEH
+064A; YEH; D; YEH
+0671; HAMZAT WASL ON ALEF; U; <no shaping>
+0672; WAVY HAMZA ON ALEF; R; ALEF
+0673; WAVY HAMZA UNDER ALEF; R; ALEF
+0674; HIGH HAMZA; U; <no shaping>
+0675; HIGH HAMZA ALEF; R; ALEF
+0676; HIGH HAMZA WAW; R; WAW
+0677; HIGH HAMZA WAW WITH DAMMA; R; WAW
+0678; HIGH HAMZA YEH; D; YEH
+0679; TEH WITH SMALL TAH; D; BEH
+067A; TEH WITH 2 DOTS VERTICAL ABOVE; D; BEH
+067B; BEH WITH 2 DOTS VERTICAL BELOW; D; BEH
+067C; TEH WITH RING; D; BEH
+067D; TEH WITH 3 DOTS ABOVE DOWNWARD; D; BEH
+067E; TEH WITH 3 DOTS BELOW; D; BEH
+067F; TEH WITH 4 DOTS ABOVE; D; BEH
+0680; BEH WITH 4 DOTS BELOW; D; BEH
+0681; HAMZA ON HAH; D; HAH
+0682; HAH WITH 2 DOTS VERTICAL ABOVE; D; HAH
+0683; HAH WITH MIDDLE 2 DOTS; D; HAH
+0684; HAH WITH MIDDLE 2 DOTS VERTICAL; D; HAH
+0685; HAH WITH 3 DOTS ABOVE; D; HAH
+0686; HAH WITH MIDDLE 3 DOTS DOWNWARD; D; HAH
+0687; HAH WITH MIDDLE 4 DOTS; D; HAH
+0688; DAL WITH SMALL TAH; R; DAL
+0689; DAL WITH RING; R; DAL
+068A; DAL WITH DOT BELOW; R; DAL
+068B; DAL WITH DOT BELOW AND SMALL TAH; R; DAL
+068C; DAL WITH 2 DOTS ABOVE; R; DAL
+068D; DAL WITH 2 DOTS BELOW; R; DAL
+068E; DAL WITH 3 DOTS ABOVE; R; DAL
+068F; DAL WITH 3 DOTS ABOVE DOWNWARD; R; DAL
+0690; DAL WITH 4 DOTS ABOVE; R; DAL
+0691; REH WITH SMALL TAH; R; REH
+0692; REH WITH SMALL V; R; REH
+0693; REH WITH RING; R; REH
+0694; REH WITH DOT BELOW; R; REH
+0695; REH WITH SMALL V BELOW; R; REH
+0696; REH WITH DOT BELOW AND DOT ABOVE; R; REH
+0697; REH WITH 2 DOTS ABOVE; R; REH
+0698; REH WITH 3 DOTS ABOVE; R; REH
+0699; REH WITH 4 DOTS ABOVE; R; REH
+069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN
+069B; SEEN WITH 3 DOTS BELOW; D; SEEN
+069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN
+069D; SAD WITH 2 DOTS BELOW; D; SAD
+069E; SAD WITH 3 DOTS ABOVE; D; SAD
+069F; TAH WITH 3 DOTS ABOVE; D; TAH
+06A0; AIN WITH 3 DOTS ABOVE; D; AIN
+06A1; DOTLESS FEH; D; FEH
+06A2; FEH WITH DOT MOVED BELOW; D; FEH
+06A3; FEH WITH DOT BELOW; D; FEH
+06A4; FEH WITH 3 DOTS ABOVE; D; FEH
+06A5; FEH WITH 3 DOTS BELOW; D; FEH
+06A6; FEH WITH 4 DOTS ABOVE; D; FEH
+06A7; QAF WITH DOT ABOVE; D; QAF
+06A8; QAF WITH 3 DOTS ABOVE; D; QAF
+06A9; OPEN KAF; D; GAF
+06AA; SWASH KAF; D; SWASH KAF
+06AB; KAF WITH RING; D; GAF
+06AC; KAF WITH DOT ABOVE; D; KAF
+06AD; KAF WITH 3 DOTS ABOVE; D; KAF
+06AE; KAF WITH 3 DOTS BELOW; D; KAF
+06AF; GAF; D; GAF
+06B0; GAF WITH RING; D; GAF
+06B1; GAF WITH 2 DOTS ABOVE; D; GAF
+06B2; GAF WITH 2 DOTS BELOW; D; GAF
+06B3; GAF WITH 2 DOTS VERTICAL BELOW; D; GAF
+06B4; GAF WITH 3 DOTS ABOVE; D; GAF
+06B5; LAM WITH SMALL V; D; LAM
+06B6; LAM WITH DOT ABOVE; D; LAM
+06B7; LAM WITH 3 DOTS ABOVE; D; LAM
+06B8; LAM WITH 3 DOTS BELOW; D; LAM
+06B9; NOON WITH DOT BELOW; D; NOON
+06BA; DOTLESS NOON; D; NOON
+06BB; DOTLESS NOON WITH SMALL TAH; D; NOON
+06BC; NOON WITH RING; D; NOON
+06BD; NOON WITH 3 DOTS ABOVE; D; NOON
+06BE; KNOTTED HEH; D; KNOTTED HEH
+06BF; HAH WITH MIDDLE 3 DOTS DOWNWARD AND DOT ABOVE; D; HAH
+06C0; HAMZA ON HEH; R; TEH MARBUTA
+06C1; HEH GOAL; D; HEH GOAL
+06C2; HAMZA ON HEH GOAL; R; HAMZA ON HEH GOAL
+06C3; TEH MARBUTA GOAL; R; HAMZA ON HEH GOAL
+06C4; WAW WITH RING; R; WAW
+06C5; WAW WITH BAR; R; WAW
+06C6; WAW WITH SMALL V; R; WAW
+06C7; WAW WITH DAMMA; R; WAW
+06C8; WAW WITH ALEF ABOVE; R; WAW
+06C9; WAW WITH INVERTED SMALL V; R; WAW
+06CA; WAW WITH 2 DOTS ABOVE; R; WAW
+06CB; WAW WITH 3 DOTS ABOVE; R; WAW
+06CC; DOTLESS YEH; D; YEH
+06CD; YEH WITH TAIL; R; YEH WITH TAIL
+06CE; YEH WITH SMALL V; D; YEH
+06CF; WAW WITH DOT ABOVE; R; WAW
+06D0; YEH WITH 2 DOTS VERTICAL BELOW; D; YEH
+06D1; YEH WITH 3 DOTS BELOW; D; YEH
+06D2; YEH BARREE; R; YEH BARREE
+06D3; HAMZA ON YEH BARREE; R; YEH BARREE
+06D5; AE; U; <no shaping>
+06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN
+06FB; DAD WITH DOT BELOW; D; SAD
+06FC; GHAIN WITH DOT BELOW; D; AIN
+# Syriac characters
+0710; ALAPH; R; ALAPH
+0712; BETH; D; BETH
+0713; GAMAL; D; GAMAL
+0714; GAMAL GARSHUNI; D; GAMAL
+0715; DALATH; R; DALATH RISH
+0716; DOTLESS DALATH RISH; R; DALATH RISH
+0717; HE; R; HE
+0718; WAW; R; WAW
+0719; ZAIN; R; ZAIN
+071A; HETH; D; HETH
+071B; TETH; D; TETH
+071C; TETH GARSHUNI; D; TETH
+071D; YUDH; D; YUDH
+071E; YUDH HE; R; YUDH HE
+071F; KAPH; D; KAPH
+0720; LAMADH; D; LAMADH
+0721; MIM; D; MIM
+0722; NUN; D; NUN
+0723; SEMKATH; D; SEMKATH
+0724; FINAL SEMKATH; D; FINAL SEMKATH
+0725; E; D; E
+0726; PE; D; PE
+0727; REVERSED PE; D; REVERSED PE
+0728; SADHE; R; SADHE
+0729; QAPH; D; QAPH
+072A; RISH; R; DALATH RISH
+072B; SHIN; D; SHIN
+072C; TAW; R; TAW
diff --git a/contrib/perl5/lib/unicode/Bidirectional.pl b/contrib/perl5/lib/unicode/Bidirectional.pl
new file mode 100644
index 0000000..73898b8
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Bidirectional.pl
@@ -0,0 +1,638 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 0008 BN
+0009 S
+000a B
+000b S
+000c WS
+000d B
+000e 001b BN
+001c 001e B
+001f S
+0020 WS
+0021 0022 ON
+0023 0025 ET
+0026 002a ON
+002b ET
+002c CS
+002d ET
+002e CS
+002f ES
+0030 0039 EN
+003a CS
+003b 0040 ON
+0041 005a L
+005b 0060 ON
+0061 007a L
+007b 007e ON
+007f 0084 BN
+0085 B
+0086 009f BN
+00a0 CS
+00a1 ON
+00a2 00a5 ET
+00a6 00a9 ON
+00aa L
+00ab 00af ON
+00b0 00b1 ET
+00b2 00b3 EN
+00b4 ON
+00b5 L
+00b6 00b8 ON
+00b9 EN
+00ba L
+00bb 00bf ON
+00c0 00d6 L
+00d7 ON
+00d8 00f6 L
+00f7 ON
+00f8 021f L
+0222 0233 L
+0250 02ad L
+02b0 02b8 L
+02b9 02ba ON
+02bb 02c1 L
+02c2 02cf ON
+02d0 02d1 L
+02d2 02df ON
+02e0 02e4 L
+02e5 02ed ON
+02ee L
+0300 034e NSM
+0360 0362 NSM
+0374 0375 ON
+037a L
+037e ON
+0384 0385 ON
+0386 L
+0387 ON
+0388 038a L
+038c L
+038e 03a1 L
+03a3 03ce L
+03d0 03d7 L
+03da 03f3 L
+0400 0482 L
+0483 0486 NSM
+0488 0489 NSM
+048c 04c4 L
+04c7 04c8 L
+04cb 04cc L
+04d0 04f5 L
+04f8 04f9 L
+0531 0556 L
+0559 055f L
+0561 0587 L
+0589 L
+058a ON
+0591 05a1 NSM
+05a3 05b9 NSM
+05bb 05bd NSM
+05be R
+05bf NSM
+05c0 R
+05c1 05c2 NSM
+05c3 R
+05c4 NSM
+05d0 05ea R
+05f0 05f4 R
+060c CS
+061b AL
+061f AL
+0621 063a AL
+0640 064a AL
+064b 0655 NSM
+0660 0669 AN
+066a ET
+066b 066c AN
+066d AL
+0670 NSM
+0671 06d5 AL
+06d6 06e4 NSM
+06e5 06e6 AL
+06e7 06e8 NSM
+06e9 ON
+06ea 06ed NSM
+06f0 06f9 EN
+06fa 06fe AL
+0700 070d AL
+070f BN
+0710 AL
+0711 NSM
+0712 072c AL
+0730 074a NSM
+0780 07a5 AL
+07a6 07b0 NSM
+0901 0902 NSM
+0903 L
+0905 0939 L
+093c NSM
+093d 0940 L
+0941 0948 NSM
+0949 094c L
+094d NSM
+0950 L
+0951 0954 NSM
+0958 0961 L
+0962 0963 NSM
+0964 0970 L
+0981 NSM
+0982 0983 L
+0985 098c L
+098f 0990 L
+0993 09a8 L
+09aa 09b0 L
+09b2 L
+09b6 09b9 L
+09bc NSM
+09be 09c0 L
+09c1 09c4 NSM
+09c7 09c8 L
+09cb 09cc L
+09cd NSM
+09d7 L
+09dc 09dd L
+09df 09e1 L
+09e2 09e3 NSM
+09e6 09f1 L
+09f2 09f3 ET
+09f4 09fa L
+0a02 NSM
+0a05 0a0a L
+0a0f 0a10 L
+0a13 0a28 L
+0a2a 0a30 L
+0a32 0a33 L
+0a35 0a36 L
+0a38 0a39 L
+0a3c NSM
+0a3e 0a40 L
+0a41 0a42 NSM
+0a47 0a48 NSM
+0a4b 0a4d NSM
+0a59 0a5c L
+0a5e L
+0a66 0a6f L
+0a70 0a71 NSM
+0a72 0a74 L
+0a81 0a82 NSM
+0a83 L
+0a85 0a8b L
+0a8d L
+0a8f 0a91 L
+0a93 0aa8 L
+0aaa 0ab0 L
+0ab2 0ab3 L
+0ab5 0ab9 L
+0abc NSM
+0abd 0ac0 L
+0ac1 0ac5 NSM
+0ac7 0ac8 NSM
+0ac9 L
+0acb 0acc L
+0acd NSM
+0ad0 L
+0ae0 L
+0ae6 0aef L
+0b01 NSM
+0b02 0b03 L
+0b05 0b0c L
+0b0f 0b10 L
+0b13 0b28 L
+0b2a 0b30 L
+0b32 0b33 L
+0b36 0b39 L
+0b3c NSM
+0b3d 0b3e L
+0b3f NSM
+0b40 L
+0b41 0b43 NSM
+0b47 0b48 L
+0b4b 0b4c L
+0b4d NSM
+0b56 NSM
+0b57 L
+0b5c 0b5d L
+0b5f 0b61 L
+0b66 0b70 L
+0b82 NSM
+0b83 L
+0b85 0b8a L
+0b8e 0b90 L
+0b92 0b95 L
+0b99 0b9a L
+0b9c L
+0b9e 0b9f L
+0ba3 0ba4 L
+0ba8 0baa L
+0bae 0bb5 L
+0bb7 0bb9 L
+0bbe 0bbf L
+0bc0 NSM
+0bc1 0bc2 L
+0bc6 0bc8 L
+0bca 0bcc L
+0bcd NSM
+0bd7 L
+0be7 0bf2 L
+0c01 0c03 L
+0c05 0c0c L
+0c0e 0c10 L
+0c12 0c28 L
+0c2a 0c33 L
+0c35 0c39 L
+0c3e 0c40 NSM
+0c41 0c44 L
+0c46 0c48 NSM
+0c4a 0c4d NSM
+0c55 0c56 NSM
+0c60 0c61 L
+0c66 0c6f L
+0c82 0c83 L
+0c85 0c8c L
+0c8e 0c90 L
+0c92 0ca8 L
+0caa 0cb3 L
+0cb5 0cb9 L
+0cbe L
+0cbf NSM
+0cc0 0cc4 L
+0cc6 NSM
+0cc7 0cc8 L
+0cca 0ccb L
+0ccc 0ccd NSM
+0cd5 0cd6 L
+0cde L
+0ce0 0ce1 L
+0ce6 0cef L
+0d02 0d03 L
+0d05 0d0c L
+0d0e 0d10 L
+0d12 0d28 L
+0d2a 0d39 L
+0d3e 0d40 L
+0d41 0d43 NSM
+0d46 0d48 L
+0d4a 0d4c L
+0d4d NSM
+0d57 L
+0d60 0d61 L
+0d66 0d6f L
+0d82 0d83 L
+0d85 0d96 L
+0d9a 0db1 L
+0db3 0dbb L
+0dbd L
+0dc0 0dc6 L
+0dca NSM
+0dcf 0dd1 L
+0dd2 0dd4 NSM
+0dd6 NSM
+0dd8 0ddf L
+0df2 0df4 L
+0e01 0e30 L
+0e31 NSM
+0e32 0e33 L
+0e34 0e3a NSM
+0e3f ET
+0e40 0e46 L
+0e47 0e4e NSM
+0e4f 0e5b L
+0e81 0e82 L
+0e84 L
+0e87 0e88 L
+0e8a L
+0e8d L
+0e94 0e97 L
+0e99 0e9f L
+0ea1 0ea3 L
+0ea5 L
+0ea7 L
+0eaa 0eab L
+0ead 0eb0 L
+0eb1 NSM
+0eb2 0eb3 L
+0eb4 0eb9 NSM
+0ebb 0ebc NSM
+0ebd L
+0ec0 0ec4 L
+0ec6 L
+0ec8 0ecd NSM
+0ed0 0ed9 L
+0edc 0edd L
+0f00 0f17 L
+0f18 0f19 NSM
+0f1a 0f34 L
+0f35 NSM
+0f36 L
+0f37 NSM
+0f38 L
+0f39 NSM
+0f3a 0f3d ON
+0f3e 0f47 L
+0f49 0f6a L
+0f71 0f7e NSM
+0f7f L
+0f80 0f84 NSM
+0f85 L
+0f86 0f87 NSM
+0f88 0f8b L
+0f90 0f97 NSM
+0f99 0fbc NSM
+0fbe 0fc5 L
+0fc6 NSM
+0fc7 0fcc L
+0fcf L
+1000 1021 L
+1023 1027 L
+1029 102a L
+102c L
+102d 1030 NSM
+1031 L
+1032 NSM
+1036 1037 NSM
+1038 L
+1039 NSM
+1040 1057 L
+1058 1059 NSM
+10a0 10c5 L
+10d0 10f6 L
+10fb L
+1100 1159 L
+115f 11a2 L
+11a8 11f9 L
+1200 1206 L
+1208 1246 L
+1248 L
+124a 124d L
+1250 1256 L
+1258 L
+125a 125d L
+1260 1286 L
+1288 L
+128a 128d L
+1290 12ae L
+12b0 L
+12b2 12b5 L
+12b8 12be L
+12c0 L
+12c2 12c5 L
+12c8 12ce L
+12d0 12d6 L
+12d8 12ee L
+12f0 130e L
+1310 L
+1312 1315 L
+1318 131e L
+1320 1346 L
+1348 135a L
+1361 137c L
+13a0 13f4 L
+1401 1676 L
+1680 WS
+1681 169a L
+169b 169c ON
+16a0 16f0 L
+1780 17b6 L
+17b7 17bd NSM
+17be 17c5 L
+17c6 NSM
+17c7 17c8 L
+17c9 17d3 NSM
+17d4 17da L
+17db ET
+17dc L
+17e0 17e9 L
+1800 180a ON
+180b 180e BN
+1810 1819 L
+1820 1877 L
+1880 18a8 L
+18a9 NSM
+1e00 1e9b L
+1ea0 1ef9 L
+1f00 1f15 L
+1f18 1f1d L
+1f20 1f45 L
+1f48 1f4d L
+1f50 1f57 L
+1f59 L
+1f5b L
+1f5d L
+1f5f 1f7d L
+1f80 1fb4 L
+1fb6 1fbc L
+1fbd ON
+1fbe L
+1fbf 1fc1 ON
+1fc2 1fc4 L
+1fc6 1fcc L
+1fcd 1fcf ON
+1fd0 1fd3 L
+1fd6 1fdb L
+1fdd 1fdf ON
+1fe0 1fec L
+1fed 1fef ON
+1ff2 1ff4 L
+1ff6 1ffc L
+1ffd 1ffe ON
+2000 200a WS
+200b 200d BN
+200e L
+200f R
+2010 2027 ON
+2028 WS
+2029 B
+202a LRE
+202b RLE
+202c PDF
+202d LRO
+202e RLO
+202f WS
+2030 2034 ET
+2035 2046 ON
+2048 204d ON
+206a 206f BN
+2070 EN
+2074 2079 EN
+207a 207b ET
+207c 207e ON
+207f L
+2080 2089 EN
+208a 208b ET
+208c 208e ON
+20a0 20af ET
+20d0 20e3 NSM
+2100 2101 ON
+2102 L
+2103 2106 ON
+2107 L
+2108 2109 ON
+210a 2113 L
+2114 ON
+2115 L
+2116 2118 ON
+2119 211d L
+211e 2123 ON
+2124 L
+2125 ON
+2126 L
+2127 ON
+2128 L
+2129 ON
+212a 212d L
+212e ET
+212f 2131 L
+2132 ON
+2133 2139 L
+213a ON
+2153 215f ON
+2160 2183 L
+2190 21f3 ON
+2200 2211 ON
+2212 2213 ET
+2214 22f1 ON
+2300 2335 ON
+2336 237a L
+237b ON
+237d 2394 ON
+2395 L
+2396 239a ON
+2400 2426 ON
+2440 244a ON
+2460 249b EN
+249c 24e9 L
+24ea EN
+2500 2595 ON
+25a0 25f7 ON
+2600 2613 ON
+2619 2671 ON
+2701 2704 ON
+2706 2709 ON
+270c 2727 ON
+2729 274b ON
+274d ON
+274f 2752 ON
+2756 ON
+2758 275e ON
+2761 2767 ON
+2776 2794 ON
+2798 27af ON
+27b1 27be ON
+2800 28ff ON
+2e80 2e99 ON
+2e9b 2ef3 ON
+2f00 2fd5 ON
+2ff0 2ffb ON
+3000 WS
+3001 3004 ON
+3005 3007 L
+3008 3020 ON
+3021 3029 L
+302a 302f NSM
+3030 ON
+3031 3035 L
+3036 3037 ON
+3038 303a L
+303e 303f ON
+3041 3094 L
+3099 309a NSM
+309b 309c ON
+309d 309e L
+30a1 30fa L
+30fb ON
+30fc 30fe L
+3105 312c L
+3131 318e L
+3190 31b7 L
+3200 321c L
+3220 3243 L
+3260 327b L
+327f 32b0 L
+32c0 32cb L
+32d0 32fe L
+3300 3376 L
+337b 33dd L
+33e0 33fe L
+3400 4db5 L
+4e00 9fa5 L
+a000 a48c L
+a490 a4a1 ON
+a4a4 a4b3 ON
+a4b5 a4c0 ON
+a4c2 a4c4 ON
+a4c6 ON
+ac00 d7a3 L
+d800 db7f L
+db80 dbff L
+dc00 dfff L
+e000 f8ff L
+f900 fa2d L
+fb00 fb06 L
+fb13 fb17 L
+fb1d R
+fb1e NSM
+fb1f fb28 R
+fb29 ET
+fb2a fb36 R
+fb38 fb3c R
+fb3e R
+fb40 fb41 R
+fb43 fb44 R
+fb46 fb4f R
+fb50 fbb1 AL
+fbd3 fd3d AL
+fd3e fd3f ON
+fd50 fd8f AL
+fd92 fdc7 AL
+fdf0 fdfb AL
+fe20 fe23 NSM
+fe30 fe44 ON
+fe49 fe4f ON
+fe50 CS
+fe51 ON
+fe52 CS
+fe54 ON
+fe55 CS
+fe56 fe5e ON
+fe5f ET
+fe60 fe61 ON
+fe62 fe63 ET
+fe64 fe66 ON
+fe68 ON
+fe69 fe6a ET
+fe6b ON
+fe70 fe72 AL
+fe74 AL
+fe76 fefc AL
+feff BN
+ff01 ff02 ON
+ff03 ff05 ET
+ff06 ff0a ON
+ff0b ET
+ff0c CS
+ff0d ET
+ff0e CS
+ff0f ES
+ff10 ff19 EN
+ff1a CS
+ff1b ff20 ON
+ff21 ff3a L
+ff3b ff40 ON
+ff41 ff5a L
+ff5b ff5e ON
+ff61 ff65 ON
+ff66 ffbe L
+ffc2 ffc7 L
+ffca ffcf L
+ffd2 ffd7 L
+ffda ffdc L
+ffe0 ffe1 ET
+ffe2 ffe4 ON
+ffe5 ffe6 ET
+ffe8 ffee ON
+fff9 fffb BN
+fffc fffd ON
+END
diff --git a/contrib/perl5/lib/unicode/Block.pl b/contrib/perl5/lib/unicode/Block.pl
new file mode 100644
index 0000000..ee680b7
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Block.pl
@@ -0,0 +1,93 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 007F Basic Latin
+0080 00FF Latin-1 Supplement
+0100 017F Latin Extended-A
+0180 024F Latin Extended-B
+0250 02AF IPA Extensions
+02B0 02FF Spacing Modifier Letters
+0300 036F Combining Diacritical Marks
+0370 03FF Greek
+0400 04FF Cyrillic
+0530 058F Armenian
+0590 05FF Hebrew
+0600 06FF Arabic
+0700 074F Syriac
+0780 07BF Thaana
+0900 097F Devanagari
+0980 09FF Bengali
+0A00 0A7F Gurmukhi
+0A80 0AFF Gujarati
+0B00 0B7F Oriya
+0B80 0BFF Tamil
+0C00 0C7F Telugu
+0C80 0CFF Kannada
+0D00 0D7F Malayalam
+0D80 0DFF Sinhala
+0E00 0E7F Thai
+0E80 0EFF Lao
+0F00 0FFF Tibetan
+1000 109F Myanmar
+10A0 10FF Georgian
+1100 11FF Hangul Jamo
+1200 137F Ethiopic
+13A0 13FF Cherokee
+1400 167F Unified Canadian Aboriginal Syllabics
+1680 169F Ogham
+16A0 16FF Runic
+1780 17FF Khmer
+1800 18AF Mongolian
+1E00 1EFF Latin Extended Additional
+1F00 1FFF Greek Extended
+2000 206F General Punctuation
+2070 209F Superscripts and Subscripts
+20A0 20CF Currency Symbols
+20D0 20FF Combining Marks for Symbols
+2100 214F Letterlike Symbols
+2150 218F Number Forms
+2190 21FF Arrows
+2200 22FF Mathematical Operators
+2300 23FF Miscellaneous Technical
+2400 243F Control Pictures
+2440 245F Optical Character Recognition
+2460 24FF Enclosed Alphanumerics
+2500 257F Box Drawing
+2580 259F Block Elements
+25A0 25FF Geometric Shapes
+2600 26FF Miscellaneous Symbols
+2700 27BF Dingbats
+2800 28FF Braille Patterns
+2E80 2EFF CJK Radicals Supplement
+2F00 2FDF Kangxi Radicals
+2FF0 2FFF Ideographic Description Characters
+3000 303F CJK Symbols and Punctuation
+3040 309F Hiragana
+30A0 30FF Katakana
+3100 312F Bopomofo
+3130 318F Hangul Compatibility Jamo
+3190 319F Kanbun
+31A0 31BF Bopomofo Extended
+3200 32FF Enclosed CJK Letters and Months
+3300 33FF CJK Compatibility
+3400 4DB5 CJK Unified Ideographs Extension A
+4E00 9FFF CJK Unified Ideographs
+A000 A48F Yi Syllables
+A490 A4CF Yi Radicals
+AC00 D7A3 Hangul Syllables
+D800 DB7F High Surrogates
+DB80 DBFF High Private Use Surrogates
+DC00 DFFF Low Surrogates
+E000 F8FF Private Use
+F900 FAFF CJK Compatibility Ideographs
+FB00 FB4F Alphabetic Presentation Forms
+FB50 FDFF Arabic Presentation Forms-A
+FE20 FE2F Combining Half Marks
+FE30 FE4F CJK Compatibility Forms
+FE50 FE6F Small Form Variants
+FE70 FEFE Arabic Presentation Forms-B
+FEFF FEFF Specials
+FF00 FFEF Halfwidth and Fullwidth Forms
+FFF0 FFFD Specials
+END
diff --git a/contrib/perl5/lib/unicode/Blocks.txt b/contrib/perl5/lib/unicode/Blocks.txt
new file mode 100644
index 0000000..15c8957
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Blocks.txt
@@ -0,0 +1,90 @@
+# Start Code; End Code; Block Name
+0000; 007F; Basic Latin
+0080; 00FF; Latin-1 Supplement
+0100; 017F; Latin Extended-A
+0180; 024F; Latin Extended-B
+0250; 02AF; IPA Extensions
+02B0; 02FF; Spacing Modifier Letters
+0300; 036F; Combining Diacritical Marks
+0370; 03FF; Greek
+0400; 04FF; Cyrillic
+0530; 058F; Armenian
+0590; 05FF; Hebrew
+0600; 06FF; Arabic
+0700; 074F; Syriac
+0780; 07BF; Thaana
+0900; 097F; Devanagari
+0980; 09FF; Bengali
+0A00; 0A7F; Gurmukhi
+0A80; 0AFF; Gujarati
+0B00; 0B7F; Oriya
+0B80; 0BFF; Tamil
+0C00; 0C7F; Telugu
+0C80; 0CFF; Kannada
+0D00; 0D7F; Malayalam
+0D80; 0DFF; Sinhala
+0E00; 0E7F; Thai
+0E80; 0EFF; Lao
+0F00; 0FFF; Tibetan
+1000; 109F; Myanmar
+10A0; 10FF; Georgian
+1100; 11FF; Hangul Jamo
+1200; 137F; Ethiopic
+13A0; 13FF; Cherokee
+1400; 167F; Unified Canadian Aboriginal Syllabics
+1680; 169F; Ogham
+16A0; 16FF; Runic
+1780; 17FF; Khmer
+1800; 18AF; Mongolian
+1E00; 1EFF; Latin Extended Additional
+1F00; 1FFF; Greek Extended
+2000; 206F; General Punctuation
+2070; 209F; Superscripts and Subscripts
+20A0; 20CF; Currency Symbols
+20D0; 20FF; Combining Marks for Symbols
+2100; 214F; Letterlike Symbols
+2150; 218F; Number Forms
+2190; 21FF; Arrows
+2200; 22FF; Mathematical Operators
+2300; 23FF; Miscellaneous Technical
+2400; 243F; Control Pictures
+2440; 245F; Optical Character Recognition
+2460; 24FF; Enclosed Alphanumerics
+2500; 257F; Box Drawing
+2580; 259F; Block Elements
+25A0; 25FF; Geometric Shapes
+2600; 26FF; Miscellaneous Symbols
+2700; 27BF; Dingbats
+2800; 28FF; Braille Patterns
+2E80; 2EFF; CJK Radicals Supplement
+2F00; 2FDF; Kangxi Radicals
+2FF0; 2FFF; Ideographic Description Characters
+3000; 303F; CJK Symbols and Punctuation
+3040; 309F; Hiragana
+30A0; 30FF; Katakana
+3100; 312F; Bopomofo
+3130; 318F; Hangul Compatibility Jamo
+3190; 319F; Kanbun
+31A0; 31BF; Bopomofo Extended
+3200; 32FF; Enclosed CJK Letters and Months
+3300; 33FF; CJK Compatibility
+3400; 4DB5; CJK Unified Ideographs Extension A
+4E00; 9FFF; CJK Unified Ideographs
+A000; A48F; Yi Syllables
+A490; A4CF; Yi Radicals
+AC00; D7A3; Hangul Syllables
+D800; DB7F; High Surrogates
+DB80; DBFF; High Private Use Surrogates
+DC00; DFFF; Low Surrogates
+E000; F8FF; Private Use
+F900; FAFF; CJK Compatibility Ideographs
+FB00; FB4F; Alphabetic Presentation Forms
+FB50; FDFF; Arabic Presentation Forms-A
+FE20; FE2F; Combining Half Marks
+FE30; FE4F; CJK Compatibility Forms
+FE50; FE6F; Small Form Variants
+FE70; FEFE; Arabic Presentation Forms-B
+FEFF; FEFF; Specials
+FF00; FFEF; Halfwidth and Fullwidth Forms
+FFF0; FFFD; Specials
+
diff --git a/contrib/perl5/lib/unicode/Category.pl b/contrib/perl5/lib/unicode/Category.pl
new file mode 100644
index 0000000..bffd116
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Category.pl
@@ -0,0 +1,1506 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 001f Cc
+0020 Zs
+0021 0023 Po
+0024 Sc
+0025 0027 Po
+0028 Ps
+0029 Pe
+002a Po
+002b Sm
+002c Po
+002d Pd
+002e 002f Po
+0030 0039 Nd
+003a 003b Po
+003c 003e Sm
+003f 0040 Po
+0041 005a Lu
+005b Ps
+005c Po
+005d Pe
+005e Sk
+005f Pc
+0060 Sk
+0061 007a Ll
+007b Ps
+007c Sm
+007d Pe
+007e Sm
+007f 009f Cc
+00a0 Zs
+00a1 Po
+00a2 00a5 Sc
+00a6 00a7 So
+00a8 Sk
+00a9 So
+00aa Ll
+00ab Pi
+00ac Sm
+00ad Pd
+00ae So
+00af Sk
+00b0 So
+00b1 Sm
+00b2 00b3 No
+00b4 Sk
+00b5 Ll
+00b6 So
+00b7 Po
+00b8 Sk
+00b9 No
+00ba Ll
+00bb Pf
+00bc 00be No
+00bf Po
+00c0 00d6 Lu
+00d7 Sm
+00d8 00de Lu
+00df 00f6 Ll
+00f7 Sm
+00f8 00ff Ll
+0100 Lu
+0101 Ll
+0102 Lu
+0103 Ll
+0104 Lu
+0105 Ll
+0106 Lu
+0107 Ll
+0108 Lu
+0109 Ll
+010a Lu
+010b Ll
+010c Lu
+010d Ll
+010e Lu
+010f Ll
+0110 Lu
+0111 Ll
+0112 Lu
+0113 Ll
+0114 Lu
+0115 Ll
+0116 Lu
+0117 Ll
+0118 Lu
+0119 Ll
+011a Lu
+011b Ll
+011c Lu
+011d Ll
+011e Lu
+011f Ll
+0120 Lu
+0121 Ll
+0122 Lu
+0123 Ll
+0124 Lu
+0125 Ll
+0126 Lu
+0127 Ll
+0128 Lu
+0129 Ll
+012a Lu
+012b Ll
+012c Lu
+012d Ll
+012e Lu
+012f Ll
+0130 Lu
+0131 Ll
+0132 Lu
+0133 Ll
+0134 Lu
+0135 Ll
+0136 Lu
+0137 0138 Ll
+0139 Lu
+013a Ll
+013b Lu
+013c Ll
+013d Lu
+013e Ll
+013f Lu
+0140 Ll
+0141 Lu
+0142 Ll
+0143 Lu
+0144 Ll
+0145 Lu
+0146 Ll
+0147 Lu
+0148 0149 Ll
+014a Lu
+014b Ll
+014c Lu
+014d Ll
+014e Lu
+014f Ll
+0150 Lu
+0151 Ll
+0152 Lu
+0153 Ll
+0154 Lu
+0155 Ll
+0156 Lu
+0157 Ll
+0158 Lu
+0159 Ll
+015a Lu
+015b Ll
+015c Lu
+015d Ll
+015e Lu
+015f Ll
+0160 Lu
+0161 Ll
+0162 Lu
+0163 Ll
+0164 Lu
+0165 Ll
+0166 Lu
+0167 Ll
+0168 Lu
+0169 Ll
+016a Lu
+016b Ll
+016c Lu
+016d Ll
+016e Lu
+016f Ll
+0170 Lu
+0171 Ll
+0172 Lu
+0173 Ll
+0174 Lu
+0175 Ll
+0176 Lu
+0177 Ll
+0178 0179 Lu
+017a Ll
+017b Lu
+017c Ll
+017d Lu
+017e 0180 Ll
+0181 0182 Lu
+0183 Ll
+0184 Lu
+0185 Ll
+0186 0187 Lu
+0188 Ll
+0189 018b Lu
+018c 018d Ll
+018e 0191 Lu
+0192 Ll
+0193 0194 Lu
+0195 Ll
+0196 0198 Lu
+0199 019b Ll
+019c 019d Lu
+019e Ll
+019f 01a0 Lu
+01a1 Ll
+01a2 Lu
+01a3 Ll
+01a4 Lu
+01a5 Ll
+01a6 01a7 Lu
+01a8 Ll
+01a9 Lu
+01aa 01ab Ll
+01ac Lu
+01ad Ll
+01ae 01af Lu
+01b0 Ll
+01b1 01b3 Lu
+01b4 Ll
+01b5 Lu
+01b6 Ll
+01b7 01b8 Lu
+01b9 01ba Ll
+01bb Lo
+01bc Lu
+01bd 01bf Ll
+01c0 01c3 Lo
+01c4 Lu
+01c5 Lt
+01c6 Ll
+01c7 Lu
+01c8 Lt
+01c9 Ll
+01ca Lu
+01cb Lt
+01cc Ll
+01cd Lu
+01ce Ll
+01cf Lu
+01d0 Ll
+01d1 Lu
+01d2 Ll
+01d3 Lu
+01d4 Ll
+01d5 Lu
+01d6 Ll
+01d7 Lu
+01d8 Ll
+01d9 Lu
+01da Ll
+01db Lu
+01dc 01dd Ll
+01de Lu
+01df Ll
+01e0 Lu
+01e1 Ll
+01e2 Lu
+01e3 Ll
+01e4 Lu
+01e5 Ll
+01e6 Lu
+01e7 Ll
+01e8 Lu
+01e9 Ll
+01ea Lu
+01eb Ll
+01ec Lu
+01ed Ll
+01ee Lu
+01ef 01f0 Ll
+01f1 Lu
+01f2 Lt
+01f3 Ll
+01f4 Lu
+01f5 Ll
+01f6 01f8 Lu
+01f9 Ll
+01fa Lu
+01fb Ll
+01fc Lu
+01fd Ll
+01fe Lu
+01ff Ll
+0200 Lu
+0201 Ll
+0202 Lu
+0203 Ll
+0204 Lu
+0205 Ll
+0206 Lu
+0207 Ll
+0208 Lu
+0209 Ll
+020a Lu
+020b Ll
+020c Lu
+020d Ll
+020e Lu
+020f Ll
+0210 Lu
+0211 Ll
+0212 Lu
+0213 Ll
+0214 Lu
+0215 Ll
+0216 Lu
+0217 Ll
+0218 Lu
+0219 Ll
+021a Lu
+021b Ll
+021c Lu
+021d Ll
+021e Lu
+021f Ll
+0222 Lu
+0223 Ll
+0224 Lu
+0225 Ll
+0226 Lu
+0227 Ll
+0228 Lu
+0229 Ll
+022a Lu
+022b Ll
+022c Lu
+022d Ll
+022e Lu
+022f Ll
+0230 Lu
+0231 Ll
+0232 Lu
+0233 Ll
+0250 02ad Ll
+02b0 02b8 Lm
+02b9 02ba Sk
+02bb 02c1 Lm
+02c2 02cf Sk
+02d0 02d1 Lm
+02d2 02df Sk
+02e0 02e4 Lm
+02e5 02ed Sk
+02ee Lm
+0300 034e Mn
+0360 0362 Mn
+0374 0375 Sk
+037a Lm
+037e Po
+0384 0385 Sk
+0386 Lu
+0387 Po
+0388 038a Lu
+038c Lu
+038e 038f Lu
+0390 Ll
+0391 03a1 Lu
+03a3 03ab Lu
+03ac 03ce Ll
+03d0 03d1 Ll
+03d2 03d4 Lu
+03d5 03d7 Ll
+03da Lu
+03db Ll
+03dc Lu
+03dd Ll
+03de Lu
+03df Ll
+03e0 Lu
+03e1 Ll
+03e2 Lu
+03e3 Ll
+03e4 Lu
+03e5 Ll
+03e6 Lu
+03e7 Ll
+03e8 Lu
+03e9 Ll
+03ea Lu
+03eb Ll
+03ec Lu
+03ed Ll
+03ee Lu
+03ef 03f3 Ll
+0400 042f Lu
+0430 045f Ll
+0460 Lu
+0461 Ll
+0462 Lu
+0463 Ll
+0464 Lu
+0465 Ll
+0466 Lu
+0467 Ll
+0468 Lu
+0469 Ll
+046a Lu
+046b Ll
+046c Lu
+046d Ll
+046e Lu
+046f Ll
+0470 Lu
+0471 Ll
+0472 Lu
+0473 Ll
+0474 Lu
+0475 Ll
+0476 Lu
+0477 Ll
+0478 Lu
+0479 Ll
+047a Lu
+047b Ll
+047c Lu
+047d Ll
+047e Lu
+047f Ll
+0480 Lu
+0481 Ll
+0482 So
+0483 0486 Mn
+0488 0489 Me
+048c Lu
+048d Ll
+048e Lu
+048f Ll
+0490 Lu
+0491 Ll
+0492 Lu
+0493 Ll
+0494 Lu
+0495 Ll
+0496 Lu
+0497 Ll
+0498 Lu
+0499 Ll
+049a Lu
+049b Ll
+049c Lu
+049d Ll
+049e Lu
+049f Ll
+04a0 Lu
+04a1 Ll
+04a2 Lu
+04a3 Ll
+04a4 Lu
+04a5 Ll
+04a6 Lu
+04a7 Ll
+04a8 Lu
+04a9 Ll
+04aa Lu
+04ab Ll
+04ac Lu
+04ad Ll
+04ae Lu
+04af Ll
+04b0 Lu
+04b1 Ll
+04b2 Lu
+04b3 Ll
+04b4 Lu
+04b5 Ll
+04b6 Lu
+04b7 Ll
+04b8 Lu
+04b9 Ll
+04ba Lu
+04bb Ll
+04bc Lu
+04bd Ll
+04be Lu
+04bf Ll
+04c0 04c1 Lu
+04c2 Ll
+04c3 Lu
+04c4 Ll
+04c7 Lu
+04c8 Ll
+04cb Lu
+04cc Ll
+04d0 Lu
+04d1 Ll
+04d2 Lu
+04d3 Ll
+04d4 Lu
+04d5 Ll
+04d6 Lu
+04d7 Ll
+04d8 Lu
+04d9 Ll
+04da Lu
+04db Ll
+04dc Lu
+04dd Ll
+04de Lu
+04df Ll
+04e0 Lu
+04e1 Ll
+04e2 Lu
+04e3 Ll
+04e4 Lu
+04e5 Ll
+04e6 Lu
+04e7 Ll
+04e8 Lu
+04e9 Ll
+04ea Lu
+04eb Ll
+04ec Lu
+04ed Ll
+04ee Lu
+04ef Ll
+04f0 Lu
+04f1 Ll
+04f2 Lu
+04f3 Ll
+04f4 Lu
+04f5 Ll
+04f8 Lu
+04f9 Ll
+0531 0556 Lu
+0559 Lm
+055a 055f Po
+0561 0587 Ll
+0589 Po
+058a Pd
+0591 05a1 Mn
+05a3 05b9 Mn
+05bb 05bd Mn
+05be Po
+05bf Mn
+05c0 Po
+05c1 05c2 Mn
+05c3 Po
+05c4 Mn
+05d0 05ea Lo
+05f0 05f2 Lo
+05f3 05f4 Po
+060c Po
+061b Po
+061f Po
+0621 063a Lo
+0640 Lm
+0641 064a Lo
+064b 0655 Mn
+0660 0669 Nd
+066a 066d Po
+0670 Mn
+0671 06d3 Lo
+06d4 Po
+06d5 Lo
+06d6 06dc Mn
+06dd 06de Me
+06df 06e4 Mn
+06e5 06e6 Lm
+06e7 06e8 Mn
+06e9 So
+06ea 06ed Mn
+06f0 06f9 Nd
+06fa 06fc Lo
+06fd 06fe So
+0700 070d Po
+070f Cf
+0710 Lo
+0711 Mn
+0712 072c Lo
+0730 074a Mn
+0780 07a5 Lo
+07a6 07b0 Mn
+0901 0902 Mn
+0903 Mc
+0905 0939 Lo
+093c Mn
+093d Lo
+093e 0940 Mc
+0941 0948 Mn
+0949 094c Mc
+094d Mn
+0950 Lo
+0951 0954 Mn
+0958 0961 Lo
+0962 0963 Mn
+0964 0965 Po
+0966 096f Nd
+0970 Po
+0981 Mn
+0982 0983 Mc
+0985 098c Lo
+098f 0990 Lo
+0993 09a8 Lo
+09aa 09b0 Lo
+09b2 Lo
+09b6 09b9 Lo
+09bc Mn
+09be 09c0 Mc
+09c1 09c4 Mn
+09c7 09c8 Mc
+09cb 09cc Mc
+09cd Mn
+09d7 Mc
+09dc 09dd Lo
+09df 09e1 Lo
+09e2 09e3 Mn
+09e6 09ef Nd
+09f0 09f1 Lo
+09f2 09f3 Sc
+09f4 09f9 No
+09fa So
+0a02 Mn
+0a05 0a0a Lo
+0a0f 0a10 Lo
+0a13 0a28 Lo
+0a2a 0a30 Lo
+0a32 0a33 Lo
+0a35 0a36 Lo
+0a38 0a39 Lo
+0a3c Mn
+0a3e 0a40 Mc
+0a41 0a42 Mn
+0a47 0a48 Mn
+0a4b 0a4d Mn
+0a59 0a5c Lo
+0a5e Lo
+0a66 0a6f Nd
+0a70 0a71 Mn
+0a72 0a74 Lo
+0a81 0a82 Mn
+0a83 Mc
+0a85 0a8b Lo
+0a8d Lo
+0a8f 0a91 Lo
+0a93 0aa8 Lo
+0aaa 0ab0 Lo
+0ab2 0ab3 Lo
+0ab5 0ab9 Lo
+0abc Mn
+0abd Lo
+0abe 0ac0 Mc
+0ac1 0ac5 Mn
+0ac7 0ac8 Mn
+0ac9 Mc
+0acb 0acc Mc
+0acd Mn
+0ad0 Lo
+0ae0 Lo
+0ae6 0aef Nd
+0b01 Mn
+0b02 0b03 Mc
+0b05 0b0c Lo
+0b0f 0b10 Lo
+0b13 0b28 Lo
+0b2a 0b30 Lo
+0b32 0b33 Lo
+0b36 0b39 Lo
+0b3c Mn
+0b3d Lo
+0b3e Mc
+0b3f Mn
+0b40 Mc
+0b41 0b43 Mn
+0b47 0b48 Mc
+0b4b 0b4c Mc
+0b4d Mn
+0b56 Mn
+0b57 Mc
+0b5c 0b5d Lo
+0b5f 0b61 Lo
+0b66 0b6f Nd
+0b70 So
+0b82 Mn
+0b83 Mc
+0b85 0b8a Lo
+0b8e 0b90 Lo
+0b92 0b95 Lo
+0b99 0b9a Lo
+0b9c Lo
+0b9e 0b9f Lo
+0ba3 0ba4 Lo
+0ba8 0baa Lo
+0bae 0bb5 Lo
+0bb7 0bb9 Lo
+0bbe 0bbf Mc
+0bc0 Mn
+0bc1 0bc2 Mc
+0bc6 0bc8 Mc
+0bca 0bcc Mc
+0bcd Mn
+0bd7 Mc
+0be7 0bef Nd
+0bf0 0bf2 No
+0c01 0c03 Mc
+0c05 0c0c Lo
+0c0e 0c10 Lo
+0c12 0c28 Lo
+0c2a 0c33 Lo
+0c35 0c39 Lo
+0c3e 0c40 Mn
+0c41 0c44 Mc
+0c46 0c48 Mn
+0c4a 0c4d Mn
+0c55 0c56 Mn
+0c60 0c61 Lo
+0c66 0c6f Nd
+0c82 0c83 Mc
+0c85 0c8c Lo
+0c8e 0c90 Lo
+0c92 0ca8 Lo
+0caa 0cb3 Lo
+0cb5 0cb9 Lo
+0cbe Mc
+0cbf Mn
+0cc0 0cc4 Mc
+0cc6 Mn
+0cc7 0cc8 Mc
+0cca 0ccb Mc
+0ccc 0ccd Mn
+0cd5 0cd6 Mc
+0cde Lo
+0ce0 0ce1 Lo
+0ce6 0cef Nd
+0d02 0d03 Mc
+0d05 0d0c Lo
+0d0e 0d10 Lo
+0d12 0d28 Lo
+0d2a 0d39 Lo
+0d3e 0d40 Mc
+0d41 0d43 Mn
+0d46 0d48 Mc
+0d4a 0d4c Mc
+0d4d Mn
+0d57 Mc
+0d60 0d61 Lo
+0d66 0d6f Nd
+0d82 0d83 Mc
+0d85 0d96 Lo
+0d9a 0db1 Lo
+0db3 0dbb Lo
+0dbd Lo
+0dc0 0dc6 Lo
+0dca Mn
+0dcf 0dd1 Mc
+0dd2 0dd4 Mn
+0dd6 Mn
+0dd8 0ddf Mc
+0df2 0df3 Mc
+0df4 Po
+0e01 0e30 Lo
+0e31 Mn
+0e32 0e33 Lo
+0e34 0e3a Mn
+0e3f Sc
+0e40 0e45 Lo
+0e46 Lm
+0e47 0e4e Mn
+0e4f Po
+0e50 0e59 Nd
+0e5a 0e5b Po
+0e81 0e82 Lo
+0e84 Lo
+0e87 0e88 Lo
+0e8a Lo
+0e8d Lo
+0e94 0e97 Lo
+0e99 0e9f Lo
+0ea1 0ea3 Lo
+0ea5 Lo
+0ea7 Lo
+0eaa 0eab Lo
+0ead 0eb0 Lo
+0eb1 Mn
+0eb2 0eb3 Lo
+0eb4 0eb9 Mn
+0ebb 0ebc Mn
+0ebd Lo
+0ec0 0ec4 Lo
+0ec6 Lm
+0ec8 0ecd Mn
+0ed0 0ed9 Nd
+0edc 0edd Lo
+0f00 Lo
+0f01 0f03 So
+0f04 0f12 Po
+0f13 0f17 So
+0f18 0f19 Mn
+0f1a 0f1f So
+0f20 0f29 Nd
+0f2a 0f33 No
+0f34 So
+0f35 Mn
+0f36 So
+0f37 Mn
+0f38 So
+0f39 Mn
+0f3a Ps
+0f3b Pe
+0f3c Ps
+0f3d Pe
+0f3e 0f3f Mc
+0f40 0f47 Lo
+0f49 0f6a Lo
+0f71 0f7e Mn
+0f7f Mc
+0f80 0f84 Mn
+0f85 Po
+0f86 0f87 Mn
+0f88 0f8b Lo
+0f90 0f97 Mn
+0f99 0fbc Mn
+0fbe 0fc5 So
+0fc6 Mn
+0fc7 0fcc So
+0fcf So
+1000 1021 Lo
+1023 1027 Lo
+1029 102a Lo
+102c Mc
+102d 1030 Mn
+1031 Mc
+1032 Mn
+1036 1037 Mn
+1038 Mc
+1039 Mn
+1040 1049 Nd
+104a 104f Po
+1050 1055 Lo
+1056 1057 Mc
+1058 1059 Mn
+10a0 10c5 Lu
+10d0 10f6 Lo
+10fb Po
+1100 1159 Lo
+115f 11a2 Lo
+11a8 11f9 Lo
+1200 1206 Lo
+1208 1246 Lo
+1248 Lo
+124a 124d Lo
+1250 1256 Lo
+1258 Lo
+125a 125d Lo
+1260 1286 Lo
+1288 Lo
+128a 128d Lo
+1290 12ae Lo
+12b0 Lo
+12b2 12b5 Lo
+12b8 12be Lo
+12c0 Lo
+12c2 12c5 Lo
+12c8 12ce Lo
+12d0 12d6 Lo
+12d8 12ee Lo
+12f0 130e Lo
+1310 Lo
+1312 1315 Lo
+1318 131e Lo
+1320 1346 Lo
+1348 135a Lo
+1361 1368 Po
+1369 1371 Nd
+1372 137c No
+13a0 13f4 Lo
+1401 166c Lo
+166d 166e Po
+166f 1676 Lo
+1680 Zs
+1681 169a Lo
+169b Ps
+169c Pe
+16a0 16ea Lo
+16eb 16ed Po
+16ee 16f0 No
+1780 17b3 Lo
+17b4 17b6 Mc
+17b7 17bd Mn
+17be 17c5 Mc
+17c6 Mn
+17c7 17c8 Mc
+17c9 17d3 Mn
+17d4 17da Po
+17db Sc
+17dc Po
+17e0 17e9 Nd
+1800 1805 Po
+1806 Pd
+1807 180a Po
+180b 180e Cf
+1810 1819 Nd
+1820 1842 Lo
+1843 Lm
+1844 1877 Lo
+1880 18a8 Lo
+18a9 Mn
+1e00 Lu
+1e01 Ll
+1e02 Lu
+1e03 Ll
+1e04 Lu
+1e05 Ll
+1e06 Lu
+1e07 Ll
+1e08 Lu
+1e09 Ll
+1e0a Lu
+1e0b Ll
+1e0c Lu
+1e0d Ll
+1e0e Lu
+1e0f Ll
+1e10 Lu
+1e11 Ll
+1e12 Lu
+1e13 Ll
+1e14 Lu
+1e15 Ll
+1e16 Lu
+1e17 Ll
+1e18 Lu
+1e19 Ll
+1e1a Lu
+1e1b Ll
+1e1c Lu
+1e1d Ll
+1e1e Lu
+1e1f Ll
+1e20 Lu
+1e21 Ll
+1e22 Lu
+1e23 Ll
+1e24 Lu
+1e25 Ll
+1e26 Lu
+1e27 Ll
+1e28 Lu
+1e29 Ll
+1e2a Lu
+1e2b Ll
+1e2c Lu
+1e2d Ll
+1e2e Lu
+1e2f Ll
+1e30 Lu
+1e31 Ll
+1e32 Lu
+1e33 Ll
+1e34 Lu
+1e35 Ll
+1e36 Lu
+1e37 Ll
+1e38 Lu
+1e39 Ll
+1e3a Lu
+1e3b Ll
+1e3c Lu
+1e3d Ll
+1e3e Lu
+1e3f Ll
+1e40 Lu
+1e41 Ll
+1e42 Lu
+1e43 Ll
+1e44 Lu
+1e45 Ll
+1e46 Lu
+1e47 Ll
+1e48 Lu
+1e49 Ll
+1e4a Lu
+1e4b Ll
+1e4c Lu
+1e4d Ll
+1e4e Lu
+1e4f Ll
+1e50 Lu
+1e51 Ll
+1e52 Lu
+1e53 Ll
+1e54 Lu
+1e55 Ll
+1e56 Lu
+1e57 Ll
+1e58 Lu
+1e59 Ll
+1e5a Lu
+1e5b Ll
+1e5c Lu
+1e5d Ll
+1e5e Lu
+1e5f Ll
+1e60 Lu
+1e61 Ll
+1e62 Lu
+1e63 Ll
+1e64 Lu
+1e65 Ll
+1e66 Lu
+1e67 Ll
+1e68 Lu
+1e69 Ll
+1e6a Lu
+1e6b Ll
+1e6c Lu
+1e6d Ll
+1e6e Lu
+1e6f Ll
+1e70 Lu
+1e71 Ll
+1e72 Lu
+1e73 Ll
+1e74 Lu
+1e75 Ll
+1e76 Lu
+1e77 Ll
+1e78 Lu
+1e79 Ll
+1e7a Lu
+1e7b Ll
+1e7c Lu
+1e7d Ll
+1e7e Lu
+1e7f Ll
+1e80 Lu
+1e81 Ll
+1e82 Lu
+1e83 Ll
+1e84 Lu
+1e85 Ll
+1e86 Lu
+1e87 Ll
+1e88 Lu
+1e89 Ll
+1e8a Lu
+1e8b Ll
+1e8c Lu
+1e8d Ll
+1e8e Lu
+1e8f Ll
+1e90 Lu
+1e91 Ll
+1e92 Lu
+1e93 Ll
+1e94 Lu
+1e95 1e9b Ll
+1ea0 Lu
+1ea1 Ll
+1ea2 Lu
+1ea3 Ll
+1ea4 Lu
+1ea5 Ll
+1ea6 Lu
+1ea7 Ll
+1ea8 Lu
+1ea9 Ll
+1eaa Lu
+1eab Ll
+1eac Lu
+1ead Ll
+1eae Lu
+1eaf Ll
+1eb0 Lu
+1eb1 Ll
+1eb2 Lu
+1eb3 Ll
+1eb4 Lu
+1eb5 Ll
+1eb6 Lu
+1eb7 Ll
+1eb8 Lu
+1eb9 Ll
+1eba Lu
+1ebb Ll
+1ebc Lu
+1ebd Ll
+1ebe Lu
+1ebf Ll
+1ec0 Lu
+1ec1 Ll
+1ec2 Lu
+1ec3 Ll
+1ec4 Lu
+1ec5 Ll
+1ec6 Lu
+1ec7 Ll
+1ec8 Lu
+1ec9 Ll
+1eca Lu
+1ecb Ll
+1ecc Lu
+1ecd Ll
+1ece Lu
+1ecf Ll
+1ed0 Lu
+1ed1 Ll
+1ed2 Lu
+1ed3 Ll
+1ed4 Lu
+1ed5 Ll
+1ed6 Lu
+1ed7 Ll
+1ed8 Lu
+1ed9 Ll
+1eda Lu
+1edb Ll
+1edc Lu
+1edd Ll
+1ede Lu
+1edf Ll
+1ee0 Lu
+1ee1 Ll
+1ee2 Lu
+1ee3 Ll
+1ee4 Lu
+1ee5 Ll
+1ee6 Lu
+1ee7 Ll
+1ee8 Lu
+1ee9 Ll
+1eea Lu
+1eeb Ll
+1eec Lu
+1eed Ll
+1eee Lu
+1eef Ll
+1ef0 Lu
+1ef1 Ll
+1ef2 Lu
+1ef3 Ll
+1ef4 Lu
+1ef5 Ll
+1ef6 Lu
+1ef7 Ll
+1ef8 Lu
+1ef9 Ll
+1f00 1f07 Ll
+1f08 1f0f Lu
+1f10 1f15 Ll
+1f18 1f1d Lu
+1f20 1f27 Ll
+1f28 1f2f Lu
+1f30 1f37 Ll
+1f38 1f3f Lu
+1f40 1f45 Ll
+1f48 1f4d Lu
+1f50 1f57 Ll
+1f59 Lu
+1f5b Lu
+1f5d Lu
+1f5f Lu
+1f60 1f67 Ll
+1f68 1f6f Lu
+1f70 1f7d Ll
+1f80 1f87 Ll
+1f88 1f8f Lt
+1f90 1f97 Ll
+1f98 1f9f Lt
+1fa0 1fa7 Ll
+1fa8 1faf Lt
+1fb0 1fb4 Ll
+1fb6 1fb7 Ll
+1fb8 1fbb Lu
+1fbc Lt
+1fbd Sk
+1fbe Ll
+1fbf 1fc1 Sk
+1fc2 1fc4 Ll
+1fc6 1fc7 Ll
+1fc8 1fcb Lu
+1fcc Lt
+1fcd 1fcf Sk
+1fd0 1fd3 Ll
+1fd6 1fd7 Ll
+1fd8 1fdb Lu
+1fdd 1fdf Sk
+1fe0 1fe7 Ll
+1fe8 1fec Lu
+1fed 1fef Sk
+1ff2 1ff4 Ll
+1ff6 1ff7 Ll
+1ff8 1ffb Lu
+1ffc Lt
+1ffd 1ffe Sk
+2000 200b Zs
+200c 200f Cf
+2010 2015 Pd
+2016 2017 Po
+2018 Pi
+2019 Pf
+201a Ps
+201b 201c Pi
+201d Pf
+201e Ps
+201f Pi
+2020 2027 Po
+2028 Zl
+2029 Zp
+202a 202e Cf
+202f Zs
+2030 2038 Po
+2039 Pi
+203a Pf
+203b 203e Po
+203f 2040 Pc
+2041 2043 Po
+2044 Sm
+2045 Ps
+2046 Pe
+2048 204d Po
+206a 206f Cf
+2070 No
+2074 2079 No
+207a 207c Sm
+207d Ps
+207e Pe
+207f Ll
+2080 2089 No
+208a 208c Sm
+208d Ps
+208e Pe
+20a0 20af Sc
+20d0 20dc Mn
+20dd 20e0 Me
+20e1 Mn
+20e2 20e3 Me
+2100 2101 So
+2102 Lu
+2103 2106 So
+2107 Lu
+2108 2109 So
+210a Ll
+210b 210d Lu
+210e 210f Ll
+2110 2112 Lu
+2113 Ll
+2114 So
+2115 Lu
+2116 2118 So
+2119 211d Lu
+211e 2123 So
+2124 Lu
+2125 So
+2126 Lu
+2127 So
+2128 Lu
+2129 So
+212a 212d Lu
+212e So
+212f Ll
+2130 2131 Lu
+2132 So
+2133 Lu
+2134 Ll
+2135 2138 Lo
+2139 Ll
+213a So
+2153 215f No
+2160 2183 Nl
+2190 2194 Sm
+2195 2199 So
+219a 219b Sm
+219c 219f So
+21a0 Sm
+21a1 21a2 So
+21a3 Sm
+21a4 21a5 So
+21a6 Sm
+21a7 21ad So
+21ae Sm
+21af 21cd So
+21ce 21cf Sm
+21d0 21d1 So
+21d2 Sm
+21d3 So
+21d4 Sm
+21d5 21f3 So
+2200 22f1 Sm
+2300 2307 So
+2308 230b Sm
+230c 231f So
+2320 2321 Sm
+2322 2328 So
+2329 Ps
+232a Pe
+232b 237b So
+237d 239a So
+2400 2426 So
+2440 244a So
+2460 249b No
+249c 24e9 So
+24ea No
+2500 2595 So
+25a0 25b6 So
+25b7 Sm
+25b8 25c0 So
+25c1 Sm
+25c2 25f7 So
+2600 2613 So
+2619 266e So
+266f Sm
+2670 2671 So
+2701 2704 So
+2706 2709 So
+270c 2727 So
+2729 274b So
+274d So
+274f 2752 So
+2756 So
+2758 275e So
+2761 2767 So
+2776 2793 No
+2794 So
+2798 27af So
+27b1 27be So
+2800 28ff So
+2e80 2e99 So
+2e9b 2ef3 So
+2f00 2fd5 So
+2ff0 2ffb So
+3000 Zs
+3001 3003 Po
+3004 So
+3005 Lm
+3006 Lo
+3007 Nl
+3008 Ps
+3009 Pe
+300a Ps
+300b Pe
+300c Ps
+300d Pe
+300e Ps
+300f Pe
+3010 Ps
+3011 Pe
+3012 3013 So
+3014 Ps
+3015 Pe
+3016 Ps
+3017 Pe
+3018 Ps
+3019 Pe
+301a Ps
+301b Pe
+301c Pd
+301d Ps
+301e 301f Pe
+3020 So
+3021 3029 Nl
+302a 302f Mn
+3030 Pd
+3031 3035 Lm
+3036 3037 So
+3038 303a Nl
+303e 303f So
+3041 3094 Lo
+3099 309a Mn
+309b 309c Sk
+309d 309e Lm
+30a1 30fa Lo
+30fb Pc
+30fc 30fe Lm
+3105 312c Lo
+3131 318e Lo
+3190 3191 So
+3192 3195 No
+3196 319f So
+31a0 31b7 Lo
+3200 321c So
+3220 3229 No
+322a 3243 So
+3260 327b So
+327f So
+3280 3289 No
+328a 32b0 So
+32c0 32cb So
+32d0 32fe So
+3300 3376 So
+337b 33dd So
+33e0 33fe So
+3400 4db5 Lo
+4e00 9fa5 Lo
+a000 a48c Lo
+a490 a4a1 So
+a4a4 a4b3 So
+a4b5 a4c0 So
+a4c2 a4c4 So
+a4c6 So
+ac00 d7a3 Lo
+d800 db7f Cs
+db80 dbff Cs
+dc00 dfff Cs
+e000 f8ff Co
+f900 fa2d Lo
+fb00 fb06 Ll
+fb13 fb17 Ll
+fb1d Lo
+fb1e Mn
+fb1f fb28 Lo
+fb29 Sm
+fb2a fb36 Lo
+fb38 fb3c Lo
+fb3e Lo
+fb40 fb41 Lo
+fb43 fb44 Lo
+fb46 fbb1 Lo
+fbd3 fd3d Lo
+fd3e Ps
+fd3f Pe
+fd50 fd8f Lo
+fd92 fdc7 Lo
+fdf0 fdfb Lo
+fe20 fe23 Mn
+fe30 Po
+fe31 fe32 Pd
+fe33 fe34 Pc
+fe35 Ps
+fe36 Pe
+fe37 Ps
+fe38 Pe
+fe39 Ps
+fe3a Pe
+fe3b Ps
+fe3c Pe
+fe3d Ps
+fe3e Pe
+fe3f Ps
+fe40 Pe
+fe41 Ps
+fe42 Pe
+fe43 Ps
+fe44 Pe
+fe49 fe4c Po
+fe4d fe4f Pc
+fe50 fe52 Po
+fe54 fe57 Po
+fe58 Pd
+fe59 Ps
+fe5a Pe
+fe5b Ps
+fe5c Pe
+fe5d Ps
+fe5e Pe
+fe5f fe61 Po
+fe62 Sm
+fe63 Pd
+fe64 fe66 Sm
+fe68 Po
+fe69 Sc
+fe6a fe6b Po
+fe70 fe72 Lo
+fe74 Lo
+fe76 fefc Lo
+feff Cf
+ff01 ff03 Po
+ff04 Sc
+ff05 ff07 Po
+ff08 Ps
+ff09 Pe
+ff0a Po
+ff0b Sm
+ff0c Po
+ff0d Pd
+ff0e ff0f Po
+ff10 ff19 Nd
+ff1a ff1b Po
+ff1c ff1e Sm
+ff1f ff20 Po
+ff21 ff3a Lu
+ff3b Ps
+ff3c Po
+ff3d Pe
+ff3e Sk
+ff3f Pc
+ff40 Sk
+ff41 ff5a Ll
+ff5b Ps
+ff5c Sm
+ff5d Pe
+ff5e Sm
+ff61 Po
+ff62 Ps
+ff63 Pe
+ff64 Po
+ff65 Pc
+ff66 ff6f Lo
+ff70 Lm
+ff71 ff9d Lo
+ff9e ff9f Lm
+ffa0 ffbe Lo
+ffc2 ffc7 Lo
+ffca ffcf Lo
+ffd2 ffd7 Lo
+ffda ffdc Lo
+ffe0 ffe1 Sc
+ffe2 Sm
+ffe3 Sk
+ffe4 So
+ffe5 ffe6 Sc
+ffe8 So
+ffe9 ffec Sm
+ffed ffee So
+fff9 fffb Cf
+fffc fffd So
+END
diff --git a/contrib/perl5/lib/unicode/CombiningClass.pl b/contrib/perl5/lib/unicode/CombiningClass.pl
new file mode 100644
index 0000000..a409498
--- /dev/null
+++ b/contrib/perl5/lib/unicode/CombiningClass.pl
@@ -0,0 +1,152 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0300 0314 230
+0315 232
+0316 0319 220
+031a 232
+031b 216
+031c 0320 220
+0321 0322 202
+0323 0326 220
+0327 0328 202
+0329 0333 220
+0334 0338 1
+0339 033c 220
+033d 0344 230
+0345 240
+0346 230
+0347 0349 220
+034a 034c 230
+034d 034e 220
+0360 0361 234
+0362 233
+0483 0486 230
+0591 220
+0592 0595 230
+0596 220
+0597 0599 230
+059a 222
+059b 220
+059c 05a1 230
+05a3 05a7 220
+05a8 05a9 230
+05aa 220
+05ab 05ac 230
+05ad 222
+05ae 228
+05af 230
+05b0 10
+05b1 11
+05b2 12
+05b3 13
+05b4 14
+05b5 15
+05b6 16
+05b7 17
+05b8 18
+05b9 19
+05bb 20
+05bc 21
+05bd 22
+05bf 23
+05c1 24
+05c2 25
+05c4 230
+064b 27
+064c 28
+064d 29
+064e 30
+064f 31
+0650 32
+0651 33
+0652 34
+0653 0654 230
+0655 220
+0670 35
+06d6 06dc 230
+06df 06e2 230
+06e3 220
+06e4 230
+06e7 06e8 230
+06ea 220
+06eb 06ec 230
+06ed 220
+0711 36
+0730 230
+0731 220
+0732 0733 230
+0734 220
+0735 0736 230
+0737 0739 220
+073a 230
+073b 073c 220
+073d 230
+073e 220
+073f 0741 230
+0742 220
+0743 230
+0744 220
+0745 230
+0746 220
+0747 230
+0748 220
+0749 074a 230
+093c 7
+094d 9
+0951 230
+0952 220
+0953 0954 230
+09bc 7
+09cd 9
+0a3c 7
+0a4d 9
+0abc 7
+0acd 9
+0b3c 7
+0b4d 9
+0bcd 9
+0c4d 9
+0c55 84
+0c56 91
+0ccd 9
+0d4d 9
+0dca 9
+0e38 0e39 103
+0e3a 9
+0e48 0e4b 107
+0eb8 0eb9 118
+0ec8 0ecb 122
+0f18 0f19 220
+0f35 220
+0f37 220
+0f39 216
+0f71 129
+0f72 130
+0f74 132
+0f7a 0f7d 130
+0f80 130
+0f82 0f83 230
+0f84 9
+0f86 0f87 230
+0fc6 220
+1037 7
+1039 9
+17d2 9
+18a9 228
+20d0 20d1 230
+20d2 20d3 1
+20d4 20d7 230
+20d8 20da 1
+20db 20dc 230
+20e1 230
+302a 218
+302b 228
+302c 232
+302d 222
+302e 302f 224
+3099 309a 8
+fb1e 26
+fe20 fe23 230
+END
diff --git a/contrib/perl5/lib/unicode/CompExcl.txt b/contrib/perl5/lib/unicode/CompExcl.txt
new file mode 100644
index 0000000..5ea46af
--- /dev/null
+++ b/contrib/perl5/lib/unicode/CompExcl.txt
@@ -0,0 +1,143 @@
+# Composition Exclusions
+# This file lists the characters from the UTR #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# (2) Post Composition Version characters
+# These characters cannot be derived from the UnicodeData file.
+# (There are no characters in this category in this version of Unicode.)
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a canonical
+# class of zero.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
diff --git a/contrib/perl5/lib/unicode/Decomposition.pl b/contrib/perl5/lib/unicode/Decomposition.pl
new file mode 100644
index 0000000..ecc30b2
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Decomposition.pl
@@ -0,0 +1,3470 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00a0 <noBreak> 0020
+00a8 <compat> 0020 0308
+00aa <super> 0061
+00af <compat> 0020 0304
+00b2 <super> 0032
+00b3 <super> 0033
+00b4 <compat> 0020 0301
+00b5 <compat> 03BC
+00b8 <compat> 0020 0327
+00b9 <super> 0031
+00ba <super> 006F
+00bc <fraction> 0031 2044 0034
+00bd <fraction> 0031 2044 0032
+00be <fraction> 0033 2044 0034
+00c0 0041 0300
+00c1 0041 0301
+00c2 0041 0302
+00c3 0041 0303
+00c4 0041 0308
+00c5 0041 030A
+00c7 0043 0327
+00c8 0045 0300
+00c9 0045 0301
+00ca 0045 0302
+00cb 0045 0308
+00cc 0049 0300
+00cd 0049 0301
+00ce 0049 0302
+00cf 0049 0308
+00d1 004E 0303
+00d2 004F 0300
+00d3 004F 0301
+00d4 004F 0302
+00d5 004F 0303
+00d6 004F 0308
+00d9 0055 0300
+00da 0055 0301
+00db 0055 0302
+00dc 0055 0308
+00dd 0059 0301
+00e0 0061 0300
+00e1 0061 0301
+00e2 0061 0302
+00e3 0061 0303
+00e4 0061 0308
+00e5 0061 030A
+00e7 0063 0327
+00e8 0065 0300
+00e9 0065 0301
+00ea 0065 0302
+00eb 0065 0308
+00ec 0069 0300
+00ed 0069 0301
+00ee 0069 0302
+00ef 0069 0308
+00f1 006E 0303
+00f2 006F 0300
+00f3 006F 0301
+00f4 006F 0302
+00f5 006F 0303
+00f6 006F 0308
+00f9 0075 0300
+00fa 0075 0301
+00fb 0075 0302
+00fc 0075 0308
+00fd 0079 0301
+00ff 0079 0308
+0100 0041 0304
+0101 0061 0304
+0102 0041 0306
+0103 0061 0306
+0104 0041 0328
+0105 0061 0328
+0106 0043 0301
+0107 0063 0301
+0108 0043 0302
+0109 0063 0302
+010a 0043 0307
+010b 0063 0307
+010c 0043 030C
+010d 0063 030C
+010e 0044 030C
+010f 0064 030C
+0112 0045 0304
+0113 0065 0304
+0114 0045 0306
+0115 0065 0306
+0116 0045 0307
+0117 0065 0307
+0118 0045 0328
+0119 0065 0328
+011a 0045 030C
+011b 0065 030C
+011c 0047 0302
+011d 0067 0302
+011e 0047 0306
+011f 0067 0306
+0120 0047 0307
+0121 0067 0307
+0122 0047 0327
+0123 0067 0327
+0124 0048 0302
+0125 0068 0302
+0128 0049 0303
+0129 0069 0303
+012a 0049 0304
+012b 0069 0304
+012c 0049 0306
+012d 0069 0306
+012e 0049 0328
+012f 0069 0328
+0130 0049 0307
+0132 <compat> 0049 004A
+0133 <compat> 0069 006A
+0134 004A 0302
+0135 006A 0302
+0136 004B 0327
+0137 006B 0327
+0139 004C 0301
+013a 006C 0301
+013b 004C 0327
+013c 006C 0327
+013d 004C 030C
+013e 006C 030C
+013f <compat> 004C 00B7
+0140 <compat> 006C 00B7
+0143 004E 0301
+0144 006E 0301
+0145 004E 0327
+0146 006E 0327
+0147 004E 030C
+0148 006E 030C
+0149 <compat> 02BC 006E
+014c 004F 0304
+014d 006F 0304
+014e 004F 0306
+014f 006F 0306
+0150 004F 030B
+0151 006F 030B
+0154 0052 0301
+0155 0072 0301
+0156 0052 0327
+0157 0072 0327
+0158 0052 030C
+0159 0072 030C
+015a 0053 0301
+015b 0073 0301
+015c 0053 0302
+015d 0073 0302
+015e 0053 0327
+015f 0073 0327
+0160 0053 030C
+0161 0073 030C
+0162 0054 0327
+0163 0074 0327
+0164 0054 030C
+0165 0074 030C
+0168 0055 0303
+0169 0075 0303
+016a 0055 0304
+016b 0075 0304
+016c 0055 0306
+016d 0075 0306
+016e 0055 030A
+016f 0075 030A
+0170 0055 030B
+0171 0075 030B
+0172 0055 0328
+0173 0075 0328
+0174 0057 0302
+0175 0077 0302
+0176 0059 0302
+0177 0079 0302
+0178 0059 0308
+0179 005A 0301
+017a 007A 0301
+017b 005A 0307
+017c 007A 0307
+017d 005A 030C
+017e 007A 030C
+017f <compat> 0073
+01a0 004F 031B
+01a1 006F 031B
+01af 0055 031B
+01b0 0075 031B
+01c4 <compat> 0044 017D
+01c5 <compat> 0044 017E
+01c6 <compat> 0064 017E
+01c7 <compat> 004C 004A
+01c8 <compat> 004C 006A
+01c9 <compat> 006C 006A
+01ca <compat> 004E 004A
+01cb <compat> 004E 006A
+01cc <compat> 006E 006A
+01cd 0041 030C
+01ce 0061 030C
+01cf 0049 030C
+01d0 0069 030C
+01d1 004F 030C
+01d2 006F 030C
+01d3 0055 030C
+01d4 0075 030C
+01d5 00DC 0304
+01d6 00FC 0304
+01d7 00DC 0301
+01d8 00FC 0301
+01d9 00DC 030C
+01da 00FC 030C
+01db 00DC 0300
+01dc 00FC 0300
+01de 00C4 0304
+01df 00E4 0304
+01e0 0226 0304
+01e1 0227 0304
+01e2 00C6 0304
+01e3 00E6 0304
+01e6 0047 030C
+01e7 0067 030C
+01e8 004B 030C
+01e9 006B 030C
+01ea 004F 0328
+01eb 006F 0328
+01ec 01EA 0304
+01ed 01EB 0304
+01ee 01B7 030C
+01ef 0292 030C
+01f0 006A 030C
+01f1 <compat> 0044 005A
+01f2 <compat> 0044 007A
+01f3 <compat> 0064 007A
+01f4 0047 0301
+01f5 0067 0301
+01f8 004E 0300
+01f9 006E 0300
+01fa 00C5 0301
+01fb 00E5 0301
+01fc 00C6 0301
+01fd 00E6 0301
+01fe 00D8 0301
+01ff 00F8 0301
+0200 0041 030F
+0201 0061 030F
+0202 0041 0311
+0203 0061 0311
+0204 0045 030F
+0205 0065 030F
+0206 0045 0311
+0207 0065 0311
+0208 0049 030F
+0209 0069 030F
+020a 0049 0311
+020b 0069 0311
+020c 004F 030F
+020d 006F 030F
+020e 004F 0311
+020f 006F 0311
+0210 0052 030F
+0211 0072 030F
+0212 0052 0311
+0213 0072 0311
+0214 0055 030F
+0215 0075 030F
+0216 0055 0311
+0217 0075 0311
+0218 0053 0326
+0219 0073 0326
+021a 0054 0326
+021b 0074 0326
+021e 0048 030C
+021f 0068 030C
+0226 0041 0307
+0227 0061 0307
+0228 0045 0327
+0229 0065 0327
+022a 00D6 0304
+022b 00F6 0304
+022c 00D5 0304
+022d 00F5 0304
+022e 004F 0307
+022f 006F 0307
+0230 022E 0304
+0231 022F 0304
+0232 0059 0304
+0233 0079 0304
+02b0 <super> 0068
+02b1 <super> 0266
+02b2 <super> 006A
+02b3 <super> 0072
+02b4 <super> 0279
+02b5 <super> 027B
+02b6 <super> 0281
+02b7 <super> 0077
+02b8 <super> 0079
+02d8 <compat> 0020 0306
+02d9 <compat> 0020 0307
+02da <compat> 0020 030A
+02db <compat> 0020 0328
+02dc <compat> 0020 0303
+02dd <compat> 0020 030B
+02e0 <super> 0263
+02e1 <super> 006C
+02e2 <super> 0073
+02e3 <super> 0078
+02e4 <super> 0295
+0340 0300
+0341 0301
+0343 0313
+0344 0308 0301
+0374 02B9
+037a <compat> 0020 0345
+037e 003B
+0384 <compat> 0020 0301
+0385 00A8 0301
+0386 0391 0301
+0387 00B7
+0388 0395 0301
+0389 0397 0301
+038a 0399 0301
+038c 039F 0301
+038e 03A5 0301
+038f 03A9 0301
+0390 03CA 0301
+03aa 0399 0308
+03ab 03A5 0308
+03ac 03B1 0301
+03ad 03B5 0301
+03ae 03B7 0301
+03af 03B9 0301
+03b0 03CB 0301
+03ca 03B9 0308
+03cb 03C5 0308
+03cc 03BF 0301
+03cd 03C5 0301
+03ce 03C9 0301
+03d0 <compat> 03B2
+03d1 <compat> 03B8
+03d2 <compat> 03A5
+03d3 03D2 0301
+03d4 03D2 0308
+03d5 <compat> 03C6
+03d6 <compat> 03C0
+03f0 <compat> 03BA
+03f1 <compat> 03C1
+03f2 <compat> 03C2
+0400 0415 0300
+0401 0415 0308
+0403 0413 0301
+0407 0406 0308
+040c 041A 0301
+040d 0418 0300
+040e 0423 0306
+0419 0418 0306
+0439 0438 0306
+0450 0435 0300
+0451 0435 0308
+0453 0433 0301
+0457 0456 0308
+045c 043A 0301
+045d 0438 0300
+045e 0443 0306
+0476 0474 030F
+0477 0475 030F
+04c1 0416 0306
+04c2 0436 0306
+04d0 0410 0306
+04d1 0430 0306
+04d2 0410 0308
+04d3 0430 0308
+04d6 0415 0306
+04d7 0435 0306
+04da 04D8 0308
+04db 04D9 0308
+04dc 0416 0308
+04dd 0436 0308
+04de 0417 0308
+04df 0437 0308
+04e2 0418 0304
+04e3 0438 0304
+04e4 0418 0308
+04e5 0438 0308
+04e6 041E 0308
+04e7 043E 0308
+04ea 04E8 0308
+04eb 04E9 0308
+04ec 042D 0308
+04ed 044D 0308
+04ee 0423 0304
+04ef 0443 0304
+04f0 0423 0308
+04f1 0443 0308
+04f2 0423 030B
+04f3 0443 030B
+04f4 0427 0308
+04f5 0447 0308
+04f8 042B 0308
+04f9 044B 0308
+0587 <compat> 0565 0582
+0622 0627 0653
+0623 0627 0654
+0624 0648 0654
+0625 0627 0655
+0626 064A 0654
+0675 <compat> 0627 0674
+0676 <compat> 0648 0674
+0677 <compat> 06C7 0674
+0678 <compat> 064A 0674
+06c0 06D5 0654
+06c2 06C1 0654
+06d3 06D2 0654
+0929 0928 093C
+0931 0930 093C
+0934 0933 093C
+0958 0915 093C
+0959 0916 093C
+095a 0917 093C
+095b 091C 093C
+095c 0921 093C
+095d 0922 093C
+095e 092B 093C
+095f 092F 093C
+09cb 09C7 09BE
+09cc 09C7 09D7
+09dc 09A1 09BC
+09dd 09A2 09BC
+09df 09AF 09BC
+0a33 0A32 0A3C
+0a36 0A38 0A3C
+0a59 0A16 0A3C
+0a5a 0A17 0A3C
+0a5b 0A1C 0A3C
+0a5e 0A2B 0A3C
+0b48 0B47 0B56
+0b4b 0B47 0B3E
+0b4c 0B47 0B57
+0b5c 0B21 0B3C
+0b5d 0B22 0B3C
+0b94 0B92 0BD7
+0bca 0BC6 0BBE
+0bcb 0BC7 0BBE
+0bcc 0BC6 0BD7
+0c48 0C46 0C56
+0cc0 0CBF 0CD5
+0cc7 0CC6 0CD5
+0cc8 0CC6 0CD6
+0cca 0CC6 0CC2
+0ccb 0CCA 0CD5
+0d4a 0D46 0D3E
+0d4b 0D47 0D3E
+0d4c 0D46 0D57
+0dda 0DD9 0DCA
+0ddc 0DD9 0DCF
+0ddd 0DDC 0DCA
+0dde 0DD9 0DDF
+0e33 <compat> 0E4D 0E32
+0eb3 <compat> 0ECD 0EB2
+0edc <compat> 0EAB 0E99
+0edd <compat> 0EAB 0EA1
+0f0c <noBreak> 0F0B
+0f43 0F42 0FB7
+0f4d 0F4C 0FB7
+0f52 0F51 0FB7
+0f57 0F56 0FB7
+0f5c 0F5B 0FB7
+0f69 0F40 0FB5
+0f73 0F71 0F72
+0f75 0F71 0F74
+0f76 0FB2 0F80
+0f77 <compat> 0FB2 0F81
+0f78 0FB3 0F80
+0f79 <compat> 0FB3 0F81
+0f81 0F71 0F80
+0f93 0F92 0FB7
+0f9d 0F9C 0FB7
+0fa2 0FA1 0FB7
+0fa7 0FA6 0FB7
+0fac 0FAB 0FB7
+0fb9 0F90 0FB5
+1026 1025 102E
+1e00 0041 0325
+1e01 0061 0325
+1e02 0042 0307
+1e03 0062 0307
+1e04 0042 0323
+1e05 0062 0323
+1e06 0042 0331
+1e07 0062 0331
+1e08 00C7 0301
+1e09 00E7 0301
+1e0a 0044 0307
+1e0b 0064 0307
+1e0c 0044 0323
+1e0d 0064 0323
+1e0e 0044 0331
+1e0f 0064 0331
+1e10 0044 0327
+1e11 0064 0327
+1e12 0044 032D
+1e13 0064 032D
+1e14 0112 0300
+1e15 0113 0300
+1e16 0112 0301
+1e17 0113 0301
+1e18 0045 032D
+1e19 0065 032D
+1e1a 0045 0330
+1e1b 0065 0330
+1e1c 0228 0306
+1e1d 0229 0306
+1e1e 0046 0307
+1e1f 0066 0307
+1e20 0047 0304
+1e21 0067 0304
+1e22 0048 0307
+1e23 0068 0307
+1e24 0048 0323
+1e25 0068 0323
+1e26 0048 0308
+1e27 0068 0308
+1e28 0048 0327
+1e29 0068 0327
+1e2a 0048 032E
+1e2b 0068 032E
+1e2c 0049 0330
+1e2d 0069 0330
+1e2e 00CF 0301
+1e2f 00EF 0301
+1e30 004B 0301
+1e31 006B 0301
+1e32 004B 0323
+1e33 006B 0323
+1e34 004B 0331
+1e35 006B 0331
+1e36 004C 0323
+1e37 006C 0323
+1e38 1E36 0304
+1e39 1E37 0304
+1e3a 004C 0331
+1e3b 006C 0331
+1e3c 004C 032D
+1e3d 006C 032D
+1e3e 004D 0301
+1e3f 006D 0301
+1e40 004D 0307
+1e41 006D 0307
+1e42 004D 0323
+1e43 006D 0323
+1e44 004E 0307
+1e45 006E 0307
+1e46 004E 0323
+1e47 006E 0323
+1e48 004E 0331
+1e49 006E 0331
+1e4a 004E 032D
+1e4b 006E 032D
+1e4c 00D5 0301
+1e4d 00F5 0301
+1e4e 00D5 0308
+1e4f 00F5 0308
+1e50 014C 0300
+1e51 014D 0300
+1e52 014C 0301
+1e53 014D 0301
+1e54 0050 0301
+1e55 0070 0301
+1e56 0050 0307
+1e57 0070 0307
+1e58 0052 0307
+1e59 0072 0307
+1e5a 0052 0323
+1e5b 0072 0323
+1e5c 1E5A 0304
+1e5d 1E5B 0304
+1e5e 0052 0331
+1e5f 0072 0331
+1e60 0053 0307
+1e61 0073 0307
+1e62 0053 0323
+1e63 0073 0323
+1e64 015A 0307
+1e65 015B 0307
+1e66 0160 0307
+1e67 0161 0307
+1e68 1E62 0307
+1e69 1E63 0307
+1e6a 0054 0307
+1e6b 0074 0307
+1e6c 0054 0323
+1e6d 0074 0323
+1e6e 0054 0331
+1e6f 0074 0331
+1e70 0054 032D
+1e71 0074 032D
+1e72 0055 0324
+1e73 0075 0324
+1e74 0055 0330
+1e75 0075 0330
+1e76 0055 032D
+1e77 0075 032D
+1e78 0168 0301
+1e79 0169 0301
+1e7a 016A 0308
+1e7b 016B 0308
+1e7c 0056 0303
+1e7d 0076 0303
+1e7e 0056 0323
+1e7f 0076 0323
+1e80 0057 0300
+1e81 0077 0300
+1e82 0057 0301
+1e83 0077 0301
+1e84 0057 0308
+1e85 0077 0308
+1e86 0057 0307
+1e87 0077 0307
+1e88 0057 0323
+1e89 0077 0323
+1e8a 0058 0307
+1e8b 0078 0307
+1e8c 0058 0308
+1e8d 0078 0308
+1e8e 0059 0307
+1e8f 0079 0307
+1e90 005A 0302
+1e91 007A 0302
+1e92 005A 0323
+1e93 007A 0323
+1e94 005A 0331
+1e95 007A 0331
+1e96 0068 0331
+1e97 0074 0308
+1e98 0077 030A
+1e99 0079 030A
+1e9a <compat> 0061 02BE
+1e9b 017F 0307
+1ea0 0041 0323
+1ea1 0061 0323
+1ea2 0041 0309
+1ea3 0061 0309
+1ea4 00C2 0301
+1ea5 00E2 0301
+1ea6 00C2 0300
+1ea7 00E2 0300
+1ea8 00C2 0309
+1ea9 00E2 0309
+1eaa 00C2 0303
+1eab 00E2 0303
+1eac 1EA0 0302
+1ead 1EA1 0302
+1eae 0102 0301
+1eaf 0103 0301
+1eb0 0102 0300
+1eb1 0103 0300
+1eb2 0102 0309
+1eb3 0103 0309
+1eb4 0102 0303
+1eb5 0103 0303
+1eb6 1EA0 0306
+1eb7 1EA1 0306
+1eb8 0045 0323
+1eb9 0065 0323
+1eba 0045 0309
+1ebb 0065 0309
+1ebc 0045 0303
+1ebd 0065 0303
+1ebe 00CA 0301
+1ebf 00EA 0301
+1ec0 00CA 0300
+1ec1 00EA 0300
+1ec2 00CA 0309
+1ec3 00EA 0309
+1ec4 00CA 0303
+1ec5 00EA 0303
+1ec6 1EB8 0302
+1ec7 1EB9 0302
+1ec8 0049 0309
+1ec9 0069 0309
+1eca 0049 0323
+1ecb 0069 0323
+1ecc 004F 0323
+1ecd 006F 0323
+1ece 004F 0309
+1ecf 006F 0309
+1ed0 00D4 0301
+1ed1 00F4 0301
+1ed2 00D4 0300
+1ed3 00F4 0300
+1ed4 00D4 0309
+1ed5 00F4 0309
+1ed6 00D4 0303
+1ed7 00F4 0303
+1ed8 1ECC 0302
+1ed9 1ECD 0302
+1eda 01A0 0301
+1edb 01A1 0301
+1edc 01A0 0300
+1edd 01A1 0300
+1ede 01A0 0309
+1edf 01A1 0309
+1ee0 01A0 0303
+1ee1 01A1 0303
+1ee2 01A0 0323
+1ee3 01A1 0323
+1ee4 0055 0323
+1ee5 0075 0323
+1ee6 0055 0309
+1ee7 0075 0309
+1ee8 01AF 0301
+1ee9 01B0 0301
+1eea 01AF 0300
+1eeb 01B0 0300
+1eec 01AF 0309
+1eed 01B0 0309
+1eee 01AF 0303
+1eef 01B0 0303
+1ef0 01AF 0323
+1ef1 01B0 0323
+1ef2 0059 0300
+1ef3 0079 0300
+1ef4 0059 0323
+1ef5 0079 0323
+1ef6 0059 0309
+1ef7 0079 0309
+1ef8 0059 0303
+1ef9 0079 0303
+1f00 03B1 0313
+1f01 03B1 0314
+1f02 1F00 0300
+1f03 1F01 0300
+1f04 1F00 0301
+1f05 1F01 0301
+1f06 1F00 0342
+1f07 1F01 0342
+1f08 0391 0313
+1f09 0391 0314
+1f0a 1F08 0300
+1f0b 1F09 0300
+1f0c 1F08 0301
+1f0d 1F09 0301
+1f0e 1F08 0342
+1f0f 1F09 0342
+1f10 03B5 0313
+1f11 03B5 0314
+1f12 1F10 0300
+1f13 1F11 0300
+1f14 1F10 0301
+1f15 1F11 0301
+1f18 0395 0313
+1f19 0395 0314
+1f1a 1F18 0300
+1f1b 1F19 0300
+1f1c 1F18 0301
+1f1d 1F19 0301
+1f20 03B7 0313
+1f21 03B7 0314
+1f22 1F20 0300
+1f23 1F21 0300
+1f24 1F20 0301
+1f25 1F21 0301
+1f26 1F20 0342
+1f27 1F21 0342
+1f28 0397 0313
+1f29 0397 0314
+1f2a 1F28 0300
+1f2b 1F29 0300
+1f2c 1F28 0301
+1f2d 1F29 0301
+1f2e 1F28 0342
+1f2f 1F29 0342
+1f30 03B9 0313
+1f31 03B9 0314
+1f32 1F30 0300
+1f33 1F31 0300
+1f34 1F30 0301
+1f35 1F31 0301
+1f36 1F30 0342
+1f37 1F31 0342
+1f38 0399 0313
+1f39 0399 0314
+1f3a 1F38 0300
+1f3b 1F39 0300
+1f3c 1F38 0301
+1f3d 1F39 0301
+1f3e 1F38 0342
+1f3f 1F39 0342
+1f40 03BF 0313
+1f41 03BF 0314
+1f42 1F40 0300
+1f43 1F41 0300
+1f44 1F40 0301
+1f45 1F41 0301
+1f48 039F 0313
+1f49 039F 0314
+1f4a 1F48 0300
+1f4b 1F49 0300
+1f4c 1F48 0301
+1f4d 1F49 0301
+1f50 03C5 0313
+1f51 03C5 0314
+1f52 1F50 0300
+1f53 1F51 0300
+1f54 1F50 0301
+1f55 1F51 0301
+1f56 1F50 0342
+1f57 1F51 0342
+1f59 03A5 0314
+1f5b 1F59 0300
+1f5d 1F59 0301
+1f5f 1F59 0342
+1f60 03C9 0313
+1f61 03C9 0314
+1f62 1F60 0300
+1f63 1F61 0300
+1f64 1F60 0301
+1f65 1F61 0301
+1f66 1F60 0342
+1f67 1F61 0342
+1f68 03A9 0313
+1f69 03A9 0314
+1f6a 1F68 0300
+1f6b 1F69 0300
+1f6c 1F68 0301
+1f6d 1F69 0301
+1f6e 1F68 0342
+1f6f 1F69 0342
+1f70 03B1 0300
+1f71 03AC
+1f72 03B5 0300
+1f73 03AD
+1f74 03B7 0300
+1f75 03AE
+1f76 03B9 0300
+1f77 03AF
+1f78 03BF 0300
+1f79 03CC
+1f7a 03C5 0300
+1f7b 03CD
+1f7c 03C9 0300
+1f7d 03CE
+1f80 1F00 0345
+1f81 1F01 0345
+1f82 1F02 0345
+1f83 1F03 0345
+1f84 1F04 0345
+1f85 1F05 0345
+1f86 1F06 0345
+1f87 1F07 0345
+1f88 1F08 0345
+1f89 1F09 0345
+1f8a 1F0A 0345
+1f8b 1F0B 0345
+1f8c 1F0C 0345
+1f8d 1F0D 0345
+1f8e 1F0E 0345
+1f8f 1F0F 0345
+1f90 1F20 0345
+1f91 1F21 0345
+1f92 1F22 0345
+1f93 1F23 0345
+1f94 1F24 0345
+1f95 1F25 0345
+1f96 1F26 0345
+1f97 1F27 0345
+1f98 1F28 0345
+1f99 1F29 0345
+1f9a 1F2A 0345
+1f9b 1F2B 0345
+1f9c 1F2C 0345
+1f9d 1F2D 0345
+1f9e 1F2E 0345
+1f9f 1F2F 0345
+1fa0 1F60 0345
+1fa1 1F61 0345
+1fa2 1F62 0345
+1fa3 1F63 0345
+1fa4 1F64 0345
+1fa5 1F65 0345
+1fa6 1F66 0345
+1fa7 1F67 0345
+1fa8 1F68 0345
+1fa9 1F69 0345
+1faa 1F6A 0345
+1fab 1F6B 0345
+1fac 1F6C 0345
+1fad 1F6D 0345
+1fae 1F6E 0345
+1faf 1F6F 0345
+1fb0 03B1 0306
+1fb1 03B1 0304
+1fb2 1F70 0345
+1fb3 03B1 0345
+1fb4 03AC 0345
+1fb6 03B1 0342
+1fb7 1FB6 0345
+1fb8 0391 0306
+1fb9 0391 0304
+1fba 0391 0300
+1fbb 0386
+1fbc 0391 0345
+1fbd <compat> 0020 0313
+1fbe 03B9
+1fbf <compat> 0020 0313
+1fc0 <compat> 0020 0342
+1fc1 00A8 0342
+1fc2 1F74 0345
+1fc3 03B7 0345
+1fc4 03AE 0345
+1fc6 03B7 0342
+1fc7 1FC6 0345
+1fc8 0395 0300
+1fc9 0388
+1fca 0397 0300
+1fcb 0389
+1fcc 0397 0345
+1fcd 1FBF 0300
+1fce 1FBF 0301
+1fcf 1FBF 0342
+1fd0 03B9 0306
+1fd1 03B9 0304
+1fd2 03CA 0300
+1fd3 0390
+1fd6 03B9 0342
+1fd7 03CA 0342
+1fd8 0399 0306
+1fd9 0399 0304
+1fda 0399 0300
+1fdb 038A
+1fdd 1FFE 0300
+1fde 1FFE 0301
+1fdf 1FFE 0342
+1fe0 03C5 0306
+1fe1 03C5 0304
+1fe2 03CB 0300
+1fe3 03B0
+1fe4 03C1 0313
+1fe5 03C1 0314
+1fe6 03C5 0342
+1fe7 03CB 0342
+1fe8 03A5 0306
+1fe9 03A5 0304
+1fea 03A5 0300
+1feb 038E
+1fec 03A1 0314
+1fed 00A8 0300
+1fee 0385
+1fef 0060
+1ff2 1F7C 0345
+1ff3 03C9 0345
+1ff4 03CE 0345
+1ff6 03C9 0342
+1ff7 1FF6 0345
+1ff8 039F 0300
+1ff9 038C
+1ffa 03A9 0300
+1ffb 038F
+1ffc 03A9 0345
+1ffd 00B4
+1ffe <compat> 0020 0314
+2000 2002
+2001 2003
+2002 2006 <compat> 0020
+2007 <noBreak> 0020
+2008 200a <compat> 0020
+2011 <noBreak> 2010
+2017 <compat> 0020 0333
+2024 <compat> 002E
+2025 <compat> 002E 002E
+2026 <compat> 002E 002E 002E
+202f <noBreak> 0020
+2033 <compat> 2032 2032
+2034 <compat> 2032 2032 2032
+2036 <compat> 2035 2035
+2037 <compat> 2035 2035 2035
+203c <compat> 0021 0021
+203e <compat> 0020 0305
+2048 <compat> 003F 0021
+2049 <compat> 0021 003F
+2070 <super> 0030
+2074 <super> 0034
+2075 <super> 0035
+2076 <super> 0036
+2077 <super> 0037
+2078 <super> 0038
+2079 <super> 0039
+207a <super> 002B
+207b <super> 2212
+207c <super> 003D
+207d <super> 0028
+207e <super> 0029
+207f <super> 006E
+2080 <sub> 0030
+2081 <sub> 0031
+2082 <sub> 0032
+2083 <sub> 0033
+2084 <sub> 0034
+2085 <sub> 0035
+2086 <sub> 0036
+2087 <sub> 0037
+2088 <sub> 0038
+2089 <sub> 0039
+208a <sub> 002B
+208b <sub> 2212
+208c <sub> 003D
+208d <sub> 0028
+208e <sub> 0029
+20a8 <compat> 0052 0073
+2100 <compat> 0061 002F 0063
+2101 <compat> 0061 002F 0073
+2102 <font> 0043
+2103 <compat> 00B0 0043
+2105 <compat> 0063 002F 006F
+2106 <compat> 0063 002F 0075
+2107 <compat> 0190
+2109 <compat> 00B0 0046
+210a <font> 0067
+210b 210d <font> 0048
+210e <font> 0068
+210f <font> 0127
+2110 2111 <font> 0049
+2112 <font> 004C
+2113 <font> 006C
+2115 <font> 004E
+2116 <compat> 004E 006F
+2119 <font> 0050
+211a <font> 0051
+211b 211d <font> 0052
+2120 <super> 0053 004D
+2121 <compat> 0054 0045 004C
+2122 <super> 0054 004D
+2124 <font> 005A
+2126 03A9
+2128 <font> 005A
+212a 004B
+212b 00C5
+212c <font> 0042
+212d <font> 0043
+212f <font> 0065
+2130 <font> 0045
+2131 <font> 0046
+2133 <font> 004D
+2134 <font> 006F
+2135 <compat> 05D0
+2136 <compat> 05D1
+2137 <compat> 05D2
+2138 <compat> 05D3
+2139 <font> 0069
+2153 <fraction> 0031 2044 0033
+2154 <fraction> 0032 2044 0033
+2155 <fraction> 0031 2044 0035
+2156 <fraction> 0032 2044 0035
+2157 <fraction> 0033 2044 0035
+2158 <fraction> 0034 2044 0035
+2159 <fraction> 0031 2044 0036
+215a <fraction> 0035 2044 0036
+215b <fraction> 0031 2044 0038
+215c <fraction> 0033 2044 0038
+215d <fraction> 0035 2044 0038
+215e <fraction> 0037 2044 0038
+215f <fraction> 0031 2044
+2160 <compat> 0049
+2161 <compat> 0049 0049
+2162 <compat> 0049 0049 0049
+2163 <compat> 0049 0056
+2164 <compat> 0056
+2165 <compat> 0056 0049
+2166 <compat> 0056 0049 0049
+2167 <compat> 0056 0049 0049 0049
+2168 <compat> 0049 0058
+2169 <compat> 0058
+216a <compat> 0058 0049
+216b <compat> 0058 0049 0049
+216c <compat> 004C
+216d <compat> 0043
+216e <compat> 0044
+216f <compat> 004D
+2170 <compat> 0069
+2171 <compat> 0069 0069
+2172 <compat> 0069 0069 0069
+2173 <compat> 0069 0076
+2174 <compat> 0076
+2175 <compat> 0076 0069
+2176 <compat> 0076 0069 0069
+2177 <compat> 0076 0069 0069 0069
+2178 <compat> 0069 0078
+2179 <compat> 0078
+217a <compat> 0078 0069
+217b <compat> 0078 0069 0069
+217c <compat> 006C
+217d <compat> 0063
+217e <compat> 0064
+217f <compat> 006D
+219a 2190 0338
+219b 2192 0338
+21ae 2194 0338
+21cd 21D0 0338
+21ce 21D4 0338
+21cf 21D2 0338
+2204 2203 0338
+2209 2208 0338
+220c 220B 0338
+2224 2223 0338
+2226 2225 0338
+222c <compat> 222B 222B
+222d <compat> 222B 222B 222B
+222f <compat> 222E 222E
+2230 <compat> 222E 222E 222E
+2241 223C 0338
+2244 2243 0338
+2247 2245 0338
+2249 2248 0338
+2260 003D 0338
+2262 2261 0338
+226d 224D 0338
+226e 003C 0338
+226f 003E 0338
+2270 2264 0338
+2271 2265 0338
+2274 2272 0338
+2275 2273 0338
+2278 2276 0338
+2279 2277 0338
+2280 227A 0338
+2281 227B 0338
+2284 2282 0338
+2285 2283 0338
+2288 2286 0338
+2289 2287 0338
+22ac 22A2 0338
+22ad 22A8 0338
+22ae 22A9 0338
+22af 22AB 0338
+22e0 227C 0338
+22e1 227D 0338
+22e2 2291 0338
+22e3 2292 0338
+22ea 22B2 0338
+22eb 22B3 0338
+22ec 22B4 0338
+22ed 22B5 0338
+2329 3008
+232a 3009
+2460 <circle> 0031
+2461 <circle> 0032
+2462 <circle> 0033
+2463 <circle> 0034
+2464 <circle> 0035
+2465 <circle> 0036
+2466 <circle> 0037
+2467 <circle> 0038
+2468 <circle> 0039
+2469 <circle> 0031 0030
+246a <circle> 0031 0031
+246b <circle> 0031 0032
+246c <circle> 0031 0033
+246d <circle> 0031 0034
+246e <circle> 0031 0035
+246f <circle> 0031 0036
+2470 <circle> 0031 0037
+2471 <circle> 0031 0038
+2472 <circle> 0031 0039
+2473 <circle> 0032 0030
+2474 <compat> 0028 0031 0029
+2475 <compat> 0028 0032 0029
+2476 <compat> 0028 0033 0029
+2477 <compat> 0028 0034 0029
+2478 <compat> 0028 0035 0029
+2479 <compat> 0028 0036 0029
+247a <compat> 0028 0037 0029
+247b <compat> 0028 0038 0029
+247c <compat> 0028 0039 0029
+247d <compat> 0028 0031 0030 0029
+247e <compat> 0028 0031 0031 0029
+247f <compat> 0028 0031 0032 0029
+2480 <compat> 0028 0031 0033 0029
+2481 <compat> 0028 0031 0034 0029
+2482 <compat> 0028 0031 0035 0029
+2483 <compat> 0028 0031 0036 0029
+2484 <compat> 0028 0031 0037 0029
+2485 <compat> 0028 0031 0038 0029
+2486 <compat> 0028 0031 0039 0029
+2487 <compat> 0028 0032 0030 0029
+2488 <compat> 0031 002E
+2489 <compat> 0032 002E
+248a <compat> 0033 002E
+248b <compat> 0034 002E
+248c <compat> 0035 002E
+248d <compat> 0036 002E
+248e <compat> 0037 002E
+248f <compat> 0038 002E
+2490 <compat> 0039 002E
+2491 <compat> 0031 0030 002E
+2492 <compat> 0031 0031 002E
+2493 <compat> 0031 0032 002E
+2494 <compat> 0031 0033 002E
+2495 <compat> 0031 0034 002E
+2496 <compat> 0031 0035 002E
+2497 <compat> 0031 0036 002E
+2498 <compat> 0031 0037 002E
+2499 <compat> 0031 0038 002E
+249a <compat> 0031 0039 002E
+249b <compat> 0032 0030 002E
+249c <compat> 0028 0061 0029
+249d <compat> 0028 0062 0029
+249e <compat> 0028 0063 0029
+249f <compat> 0028 0064 0029
+24a0 <compat> 0028 0065 0029
+24a1 <compat> 0028 0066 0029
+24a2 <compat> 0028 0067 0029
+24a3 <compat> 0028 0068 0029
+24a4 <compat> 0028 0069 0029
+24a5 <compat> 0028 006A 0029
+24a6 <compat> 0028 006B 0029
+24a7 <compat> 0028 006C 0029
+24a8 <compat> 0028 006D 0029
+24a9 <compat> 0028 006E 0029
+24aa <compat> 0028 006F 0029
+24ab <compat> 0028 0070 0029
+24ac <compat> 0028 0071 0029
+24ad <compat> 0028 0072 0029
+24ae <compat> 0028 0073 0029
+24af <compat> 0028 0074 0029
+24b0 <compat> 0028 0075 0029
+24b1 <compat> 0028 0076 0029
+24b2 <compat> 0028 0077 0029
+24b3 <compat> 0028 0078 0029
+24b4 <compat> 0028 0079 0029
+24b5 <compat> 0028 007A 0029
+24b6 <circle> 0041
+24b7 <circle> 0042
+24b8 <circle> 0043
+24b9 <circle> 0044
+24ba <circle> 0045
+24bb <circle> 0046
+24bc <circle> 0047
+24bd <circle> 0048
+24be <circle> 0049
+24bf <circle> 004A
+24c0 <circle> 004B
+24c1 <circle> 004C
+24c2 <circle> 004D
+24c3 <circle> 004E
+24c4 <circle> 004F
+24c5 <circle> 0050
+24c6 <circle> 0051
+24c7 <circle> 0052
+24c8 <circle> 0053
+24c9 <circle> 0054
+24ca <circle> 0055
+24cb <circle> 0056
+24cc <circle> 0057
+24cd <circle> 0058
+24ce <circle> 0059
+24cf <circle> 005A
+24d0 <circle> 0061
+24d1 <circle> 0062
+24d2 <circle> 0063
+24d3 <circle> 0064
+24d4 <circle> 0065
+24d5 <circle> 0066
+24d6 <circle> 0067
+24d7 <circle> 0068
+24d8 <circle> 0069
+24d9 <circle> 006A
+24da <circle> 006B
+24db <circle> 006C
+24dc <circle> 006D
+24dd <circle> 006E
+24de <circle> 006F
+24df <circle> 0070
+24e0 <circle> 0071
+24e1 <circle> 0072
+24e2 <circle> 0073
+24e3 <circle> 0074
+24e4 <circle> 0075
+24e5 <circle> 0076
+24e6 <circle> 0077
+24e7 <circle> 0078
+24e8 <circle> 0079
+24e9 <circle> 007A
+24ea <circle> 0030
+2e9f <compat> 6BCD
+2ef3 <compat> 9F9F
+2f00 <compat> 4E00
+2f01 <compat> 4E28
+2f02 <compat> 4E36
+2f03 <compat> 4E3F
+2f04 <compat> 4E59
+2f05 <compat> 4E85
+2f06 <compat> 4E8C
+2f07 <compat> 4EA0
+2f08 <compat> 4EBA
+2f09 <compat> 513F
+2f0a <compat> 5165
+2f0b <compat> 516B
+2f0c <compat> 5182
+2f0d <compat> 5196
+2f0e <compat> 51AB
+2f0f <compat> 51E0
+2f10 <compat> 51F5
+2f11 <compat> 5200
+2f12 <compat> 529B
+2f13 <compat> 52F9
+2f14 <compat> 5315
+2f15 <compat> 531A
+2f16 <compat> 5338
+2f17 <compat> 5341
+2f18 <compat> 535C
+2f19 <compat> 5369
+2f1a <compat> 5382
+2f1b <compat> 53B6
+2f1c <compat> 53C8
+2f1d <compat> 53E3
+2f1e <compat> 56D7
+2f1f <compat> 571F
+2f20 <compat> 58EB
+2f21 <compat> 5902
+2f22 <compat> 590A
+2f23 <compat> 5915
+2f24 <compat> 5927
+2f25 <compat> 5973
+2f26 <compat> 5B50
+2f27 <compat> 5B80
+2f28 <compat> 5BF8
+2f29 <compat> 5C0F
+2f2a <compat> 5C22
+2f2b <compat> 5C38
+2f2c <compat> 5C6E
+2f2d <compat> 5C71
+2f2e <compat> 5DDB
+2f2f <compat> 5DE5
+2f30 <compat> 5DF1
+2f31 <compat> 5DFE
+2f32 <compat> 5E72
+2f33 <compat> 5E7A
+2f34 <compat> 5E7F
+2f35 <compat> 5EF4
+2f36 <compat> 5EFE
+2f37 <compat> 5F0B
+2f38 <compat> 5F13
+2f39 <compat> 5F50
+2f3a <compat> 5F61
+2f3b <compat> 5F73
+2f3c <compat> 5FC3
+2f3d <compat> 6208
+2f3e <compat> 6236
+2f3f <compat> 624B
+2f40 <compat> 652F
+2f41 <compat> 6534
+2f42 <compat> 6587
+2f43 <compat> 6597
+2f44 <compat> 65A4
+2f45 <compat> 65B9
+2f46 <compat> 65E0
+2f47 <compat> 65E5
+2f48 <compat> 66F0
+2f49 <compat> 6708
+2f4a <compat> 6728
+2f4b <compat> 6B20
+2f4c <compat> 6B62
+2f4d <compat> 6B79
+2f4e <compat> 6BB3
+2f4f <compat> 6BCB
+2f50 <compat> 6BD4
+2f51 <compat> 6BDB
+2f52 <compat> 6C0F
+2f53 <compat> 6C14
+2f54 <compat> 6C34
+2f55 <compat> 706B
+2f56 <compat> 722A
+2f57 <compat> 7236
+2f58 <compat> 723B
+2f59 <compat> 723F
+2f5a <compat> 7247
+2f5b <compat> 7259
+2f5c <compat> 725B
+2f5d <compat> 72AC
+2f5e <compat> 7384
+2f5f <compat> 7389
+2f60 <compat> 74DC
+2f61 <compat> 74E6
+2f62 <compat> 7518
+2f63 <compat> 751F
+2f64 <compat> 7528
+2f65 <compat> 7530
+2f66 <compat> 758B
+2f67 <compat> 7592
+2f68 <compat> 7676
+2f69 <compat> 767D
+2f6a <compat> 76AE
+2f6b <compat> 76BF
+2f6c <compat> 76EE
+2f6d <compat> 77DB
+2f6e <compat> 77E2
+2f6f <compat> 77F3
+2f70 <compat> 793A
+2f71 <compat> 79B8
+2f72 <compat> 79BE
+2f73 <compat> 7A74
+2f74 <compat> 7ACB
+2f75 <compat> 7AF9
+2f76 <compat> 7C73
+2f77 <compat> 7CF8
+2f78 <compat> 7F36
+2f79 <compat> 7F51
+2f7a <compat> 7F8A
+2f7b <compat> 7FBD
+2f7c <compat> 8001
+2f7d <compat> 800C
+2f7e <compat> 8012
+2f7f <compat> 8033
+2f80 <compat> 807F
+2f81 <compat> 8089
+2f82 <compat> 81E3
+2f83 <compat> 81EA
+2f84 <compat> 81F3
+2f85 <compat> 81FC
+2f86 <compat> 820C
+2f87 <compat> 821B
+2f88 <compat> 821F
+2f89 <compat> 826E
+2f8a <compat> 8272
+2f8b <compat> 8278
+2f8c <compat> 864D
+2f8d <compat> 866B
+2f8e <compat> 8840
+2f8f <compat> 884C
+2f90 <compat> 8863
+2f91 <compat> 897E
+2f92 <compat> 898B
+2f93 <compat> 89D2
+2f94 <compat> 8A00
+2f95 <compat> 8C37
+2f96 <compat> 8C46
+2f97 <compat> 8C55
+2f98 <compat> 8C78
+2f99 <compat> 8C9D
+2f9a <compat> 8D64
+2f9b <compat> 8D70
+2f9c <compat> 8DB3
+2f9d <compat> 8EAB
+2f9e <compat> 8ECA
+2f9f <compat> 8F9B
+2fa0 <compat> 8FB0
+2fa1 <compat> 8FB5
+2fa2 <compat> 9091
+2fa3 <compat> 9149
+2fa4 <compat> 91C6
+2fa5 <compat> 91CC
+2fa6 <compat> 91D1
+2fa7 <compat> 9577
+2fa8 <compat> 9580
+2fa9 <compat> 961C
+2faa <compat> 96B6
+2fab <compat> 96B9
+2fac <compat> 96E8
+2fad <compat> 9751
+2fae <compat> 975E
+2faf <compat> 9762
+2fb0 <compat> 9769
+2fb1 <compat> 97CB
+2fb2 <compat> 97ED
+2fb3 <compat> 97F3
+2fb4 <compat> 9801
+2fb5 <compat> 98A8
+2fb6 <compat> 98DB
+2fb7 <compat> 98DF
+2fb8 <compat> 9996
+2fb9 <compat> 9999
+2fba <compat> 99AC
+2fbb <compat> 9AA8
+2fbc <compat> 9AD8
+2fbd <compat> 9ADF
+2fbe <compat> 9B25
+2fbf <compat> 9B2F
+2fc0 <compat> 9B32
+2fc1 <compat> 9B3C
+2fc2 <compat> 9B5A
+2fc3 <compat> 9CE5
+2fc4 <compat> 9E75
+2fc5 <compat> 9E7F
+2fc6 <compat> 9EA5
+2fc7 <compat> 9EBB
+2fc8 <compat> 9EC3
+2fc9 <compat> 9ECD
+2fca <compat> 9ED1
+2fcb <compat> 9EF9
+2fcc <compat> 9EFD
+2fcd <compat> 9F0E
+2fce <compat> 9F13
+2fcf <compat> 9F20
+2fd0 <compat> 9F3B
+2fd1 <compat> 9F4A
+2fd2 <compat> 9F52
+2fd3 <compat> 9F8D
+2fd4 <compat> 9F9C
+2fd5 <compat> 9FA0
+3000 <wide> 0020
+3036 <compat> 3012
+3038 <compat> 5341
+3039 <compat> 5344
+303a <compat> 5345
+304c 304B 3099
+304e 304D 3099
+3050 304F 3099
+3052 3051 3099
+3054 3053 3099
+3056 3055 3099
+3058 3057 3099
+305a 3059 3099
+305c 305B 3099
+305e 305D 3099
+3060 305F 3099
+3062 3061 3099
+3065 3064 3099
+3067 3066 3099
+3069 3068 3099
+3070 306F 3099
+3071 306F 309A
+3073 3072 3099
+3074 3072 309A
+3076 3075 3099
+3077 3075 309A
+3079 3078 3099
+307a 3078 309A
+307c 307B 3099
+307d 307B 309A
+3094 3046 3099
+309b <compat> 0020 3099
+309c <compat> 0020 309A
+309e 309D 3099
+30ac 30AB 3099
+30ae 30AD 3099
+30b0 30AF 3099
+30b2 30B1 3099
+30b4 30B3 3099
+30b6 30B5 3099
+30b8 30B7 3099
+30ba 30B9 3099
+30bc 30BB 3099
+30be 30BD 3099
+30c0 30BF 3099
+30c2 30C1 3099
+30c5 30C4 3099
+30c7 30C6 3099
+30c9 30C8 3099
+30d0 30CF 3099
+30d1 30CF 309A
+30d3 30D2 3099
+30d4 30D2 309A
+30d6 30D5 3099
+30d7 30D5 309A
+30d9 30D8 3099
+30da 30D8 309A
+30dc 30DB 3099
+30dd 30DB 309A
+30f4 30A6 3099
+30f7 30EF 3099
+30f8 30F0 3099
+30f9 30F1 3099
+30fa 30F2 3099
+30fe 30FD 3099
+3131 <compat> 1100
+3132 <compat> 1101
+3133 <compat> 11AA
+3134 <compat> 1102
+3135 <compat> 11AC
+3136 <compat> 11AD
+3137 <compat> 1103
+3138 <compat> 1104
+3139 <compat> 1105
+313a <compat> 11B0
+313b <compat> 11B1
+313c <compat> 11B2
+313d <compat> 11B3
+313e <compat> 11B4
+313f <compat> 11B5
+3140 <compat> 111A
+3141 <compat> 1106
+3142 <compat> 1107
+3143 <compat> 1108
+3144 <compat> 1121
+3145 <compat> 1109
+3146 <compat> 110A
+3147 <compat> 110B
+3148 <compat> 110C
+3149 <compat> 110D
+314a <compat> 110E
+314b <compat> 110F
+314c <compat> 1110
+314d <compat> 1111
+314e <compat> 1112
+314f <compat> 1161
+3150 <compat> 1162
+3151 <compat> 1163
+3152 <compat> 1164
+3153 <compat> 1165
+3154 <compat> 1166
+3155 <compat> 1167
+3156 <compat> 1168
+3157 <compat> 1169
+3158 <compat> 116A
+3159 <compat> 116B
+315a <compat> 116C
+315b <compat> 116D
+315c <compat> 116E
+315d <compat> 116F
+315e <compat> 1170
+315f <compat> 1171
+3160 <compat> 1172
+3161 <compat> 1173
+3162 <compat> 1174
+3163 <compat> 1175
+3164 <compat> 1160
+3165 <compat> 1114
+3166 <compat> 1115
+3167 <compat> 11C7
+3168 <compat> 11C8
+3169 <compat> 11CC
+316a <compat> 11CE
+316b <compat> 11D3
+316c <compat> 11D7
+316d <compat> 11D9
+316e <compat> 111C
+316f <compat> 11DD
+3170 <compat> 11DF
+3171 <compat> 111D
+3172 <compat> 111E
+3173 <compat> 1120
+3174 <compat> 1122
+3175 <compat> 1123
+3176 <compat> 1127
+3177 <compat> 1129
+3178 <compat> 112B
+3179 <compat> 112C
+317a <compat> 112D
+317b <compat> 112E
+317c <compat> 112F
+317d <compat> 1132
+317e <compat> 1136
+317f <compat> 1140
+3180 <compat> 1147
+3181 <compat> 114C
+3182 <compat> 11F1
+3183 <compat> 11F2
+3184 <compat> 1157
+3185 <compat> 1158
+3186 <compat> 1159
+3187 <compat> 1184
+3188 <compat> 1185
+3189 <compat> 1188
+318a <compat> 1191
+318b <compat> 1192
+318c <compat> 1194
+318d <compat> 119E
+318e <compat> 11A1
+3192 <super> 4E00
+3193 <super> 4E8C
+3194 <super> 4E09
+3195 <super> 56DB
+3196 <super> 4E0A
+3197 <super> 4E2D
+3198 <super> 4E0B
+3199 <super> 7532
+319a <super> 4E59
+319b <super> 4E19
+319c <super> 4E01
+319d <super> 5929
+319e <super> 5730
+319f <super> 4EBA
+3200 <compat> 0028 1100 0029
+3201 <compat> 0028 1102 0029
+3202 <compat> 0028 1103 0029
+3203 <compat> 0028 1105 0029
+3204 <compat> 0028 1106 0029
+3205 <compat> 0028 1107 0029
+3206 <compat> 0028 1109 0029
+3207 <compat> 0028 110B 0029
+3208 <compat> 0028 110C 0029
+3209 <compat> 0028 110E 0029
+320a <compat> 0028 110F 0029
+320b <compat> 0028 1110 0029
+320c <compat> 0028 1111 0029
+320d <compat> 0028 1112 0029
+320e <compat> 0028 1100 1161 0029
+320f <compat> 0028 1102 1161 0029
+3210 <compat> 0028 1103 1161 0029
+3211 <compat> 0028 1105 1161 0029
+3212 <compat> 0028 1106 1161 0029
+3213 <compat> 0028 1107 1161 0029
+3214 <compat> 0028 1109 1161 0029
+3215 <compat> 0028 110B 1161 0029
+3216 <compat> 0028 110C 1161 0029
+3217 <compat> 0028 110E 1161 0029
+3218 <compat> 0028 110F 1161 0029
+3219 <compat> 0028 1110 1161 0029
+321a <compat> 0028 1111 1161 0029
+321b <compat> 0028 1112 1161 0029
+321c <compat> 0028 110C 116E 0029
+3220 <compat> 0028 4E00 0029
+3221 <compat> 0028 4E8C 0029
+3222 <compat> 0028 4E09 0029
+3223 <compat> 0028 56DB 0029
+3224 <compat> 0028 4E94 0029
+3225 <compat> 0028 516D 0029
+3226 <compat> 0028 4E03 0029
+3227 <compat> 0028 516B 0029
+3228 <compat> 0028 4E5D 0029
+3229 <compat> 0028 5341 0029
+322a <compat> 0028 6708 0029
+322b <compat> 0028 706B 0029
+322c <compat> 0028 6C34 0029
+322d <compat> 0028 6728 0029
+322e <compat> 0028 91D1 0029
+322f <compat> 0028 571F 0029
+3230 <compat> 0028 65E5 0029
+3231 <compat> 0028 682A 0029
+3232 <compat> 0028 6709 0029
+3233 <compat> 0028 793E 0029
+3234 <compat> 0028 540D 0029
+3235 <compat> 0028 7279 0029
+3236 <compat> 0028 8CA1 0029
+3237 <compat> 0028 795D 0029
+3238 <compat> 0028 52B4 0029
+3239 <compat> 0028 4EE3 0029
+323a <compat> 0028 547C 0029
+323b <compat> 0028 5B66 0029
+323c <compat> 0028 76E3 0029
+323d <compat> 0028 4F01 0029
+323e <compat> 0028 8CC7 0029
+323f <compat> 0028 5354 0029
+3240 <compat> 0028 796D 0029
+3241 <compat> 0028 4F11 0029
+3242 <compat> 0028 81EA 0029
+3243 <compat> 0028 81F3 0029
+3260 <circle> 1100
+3261 <circle> 1102
+3262 <circle> 1103
+3263 <circle> 1105
+3264 <circle> 1106
+3265 <circle> 1107
+3266 <circle> 1109
+3267 <circle> 110B
+3268 <circle> 110C
+3269 <circle> 110E
+326a <circle> 110F
+326b <circle> 1110
+326c <circle> 1111
+326d <circle> 1112
+326e <circle> 1100 1161
+326f <circle> 1102 1161
+3270 <circle> 1103 1161
+3271 <circle> 1105 1161
+3272 <circle> 1106 1161
+3273 <circle> 1107 1161
+3274 <circle> 1109 1161
+3275 <circle> 110B 1161
+3276 <circle> 110C 1161
+3277 <circle> 110E 1161
+3278 <circle> 110F 1161
+3279 <circle> 1110 1161
+327a <circle> 1111 1161
+327b <circle> 1112 1161
+3280 <circle> 4E00
+3281 <circle> 4E8C
+3282 <circle> 4E09
+3283 <circle> 56DB
+3284 <circle> 4E94
+3285 <circle> 516D
+3286 <circle> 4E03
+3287 <circle> 516B
+3288 <circle> 4E5D
+3289 <circle> 5341
+328a <circle> 6708
+328b <circle> 706B
+328c <circle> 6C34
+328d <circle> 6728
+328e <circle> 91D1
+328f <circle> 571F
+3290 <circle> 65E5
+3291 <circle> 682A
+3292 <circle> 6709
+3293 <circle> 793E
+3294 <circle> 540D
+3295 <circle> 7279
+3296 <circle> 8CA1
+3297 <circle> 795D
+3298 <circle> 52B4
+3299 <circle> 79D8
+329a <circle> 7537
+329b <circle> 5973
+329c <circle> 9069
+329d <circle> 512A
+329e <circle> 5370
+329f <circle> 6CE8
+32a0 <circle> 9805
+32a1 <circle> 4F11
+32a2 <circle> 5199
+32a3 <circle> 6B63
+32a4 <circle> 4E0A
+32a5 <circle> 4E2D
+32a6 <circle> 4E0B
+32a7 <circle> 5DE6
+32a8 <circle> 53F3
+32a9 <circle> 533B
+32aa <circle> 5B97
+32ab <circle> 5B66
+32ac <circle> 76E3
+32ad <circle> 4F01
+32ae <circle> 8CC7
+32af <circle> 5354
+32b0 <circle> 591C
+32c0 <compat> 0031 6708
+32c1 <compat> 0032 6708
+32c2 <compat> 0033 6708
+32c3 <compat> 0034 6708
+32c4 <compat> 0035 6708
+32c5 <compat> 0036 6708
+32c6 <compat> 0037 6708
+32c7 <compat> 0038 6708
+32c8 <compat> 0039 6708
+32c9 <compat> 0031 0030 6708
+32ca <compat> 0031 0031 6708
+32cb <compat> 0031 0032 6708
+32d0 <circle> 30A2
+32d1 <circle> 30A4
+32d2 <circle> 30A6
+32d3 <circle> 30A8
+32d4 <circle> 30AA
+32d5 <circle> 30AB
+32d6 <circle> 30AD
+32d7 <circle> 30AF
+32d8 <circle> 30B1
+32d9 <circle> 30B3
+32da <circle> 30B5
+32db <circle> 30B7
+32dc <circle> 30B9
+32dd <circle> 30BB
+32de <circle> 30BD
+32df <circle> 30BF
+32e0 <circle> 30C1
+32e1 <circle> 30C4
+32e2 <circle> 30C6
+32e3 <circle> 30C8
+32e4 <circle> 30CA
+32e5 <circle> 30CB
+32e6 <circle> 30CC
+32e7 <circle> 30CD
+32e8 <circle> 30CE
+32e9 <circle> 30CF
+32ea <circle> 30D2
+32eb <circle> 30D5
+32ec <circle> 30D8
+32ed <circle> 30DB
+32ee <circle> 30DE
+32ef <circle> 30DF
+32f0 <circle> 30E0
+32f1 <circle> 30E1
+32f2 <circle> 30E2
+32f3 <circle> 30E4
+32f4 <circle> 30E6
+32f5 <circle> 30E8
+32f6 <circle> 30E9
+32f7 <circle> 30EA
+32f8 <circle> 30EB
+32f9 <circle> 30EC
+32fa <circle> 30ED
+32fb <circle> 30EF
+32fc <circle> 30F0
+32fd <circle> 30F1
+32fe <circle> 30F2
+3300 <square> 30A2 30D1 30FC 30C8
+3301 <square> 30A2 30EB 30D5 30A1
+3302 <square> 30A2 30F3 30DA 30A2
+3303 <square> 30A2 30FC 30EB
+3304 <square> 30A4 30CB 30F3 30B0
+3305 <square> 30A4 30F3 30C1
+3306 <square> 30A6 30A9 30F3
+3307 <square> 30A8 30B9 30AF 30FC 30C9
+3308 <square> 30A8 30FC 30AB 30FC
+3309 <square> 30AA 30F3 30B9
+330a <square> 30AA 30FC 30E0
+330b <square> 30AB 30A4 30EA
+330c <square> 30AB 30E9 30C3 30C8
+330d <square> 30AB 30ED 30EA 30FC
+330e <square> 30AC 30ED 30F3
+330f <square> 30AC 30F3 30DE
+3310 <square> 30AE 30AC
+3311 <square> 30AE 30CB 30FC
+3312 <square> 30AD 30E5 30EA 30FC
+3313 <square> 30AE 30EB 30C0 30FC
+3314 <square> 30AD 30ED
+3315 <square> 30AD 30ED 30B0 30E9 30E0
+3316 <square> 30AD 30ED 30E1 30FC 30C8 30EB
+3317 <square> 30AD 30ED 30EF 30C3 30C8
+3318 <square> 30B0 30E9 30E0
+3319 <square> 30B0 30E9 30E0 30C8 30F3
+331a <square> 30AF 30EB 30BC 30A4 30ED
+331b <square> 30AF 30ED 30FC 30CD
+331c <square> 30B1 30FC 30B9
+331d <square> 30B3 30EB 30CA
+331e <square> 30B3 30FC 30DD
+331f <square> 30B5 30A4 30AF 30EB
+3320 <square> 30B5 30F3 30C1 30FC 30E0
+3321 <square> 30B7 30EA 30F3 30B0
+3322 <square> 30BB 30F3 30C1
+3323 <square> 30BB 30F3 30C8
+3324 <square> 30C0 30FC 30B9
+3325 <square> 30C7 30B7
+3326 <square> 30C9 30EB
+3327 <square> 30C8 30F3
+3328 <square> 30CA 30CE
+3329 <square> 30CE 30C3 30C8
+332a <square> 30CF 30A4 30C4
+332b <square> 30D1 30FC 30BB 30F3 30C8
+332c <square> 30D1 30FC 30C4
+332d <square> 30D0 30FC 30EC 30EB
+332e <square> 30D4 30A2 30B9 30C8 30EB
+332f <square> 30D4 30AF 30EB
+3330 <square> 30D4 30B3
+3331 <square> 30D3 30EB
+3332 <square> 30D5 30A1 30E9 30C3 30C9
+3333 <square> 30D5 30A3 30FC 30C8
+3334 <square> 30D6 30C3 30B7 30A7 30EB
+3335 <square> 30D5 30E9 30F3
+3336 <square> 30D8 30AF 30BF 30FC 30EB
+3337 <square> 30DA 30BD
+3338 <square> 30DA 30CB 30D2
+3339 <square> 30D8 30EB 30C4
+333a <square> 30DA 30F3 30B9
+333b <square> 30DA 30FC 30B8
+333c <square> 30D9 30FC 30BF
+333d <square> 30DD 30A4 30F3 30C8
+333e <square> 30DC 30EB 30C8
+333f <square> 30DB 30F3
+3340 <square> 30DD 30F3 30C9
+3341 <square> 30DB 30FC 30EB
+3342 <square> 30DB 30FC 30F3
+3343 <square> 30DE 30A4 30AF 30ED
+3344 <square> 30DE 30A4 30EB
+3345 <square> 30DE 30C3 30CF
+3346 <square> 30DE 30EB 30AF
+3347 <square> 30DE 30F3 30B7 30E7 30F3
+3348 <square> 30DF 30AF 30ED 30F3
+3349 <square> 30DF 30EA
+334a <square> 30DF 30EA 30D0 30FC 30EB
+334b <square> 30E1 30AC
+334c <square> 30E1 30AC 30C8 30F3
+334d <square> 30E1 30FC 30C8 30EB
+334e <square> 30E4 30FC 30C9
+334f <square> 30E4 30FC 30EB
+3350 <square> 30E6 30A2 30F3
+3351 <square> 30EA 30C3 30C8 30EB
+3352 <square> 30EA 30E9
+3353 <square> 30EB 30D4 30FC
+3354 <square> 30EB 30FC 30D6 30EB
+3355 <square> 30EC 30E0
+3356 <square> 30EC 30F3 30C8 30B2 30F3
+3357 <square> 30EF 30C3 30C8
+3358 <compat> 0030 70B9
+3359 <compat> 0031 70B9
+335a <compat> 0032 70B9
+335b <compat> 0033 70B9
+335c <compat> 0034 70B9
+335d <compat> 0035 70B9
+335e <compat> 0036 70B9
+335f <compat> 0037 70B9
+3360 <compat> 0038 70B9
+3361 <compat> 0039 70B9
+3362 <compat> 0031 0030 70B9
+3363 <compat> 0031 0031 70B9
+3364 <compat> 0031 0032 70B9
+3365 <compat> 0031 0033 70B9
+3366 <compat> 0031 0034 70B9
+3367 <compat> 0031 0035 70B9
+3368 <compat> 0031 0036 70B9
+3369 <compat> 0031 0037 70B9
+336a <compat> 0031 0038 70B9
+336b <compat> 0031 0039 70B9
+336c <compat> 0032 0030 70B9
+336d <compat> 0032 0031 70B9
+336e <compat> 0032 0032 70B9
+336f <compat> 0032 0033 70B9
+3370 <compat> 0032 0034 70B9
+3371 <square> 0068 0050 0061
+3372 <square> 0064 0061
+3373 <square> 0041 0055
+3374 <square> 0062 0061 0072
+3375 <square> 006F 0056
+3376 <square> 0070 0063
+337b <square> 5E73 6210
+337c <square> 662D 548C
+337d <square> 5927 6B63
+337e <square> 660E 6CBB
+337f <square> 682A 5F0F 4F1A 793E
+3380 <square> 0070 0041
+3381 <square> 006E 0041
+3382 <square> 03BC 0041
+3383 <square> 006D 0041
+3384 <square> 006B 0041
+3385 <square> 004B 0042
+3386 <square> 004D 0042
+3387 <square> 0047 0042
+3388 <square> 0063 0061 006C
+3389 <square> 006B 0063 0061 006C
+338a <square> 0070 0046
+338b <square> 006E 0046
+338c <square> 03BC 0046
+338d <square> 03BC 0067
+338e <square> 006D 0067
+338f <square> 006B 0067
+3390 <square> 0048 007A
+3391 <square> 006B 0048 007A
+3392 <square> 004D 0048 007A
+3393 <square> 0047 0048 007A
+3394 <square> 0054 0048 007A
+3395 <square> 03BC 2113
+3396 <square> 006D 2113
+3397 <square> 0064 2113
+3398 <square> 006B 2113
+3399 <square> 0066 006D
+339a <square> 006E 006D
+339b <square> 03BC 006D
+339c <square> 006D 006D
+339d <square> 0063 006D
+339e <square> 006B 006D
+339f <square> 006D 006D 00B2
+33a0 <square> 0063 006D 00B2
+33a1 <square> 006D 00B2
+33a2 <square> 006B 006D 00B2
+33a3 <square> 006D 006D 00B3
+33a4 <square> 0063 006D 00B3
+33a5 <square> 006D 00B3
+33a6 <square> 006B 006D 00B3
+33a7 <square> 006D 2215 0073
+33a8 <square> 006D 2215 0073 00B2
+33a9 <square> 0050 0061
+33aa <square> 006B 0050 0061
+33ab <square> 004D 0050 0061
+33ac <square> 0047 0050 0061
+33ad <square> 0072 0061 0064
+33ae <square> 0072 0061 0064 2215 0073
+33af <square> 0072 0061 0064 2215 0073 00B2
+33b0 <square> 0070 0073
+33b1 <square> 006E 0073
+33b2 <square> 03BC 0073
+33b3 <square> 006D 0073
+33b4 <square> 0070 0056
+33b5 <square> 006E 0056
+33b6 <square> 03BC 0056
+33b7 <square> 006D 0056
+33b8 <square> 006B 0056
+33b9 <square> 004D 0056
+33ba <square> 0070 0057
+33bb <square> 006E 0057
+33bc <square> 03BC 0057
+33bd <square> 006D 0057
+33be <square> 006B 0057
+33bf <square> 004D 0057
+33c0 <square> 006B 03A9
+33c1 <square> 004D 03A9
+33c2 <square> 0061 002E 006D 002E
+33c3 <square> 0042 0071
+33c4 <square> 0063 0063
+33c5 <square> 0063 0064
+33c6 <square> 0043 2215 006B 0067
+33c7 <square> 0043 006F 002E
+33c8 <square> 0064 0042
+33c9 <square> 0047 0079
+33ca <square> 0068 0061
+33cb <square> 0048 0050
+33cc <square> 0069 006E
+33cd <square> 004B 004B
+33ce <square> 004B 004D
+33cf <square> 006B 0074
+33d0 <square> 006C 006D
+33d1 <square> 006C 006E
+33d2 <square> 006C 006F 0067
+33d3 <square> 006C 0078
+33d4 <square> 006D 0062
+33d5 <square> 006D 0069 006C
+33d6 <square> 006D 006F 006C
+33d7 <square> 0050 0048
+33d8 <square> 0070 002E 006D 002E
+33d9 <square> 0050 0050 004D
+33da <square> 0050 0052
+33db <square> 0073 0072
+33dc <square> 0053 0076
+33dd <square> 0057 0062
+33e0 <compat> 0031 65E5
+33e1 <compat> 0032 65E5
+33e2 <compat> 0033 65E5
+33e3 <compat> 0034 65E5
+33e4 <compat> 0035 65E5
+33e5 <compat> 0036 65E5
+33e6 <compat> 0037 65E5
+33e7 <compat> 0038 65E5
+33e8 <compat> 0039 65E5
+33e9 <compat> 0031 0030 65E5
+33ea <compat> 0031 0031 65E5
+33eb <compat> 0031 0032 65E5
+33ec <compat> 0031 0033 65E5
+33ed <compat> 0031 0034 65E5
+33ee <compat> 0031 0035 65E5
+33ef <compat> 0031 0036 65E5
+33f0 <compat> 0031 0037 65E5
+33f1 <compat> 0031 0038 65E5
+33f2 <compat> 0031 0039 65E5
+33f3 <compat> 0032 0030 65E5
+33f4 <compat> 0032 0031 65E5
+33f5 <compat> 0032 0032 65E5
+33f6 <compat> 0032 0033 65E5
+33f7 <compat> 0032 0034 65E5
+33f8 <compat> 0032 0035 65E5
+33f9 <compat> 0032 0036 65E5
+33fa <compat> 0032 0037 65E5
+33fb <compat> 0032 0038 65E5
+33fc <compat> 0032 0039 65E5
+33fd <compat> 0033 0030 65E5
+33fe <compat> 0033 0031 65E5
+f900 8C48
+f901 66F4
+f902 8ECA
+f903 8CC8
+f904 6ED1
+f905 4E32
+f906 53E5
+f907 f908 9F9C
+f909 5951
+f90a 91D1
+f90b 5587
+f90c 5948
+f90d 61F6
+f90e 7669
+f90f 7F85
+f910 863F
+f911 87BA
+f912 88F8
+f913 908F
+f914 6A02
+f915 6D1B
+f916 70D9
+f917 73DE
+f918 843D
+f919 916A
+f91a 99F1
+f91b 4E82
+f91c 5375
+f91d 6B04
+f91e 721B
+f91f 862D
+f920 9E1E
+f921 5D50
+f922 6FEB
+f923 85CD
+f924 8964
+f925 62C9
+f926 81D8
+f927 881F
+f928 5ECA
+f929 6717
+f92a 6D6A
+f92b 72FC
+f92c 90CE
+f92d 4F86
+f92e 51B7
+f92f 52DE
+f930 64C4
+f931 6AD3
+f932 7210
+f933 76E7
+f934 8001
+f935 8606
+f936 865C
+f937 8DEF
+f938 9732
+f939 9B6F
+f93a 9DFA
+f93b 788C
+f93c 797F
+f93d 7DA0
+f93e 83C9
+f93f 9304
+f940 9E7F
+f941 8AD6
+f942 58DF
+f943 5F04
+f944 7C60
+f945 807E
+f946 7262
+f947 78CA
+f948 8CC2
+f949 96F7
+f94a 58D8
+f94b 5C62
+f94c 6A13
+f94d 6DDA
+f94e 6F0F
+f94f 7D2F
+f950 7E37
+f951 96FB
+f952 52D2
+f953 808B
+f954 51DC
+f955 51CC
+f956 7A1C
+f957 7DBE
+f958 83F1
+f959 9675
+f95a 8B80
+f95b 62CF
+f95c 6A02
+f95d 8AFE
+f95e 4E39
+f95f 5BE7
+f960 6012
+f961 7387
+f962 7570
+f963 5317
+f964 78FB
+f965 4FBF
+f966 5FA9
+f967 4E0D
+f968 6CCC
+f969 6578
+f96a 7D22
+f96b 53C3
+f96c 585E
+f96d 7701
+f96e 8449
+f96f 8AAA
+f970 6BBA
+f971 8FB0
+f972 6C88
+f973 62FE
+f974 82E5
+f975 63A0
+f976 7565
+f977 4EAE
+f978 5169
+f979 51C9
+f97a 6881
+f97b 7CE7
+f97c 826F
+f97d 8AD2
+f97e 91CF
+f97f 52F5
+f980 5442
+f981 5973
+f982 5EEC
+f983 65C5
+f984 6FFE
+f985 792A
+f986 95AD
+f987 9A6A
+f988 9E97
+f989 9ECE
+f98a 529B
+f98b 66C6
+f98c 6B77
+f98d 8F62
+f98e 5E74
+f98f 6190
+f990 6200
+f991 649A
+f992 6F23
+f993 7149
+f994 7489
+f995 79CA
+f996 7DF4
+f997 806F
+f998 8F26
+f999 84EE
+f99a 9023
+f99b 934A
+f99c 5217
+f99d 52A3
+f99e 54BD
+f99f 70C8
+f9a0 88C2
+f9a1 8AAA
+f9a2 5EC9
+f9a3 5FF5
+f9a4 637B
+f9a5 6BAE
+f9a6 7C3E
+f9a7 7375
+f9a8 4EE4
+f9a9 56F9
+f9aa 5BE7
+f9ab 5DBA
+f9ac 601C
+f9ad 73B2
+f9ae 7469
+f9af 7F9A
+f9b0 8046
+f9b1 9234
+f9b2 96F6
+f9b3 9748
+f9b4 9818
+f9b5 4F8B
+f9b6 79AE
+f9b7 91B4
+f9b8 96B8
+f9b9 60E1
+f9ba 4E86
+f9bb 50DA
+f9bc 5BEE
+f9bd 5C3F
+f9be 6599
+f9bf 6A02
+f9c0 71CE
+f9c1 7642
+f9c2 84FC
+f9c3 907C
+f9c4 9F8D
+f9c5 6688
+f9c6 962E
+f9c7 5289
+f9c8 677B
+f9c9 67F3
+f9ca 6D41
+f9cb 6E9C
+f9cc 7409
+f9cd 7559
+f9ce 786B
+f9cf 7D10
+f9d0 985E
+f9d1 516D
+f9d2 622E
+f9d3 9678
+f9d4 502B
+f9d5 5D19
+f9d6 6DEA
+f9d7 8F2A
+f9d8 5F8B
+f9d9 6144
+f9da 6817
+f9db 7387
+f9dc 9686
+f9dd 5229
+f9de 540F
+f9df 5C65
+f9e0 6613
+f9e1 674E
+f9e2 68A8
+f9e3 6CE5
+f9e4 7406
+f9e5 75E2
+f9e6 7F79
+f9e7 88CF
+f9e8 88E1
+f9e9 91CC
+f9ea 96E2
+f9eb 533F
+f9ec 6EBA
+f9ed 541D
+f9ee 71D0
+f9ef 7498
+f9f0 85FA
+f9f1 96A3
+f9f2 9C57
+f9f3 9E9F
+f9f4 6797
+f9f5 6DCB
+f9f6 81E8
+f9f7 7ACB
+f9f8 7B20
+f9f9 7C92
+f9fa 72C0
+f9fb 7099
+f9fc 8B58
+f9fd 4EC0
+f9fe 8336
+f9ff 523A
+fa00 5207
+fa01 5EA6
+fa02 62D3
+fa03 7CD6
+fa04 5B85
+fa05 6D1E
+fa06 66B4
+fa07 8F3B
+fa08 884C
+fa09 964D
+fa0a 898B
+fa0b 5ED3
+fa0c 5140
+fa0d 55C0
+fa10 585A
+fa12 6674
+fa15 51DE
+fa16 732A
+fa17 76CA
+fa18 793C
+fa19 795E
+fa1a 7965
+fa1b 798F
+fa1c 9756
+fa1d 7CBE
+fa1e 7FBD
+fa20 8612
+fa22 8AF8
+fa25 9038
+fa26 90FD
+fa2a 98EF
+fa2b 98FC
+fa2c 9928
+fa2d 9DB4
+fb00 <compat> 0066 0066
+fb01 <compat> 0066 0069
+fb02 <compat> 0066 006C
+fb03 <compat> 0066 0066 0069
+fb04 <compat> 0066 0066 006C
+fb05 <compat> 017F 0074
+fb06 <compat> 0073 0074
+fb13 <compat> 0574 0576
+fb14 <compat> 0574 0565
+fb15 <compat> 0574 056B
+fb16 <compat> 057E 0576
+fb17 <compat> 0574 056D
+fb1d 05D9 05B4
+fb1f 05F2 05B7
+fb20 <font> 05E2
+fb21 <font> 05D0
+fb22 <font> 05D3
+fb23 <font> 05D4
+fb24 <font> 05DB
+fb25 <font> 05DC
+fb26 <font> 05DD
+fb27 <font> 05E8
+fb28 <font> 05EA
+fb29 <font> 002B
+fb2a 05E9 05C1
+fb2b 05E9 05C2
+fb2c FB49 05C1
+fb2d FB49 05C2
+fb2e 05D0 05B7
+fb2f 05D0 05B8
+fb30 05D0 05BC
+fb31 05D1 05BC
+fb32 05D2 05BC
+fb33 05D3 05BC
+fb34 05D4 05BC
+fb35 05D5 05BC
+fb36 05D6 05BC
+fb38 05D8 05BC
+fb39 05D9 05BC
+fb3a 05DA 05BC
+fb3b 05DB 05BC
+fb3c 05DC 05BC
+fb3e 05DE 05BC
+fb40 05E0 05BC
+fb41 05E1 05BC
+fb43 05E3 05BC
+fb44 05E4 05BC
+fb46 05E6 05BC
+fb47 05E7 05BC
+fb48 05E8 05BC
+fb49 05E9 05BC
+fb4a 05EA 05BC
+fb4b 05D5 05B9
+fb4c 05D1 05BF
+fb4d 05DB 05BF
+fb4e 05E4 05BF
+fb4f <compat> 05D0 05DC
+fb50 <isolated> 0671
+fb51 <final> 0671
+fb52 <isolated> 067B
+fb53 <final> 067B
+fb54 <initial> 067B
+fb55 <medial> 067B
+fb56 <isolated> 067E
+fb57 <final> 067E
+fb58 <initial> 067E
+fb59 <medial> 067E
+fb5a <isolated> 0680
+fb5b <final> 0680
+fb5c <initial> 0680
+fb5d <medial> 0680
+fb5e <isolated> 067A
+fb5f <final> 067A
+fb60 <initial> 067A
+fb61 <medial> 067A
+fb62 <isolated> 067F
+fb63 <final> 067F
+fb64 <initial> 067F
+fb65 <medial> 067F
+fb66 <isolated> 0679
+fb67 <final> 0679
+fb68 <initial> 0679
+fb69 <medial> 0679
+fb6a <isolated> 06A4
+fb6b <final> 06A4
+fb6c <initial> 06A4
+fb6d <medial> 06A4
+fb6e <isolated> 06A6
+fb6f <final> 06A6
+fb70 <initial> 06A6
+fb71 <medial> 06A6
+fb72 <isolated> 0684
+fb73 <final> 0684
+fb74 <initial> 0684
+fb75 <medial> 0684
+fb76 <isolated> 0683
+fb77 <final> 0683
+fb78 <initial> 0683
+fb79 <medial> 0683
+fb7a <isolated> 0686
+fb7b <final> 0686
+fb7c <initial> 0686
+fb7d <medial> 0686
+fb7e <isolated> 0687
+fb7f <final> 0687
+fb80 <initial> 0687
+fb81 <medial> 0687
+fb82 <isolated> 068D
+fb83 <final> 068D
+fb84 <isolated> 068C
+fb85 <final> 068C
+fb86 <isolated> 068E
+fb87 <final> 068E
+fb88 <isolated> 0688
+fb89 <final> 0688
+fb8a <isolated> 0698
+fb8b <final> 0698
+fb8c <isolated> 0691
+fb8d <final> 0691
+fb8e <isolated> 06A9
+fb8f <final> 06A9
+fb90 <initial> 06A9
+fb91 <medial> 06A9
+fb92 <isolated> 06AF
+fb93 <final> 06AF
+fb94 <initial> 06AF
+fb95 <medial> 06AF
+fb96 <isolated> 06B3
+fb97 <final> 06B3
+fb98 <initial> 06B3
+fb99 <medial> 06B3
+fb9a <isolated> 06B1
+fb9b <final> 06B1
+fb9c <initial> 06B1
+fb9d <medial> 06B1
+fb9e <isolated> 06BA
+fb9f <final> 06BA
+fba0 <isolated> 06BB
+fba1 <final> 06BB
+fba2 <initial> 06BB
+fba3 <medial> 06BB
+fba4 <isolated> 06C0
+fba5 <final> 06C0
+fba6 <isolated> 06C1
+fba7 <final> 06C1
+fba8 <initial> 06C1
+fba9 <medial> 06C1
+fbaa <isolated> 06BE
+fbab <final> 06BE
+fbac <initial> 06BE
+fbad <medial> 06BE
+fbae <isolated> 06D2
+fbaf <final> 06D2
+fbb0 <isolated> 06D3
+fbb1 <final> 06D3
+fbd3 <isolated> 06AD
+fbd4 <final> 06AD
+fbd5 <initial> 06AD
+fbd6 <medial> 06AD
+fbd7 <isolated> 06C7
+fbd8 <final> 06C7
+fbd9 <isolated> 06C6
+fbda <final> 06C6
+fbdb <isolated> 06C8
+fbdc <final> 06C8
+fbdd <isolated> 0677
+fbde <isolated> 06CB
+fbdf <final> 06CB
+fbe0 <isolated> 06C5
+fbe1 <final> 06C5
+fbe2 <isolated> 06C9
+fbe3 <final> 06C9
+fbe4 <isolated> 06D0
+fbe5 <final> 06D0
+fbe6 <initial> 06D0
+fbe7 <medial> 06D0
+fbe8 <initial> 0649
+fbe9 <medial> 0649
+fbea <isolated> 0626 0627
+fbeb <final> 0626 0627
+fbec <isolated> 0626 06D5
+fbed <final> 0626 06D5
+fbee <isolated> 0626 0648
+fbef <final> 0626 0648
+fbf0 <isolated> 0626 06C7
+fbf1 <final> 0626 06C7
+fbf2 <isolated> 0626 06C6
+fbf3 <final> 0626 06C6
+fbf4 <isolated> 0626 06C8
+fbf5 <final> 0626 06C8
+fbf6 <isolated> 0626 06D0
+fbf7 <final> 0626 06D0
+fbf8 <initial> 0626 06D0
+fbf9 <isolated> 0626 0649
+fbfa <final> 0626 0649
+fbfb <initial> 0626 0649
+fbfc <isolated> 06CC
+fbfd <final> 06CC
+fbfe <initial> 06CC
+fbff <medial> 06CC
+fc00 <isolated> 0626 062C
+fc01 <isolated> 0626 062D
+fc02 <isolated> 0626 0645
+fc03 <isolated> 0626 0649
+fc04 <isolated> 0626 064A
+fc05 <isolated> 0628 062C
+fc06 <isolated> 0628 062D
+fc07 <isolated> 0628 062E
+fc08 <isolated> 0628 0645
+fc09 <isolated> 0628 0649
+fc0a <isolated> 0628 064A
+fc0b <isolated> 062A 062C
+fc0c <isolated> 062A 062D
+fc0d <isolated> 062A 062E
+fc0e <isolated> 062A 0645
+fc0f <isolated> 062A 0649
+fc10 <isolated> 062A 064A
+fc11 <isolated> 062B 062C
+fc12 <isolated> 062B 0645
+fc13 <isolated> 062B 0649
+fc14 <isolated> 062B 064A
+fc15 <isolated> 062C 062D
+fc16 <isolated> 062C 0645
+fc17 <isolated> 062D 062C
+fc18 <isolated> 062D 0645
+fc19 <isolated> 062E 062C
+fc1a <isolated> 062E 062D
+fc1b <isolated> 062E 0645
+fc1c <isolated> 0633 062C
+fc1d <isolated> 0633 062D
+fc1e <isolated> 0633 062E
+fc1f <isolated> 0633 0645
+fc20 <isolated> 0635 062D
+fc21 <isolated> 0635 0645
+fc22 <isolated> 0636 062C
+fc23 <isolated> 0636 062D
+fc24 <isolated> 0636 062E
+fc25 <isolated> 0636 0645
+fc26 <isolated> 0637 062D
+fc27 <isolated> 0637 0645
+fc28 <isolated> 0638 0645
+fc29 <isolated> 0639 062C
+fc2a <isolated> 0639 0645
+fc2b <isolated> 063A 062C
+fc2c <isolated> 063A 0645
+fc2d <isolated> 0641 062C
+fc2e <isolated> 0641 062D
+fc2f <isolated> 0641 062E
+fc30 <isolated> 0641 0645
+fc31 <isolated> 0641 0649
+fc32 <isolated> 0641 064A
+fc33 <isolated> 0642 062D
+fc34 <isolated> 0642 0645
+fc35 <isolated> 0642 0649
+fc36 <isolated> 0642 064A
+fc37 <isolated> 0643 0627
+fc38 <isolated> 0643 062C
+fc39 <isolated> 0643 062D
+fc3a <isolated> 0643 062E
+fc3b <isolated> 0643 0644
+fc3c <isolated> 0643 0645
+fc3d <isolated> 0643 0649
+fc3e <isolated> 0643 064A
+fc3f <isolated> 0644 062C
+fc40 <isolated> 0644 062D
+fc41 <isolated> 0644 062E
+fc42 <isolated> 0644 0645
+fc43 <isolated> 0644 0649
+fc44 <isolated> 0644 064A
+fc45 <isolated> 0645 062C
+fc46 <isolated> 0645 062D
+fc47 <isolated> 0645 062E
+fc48 <isolated> 0645 0645
+fc49 <isolated> 0645 0649
+fc4a <isolated> 0645 064A
+fc4b <isolated> 0646 062C
+fc4c <isolated> 0646 062D
+fc4d <isolated> 0646 062E
+fc4e <isolated> 0646 0645
+fc4f <isolated> 0646 0649
+fc50 <isolated> 0646 064A
+fc51 <isolated> 0647 062C
+fc52 <isolated> 0647 0645
+fc53 <isolated> 0647 0649
+fc54 <isolated> 0647 064A
+fc55 <isolated> 064A 062C
+fc56 <isolated> 064A 062D
+fc57 <isolated> 064A 062E
+fc58 <isolated> 064A 0645
+fc59 <isolated> 064A 0649
+fc5a <isolated> 064A 064A
+fc5b <isolated> 0630 0670
+fc5c <isolated> 0631 0670
+fc5d <isolated> 0649 0670
+fc5e <isolated> 0020 064C 0651
+fc5f <isolated> 0020 064D 0651
+fc60 <isolated> 0020 064E 0651
+fc61 <isolated> 0020 064F 0651
+fc62 <isolated> 0020 0650 0651
+fc63 <isolated> 0020 0651 0670
+fc64 <final> 0626 0631
+fc65 <final> 0626 0632
+fc66 <final> 0626 0645
+fc67 <final> 0626 0646
+fc68 <final> 0626 0649
+fc69 <final> 0626 064A
+fc6a <final> 0628 0631
+fc6b <final> 0628 0632
+fc6c <final> 0628 0645
+fc6d <final> 0628 0646
+fc6e <final> 0628 0649
+fc6f <final> 0628 064A
+fc70 <final> 062A 0631
+fc71 <final> 062A 0632
+fc72 <final> 062A 0645
+fc73 <final> 062A 0646
+fc74 <final> 062A 0649
+fc75 <final> 062A 064A
+fc76 <final> 062B 0631
+fc77 <final> 062B 0632
+fc78 <final> 062B 0645
+fc79 <final> 062B 0646
+fc7a <final> 062B 0649
+fc7b <final> 062B 064A
+fc7c <final> 0641 0649
+fc7d <final> 0641 064A
+fc7e <final> 0642 0649
+fc7f <final> 0642 064A
+fc80 <final> 0643 0627
+fc81 <final> 0643 0644
+fc82 <final> 0643 0645
+fc83 <final> 0643 0649
+fc84 <final> 0643 064A
+fc85 <final> 0644 0645
+fc86 <final> 0644 0649
+fc87 <final> 0644 064A
+fc88 <final> 0645 0627
+fc89 <final> 0645 0645
+fc8a <final> 0646 0631
+fc8b <final> 0646 0632
+fc8c <final> 0646 0645
+fc8d <final> 0646 0646
+fc8e <final> 0646 0649
+fc8f <final> 0646 064A
+fc90 <final> 0649 0670
+fc91 <final> 064A 0631
+fc92 <final> 064A 0632
+fc93 <final> 064A 0645
+fc94 <final> 064A 0646
+fc95 <final> 064A 0649
+fc96 <final> 064A 064A
+fc97 <initial> 0626 062C
+fc98 <initial> 0626 062D
+fc99 <initial> 0626 062E
+fc9a <initial> 0626 0645
+fc9b <initial> 0626 0647
+fc9c <initial> 0628 062C
+fc9d <initial> 0628 062D
+fc9e <initial> 0628 062E
+fc9f <initial> 0628 0645
+fca0 <initial> 0628 0647
+fca1 <initial> 062A 062C
+fca2 <initial> 062A 062D
+fca3 <initial> 062A 062E
+fca4 <initial> 062A 0645
+fca5 <initial> 062A 0647
+fca6 <initial> 062B 0645
+fca7 <initial> 062C 062D
+fca8 <initial> 062C 0645
+fca9 <initial> 062D 062C
+fcaa <initial> 062D 0645
+fcab <initial> 062E 062C
+fcac <initial> 062E 0645
+fcad <initial> 0633 062C
+fcae <initial> 0633 062D
+fcaf <initial> 0633 062E
+fcb0 <initial> 0633 0645
+fcb1 <initial> 0635 062D
+fcb2 <initial> 0635 062E
+fcb3 <initial> 0635 0645
+fcb4 <initial> 0636 062C
+fcb5 <initial> 0636 062D
+fcb6 <initial> 0636 062E
+fcb7 <initial> 0636 0645
+fcb8 <initial> 0637 062D
+fcb9 <initial> 0638 0645
+fcba <initial> 0639 062C
+fcbb <initial> 0639 0645
+fcbc <initial> 063A 062C
+fcbd <initial> 063A 0645
+fcbe <initial> 0641 062C
+fcbf <initial> 0641 062D
+fcc0 <initial> 0641 062E
+fcc1 <initial> 0641 0645
+fcc2 <initial> 0642 062D
+fcc3 <initial> 0642 0645
+fcc4 <initial> 0643 062C
+fcc5 <initial> 0643 062D
+fcc6 <initial> 0643 062E
+fcc7 <initial> 0643 0644
+fcc8 <initial> 0643 0645
+fcc9 <initial> 0644 062C
+fcca <initial> 0644 062D
+fccb <initial> 0644 062E
+fccc <initial> 0644 0645
+fccd <initial> 0644 0647
+fcce <initial> 0645 062C
+fccf <initial> 0645 062D
+fcd0 <initial> 0645 062E
+fcd1 <initial> 0645 0645
+fcd2 <initial> 0646 062C
+fcd3 <initial> 0646 062D
+fcd4 <initial> 0646 062E
+fcd5 <initial> 0646 0645
+fcd6 <initial> 0646 0647
+fcd7 <initial> 0647 062C
+fcd8 <initial> 0647 0645
+fcd9 <initial> 0647 0670
+fcda <initial> 064A 062C
+fcdb <initial> 064A 062D
+fcdc <initial> 064A 062E
+fcdd <initial> 064A 0645
+fcde <initial> 064A 0647
+fcdf <medial> 0626 0645
+fce0 <medial> 0626 0647
+fce1 <medial> 0628 0645
+fce2 <medial> 0628 0647
+fce3 <medial> 062A 0645
+fce4 <medial> 062A 0647
+fce5 <medial> 062B 0645
+fce6 <medial> 062B 0647
+fce7 <medial> 0633 0645
+fce8 <medial> 0633 0647
+fce9 <medial> 0634 0645
+fcea <medial> 0634 0647
+fceb <medial> 0643 0644
+fcec <medial> 0643 0645
+fced <medial> 0644 0645
+fcee <medial> 0646 0645
+fcef <medial> 0646 0647
+fcf0 <medial> 064A 0645
+fcf1 <medial> 064A 0647
+fcf2 <medial> 0640 064E 0651
+fcf3 <medial> 0640 064F 0651
+fcf4 <medial> 0640 0650 0651
+fcf5 <isolated> 0637 0649
+fcf6 <isolated> 0637 064A
+fcf7 <isolated> 0639 0649
+fcf8 <isolated> 0639 064A
+fcf9 <isolated> 063A 0649
+fcfa <isolated> 063A 064A
+fcfb <isolated> 0633 0649
+fcfc <isolated> 0633 064A
+fcfd <isolated> 0634 0649
+fcfe <isolated> 0634 064A
+fcff <isolated> 062D 0649
+fd00 <isolated> 062D 064A
+fd01 <isolated> 062C 0649
+fd02 <isolated> 062C 064A
+fd03 <isolated> 062E 0649
+fd04 <isolated> 062E 064A
+fd05 <isolated> 0635 0649
+fd06 <isolated> 0635 064A
+fd07 <isolated> 0636 0649
+fd08 <isolated> 0636 064A
+fd09 <isolated> 0634 062C
+fd0a <isolated> 0634 062D
+fd0b <isolated> 0634 062E
+fd0c <isolated> 0634 0645
+fd0d <isolated> 0634 0631
+fd0e <isolated> 0633 0631
+fd0f <isolated> 0635 0631
+fd10 <isolated> 0636 0631
+fd11 <final> 0637 0649
+fd12 <final> 0637 064A
+fd13 <final> 0639 0649
+fd14 <final> 0639 064A
+fd15 <final> 063A 0649
+fd16 <final> 063A 064A
+fd17 <final> 0633 0649
+fd18 <final> 0633 064A
+fd19 <final> 0634 0649
+fd1a <final> 0634 064A
+fd1b <final> 062D 0649
+fd1c <final> 062D 064A
+fd1d <final> 062C 0649
+fd1e <final> 062C 064A
+fd1f <final> 062E 0649
+fd20 <final> 062E 064A
+fd21 <final> 0635 0649
+fd22 <final> 0635 064A
+fd23 <final> 0636 0649
+fd24 <final> 0636 064A
+fd25 <final> 0634 062C
+fd26 <final> 0634 062D
+fd27 <final> 0634 062E
+fd28 <final> 0634 0645
+fd29 <final> 0634 0631
+fd2a <final> 0633 0631
+fd2b <final> 0635 0631
+fd2c <final> 0636 0631
+fd2d <initial> 0634 062C
+fd2e <initial> 0634 062D
+fd2f <initial> 0634 062E
+fd30 <initial> 0634 0645
+fd31 <initial> 0633 0647
+fd32 <initial> 0634 0647
+fd33 <initial> 0637 0645
+fd34 <medial> 0633 062C
+fd35 <medial> 0633 062D
+fd36 <medial> 0633 062E
+fd37 <medial> 0634 062C
+fd38 <medial> 0634 062D
+fd39 <medial> 0634 062E
+fd3a <medial> 0637 0645
+fd3b <medial> 0638 0645
+fd3c <final> 0627 064B
+fd3d <isolated> 0627 064B
+fd50 <initial> 062A 062C 0645
+fd51 <final> 062A 062D 062C
+fd52 <initial> 062A 062D 062C
+fd53 <initial> 062A 062D 0645
+fd54 <initial> 062A 062E 0645
+fd55 <initial> 062A 0645 062C
+fd56 <initial> 062A 0645 062D
+fd57 <initial> 062A 0645 062E
+fd58 <final> 062C 0645 062D
+fd59 <initial> 062C 0645 062D
+fd5a <final> 062D 0645 064A
+fd5b <final> 062D 0645 0649
+fd5c <initial> 0633 062D 062C
+fd5d <initial> 0633 062C 062D
+fd5e <final> 0633 062C 0649
+fd5f <final> 0633 0645 062D
+fd60 <initial> 0633 0645 062D
+fd61 <initial> 0633 0645 062C
+fd62 <final> 0633 0645 0645
+fd63 <initial> 0633 0645 0645
+fd64 <final> 0635 062D 062D
+fd65 <initial> 0635 062D 062D
+fd66 <final> 0635 0645 0645
+fd67 <final> 0634 062D 0645
+fd68 <initial> 0634 062D 0645
+fd69 <final> 0634 062C 064A
+fd6a <final> 0634 0645 062E
+fd6b <initial> 0634 0645 062E
+fd6c <final> 0634 0645 0645
+fd6d <initial> 0634 0645 0645
+fd6e <final> 0636 062D 0649
+fd6f <final> 0636 062E 0645
+fd70 <initial> 0636 062E 0645
+fd71 <final> 0637 0645 062D
+fd72 <initial> 0637 0645 062D
+fd73 <initial> 0637 0645 0645
+fd74 <final> 0637 0645 064A
+fd75 <final> 0639 062C 0645
+fd76 <final> 0639 0645 0645
+fd77 <initial> 0639 0645 0645
+fd78 <final> 0639 0645 0649
+fd79 <final> 063A 0645 0645
+fd7a <final> 063A 0645 064A
+fd7b <final> 063A 0645 0649
+fd7c <final> 0641 062E 0645
+fd7d <initial> 0641 062E 0645
+fd7e <final> 0642 0645 062D
+fd7f <final> 0642 0645 0645
+fd80 <final> 0644 062D 0645
+fd81 <final> 0644 062D 064A
+fd82 <final> 0644 062D 0649
+fd83 <initial> 0644 062C 062C
+fd84 <final> 0644 062C 062C
+fd85 <final> 0644 062E 0645
+fd86 <initial> 0644 062E 0645
+fd87 <final> 0644 0645 062D
+fd88 <initial> 0644 0645 062D
+fd89 <initial> 0645 062D 062C
+fd8a <initial> 0645 062D 0645
+fd8b <final> 0645 062D 064A
+fd8c <initial> 0645 062C 062D
+fd8d <initial> 0645 062C 0645
+fd8e <initial> 0645 062E 062C
+fd8f <initial> 0645 062E 0645
+fd92 <initial> 0645 062C 062E
+fd93 <initial> 0647 0645 062C
+fd94 <initial> 0647 0645 0645
+fd95 <initial> 0646 062D 0645
+fd96 <final> 0646 062D 0649
+fd97 <final> 0646 062C 0645
+fd98 <initial> 0646 062C 0645
+fd99 <final> 0646 062C 0649
+fd9a <final> 0646 0645 064A
+fd9b <final> 0646 0645 0649
+fd9c <final> 064A 0645 0645
+fd9d <initial> 064A 0645 0645
+fd9e <final> 0628 062E 064A
+fd9f <final> 062A 062C 064A
+fda0 <final> 062A 062C 0649
+fda1 <final> 062A 062E 064A
+fda2 <final> 062A 062E 0649
+fda3 <final> 062A 0645 064A
+fda4 <final> 062A 0645 0649
+fda5 <final> 062C 0645 064A
+fda6 <final> 062C 062D 0649
+fda7 <final> 062C 0645 0649
+fda8 <final> 0633 062E 0649
+fda9 <final> 0635 062D 064A
+fdaa <final> 0634 062D 064A
+fdab <final> 0636 062D 064A
+fdac <final> 0644 062C 064A
+fdad <final> 0644 0645 064A
+fdae <final> 064A 062D 064A
+fdaf <final> 064A 062C 064A
+fdb0 <final> 064A 0645 064A
+fdb1 <final> 0645 0645 064A
+fdb2 <final> 0642 0645 064A
+fdb3 <final> 0646 062D 064A
+fdb4 <initial> 0642 0645 062D
+fdb5 <initial> 0644 062D 0645
+fdb6 <final> 0639 0645 064A
+fdb7 <final> 0643 0645 064A
+fdb8 <initial> 0646 062C 062D
+fdb9 <final> 0645 062E 064A
+fdba <initial> 0644 062C 0645
+fdbb <final> 0643 0645 0645
+fdbc <final> 0644 062C 0645
+fdbd <final> 0646 062C 062D
+fdbe <final> 062C 062D 064A
+fdbf <final> 062D 062C 064A
+fdc0 <final> 0645 062C 064A
+fdc1 <final> 0641 0645 064A
+fdc2 <final> 0628 062D 064A
+fdc3 <initial> 0643 0645 0645
+fdc4 <initial> 0639 062C 0645
+fdc5 <initial> 0635 0645 0645
+fdc6 <final> 0633 062E 064A
+fdc7 <final> 0646 062C 064A
+fdf0 <isolated> 0635 0644 06D2
+fdf1 <isolated> 0642 0644 06D2
+fdf2 <isolated> 0627 0644 0644 0647
+fdf3 <isolated> 0627 0643 0628 0631
+fdf4 <isolated> 0645 062D 0645 062F
+fdf5 <isolated> 0635 0644 0639 0645
+fdf6 <isolated> 0631 0633 0648 0644
+fdf7 <isolated> 0639 0644 064A 0647
+fdf8 <isolated> 0648 0633 0644 0645
+fdf9 <isolated> 0635 0644 0649
+fdfa <isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
+fdfb <isolated> 062C 0644 0020 062C 0644 0627 0644 0647
+fe30 <vertical> 2025
+fe31 <vertical> 2014
+fe32 <vertical> 2013
+fe33 fe34 <vertical> 005F
+fe35 <vertical> 0028
+fe36 <vertical> 0029
+fe37 <vertical> 007B
+fe38 <vertical> 007D
+fe39 <vertical> 3014
+fe3a <vertical> 3015
+fe3b <vertical> 3010
+fe3c <vertical> 3011
+fe3d <vertical> 300A
+fe3e <vertical> 300B
+fe3f <vertical> 3008
+fe40 <vertical> 3009
+fe41 <vertical> 300C
+fe42 <vertical> 300D
+fe43 <vertical> 300E
+fe44 <vertical> 300F
+fe49 fe4c <compat> 203E
+fe4d fe4f <compat> 005F
+fe50 <small> 002C
+fe51 <small> 3001
+fe52 <small> 002E
+fe54 <small> 003B
+fe55 <small> 003A
+fe56 <small> 003F
+fe57 <small> 0021
+fe58 <small> 2014
+fe59 <small> 0028
+fe5a <small> 0029
+fe5b <small> 007B
+fe5c <small> 007D
+fe5d <small> 3014
+fe5e <small> 3015
+fe5f <small> 0023
+fe60 <small> 0026
+fe61 <small> 002A
+fe62 <small> 002B
+fe63 <small> 002D
+fe64 <small> 003C
+fe65 <small> 003E
+fe66 <small> 003D
+fe68 <small> 005C
+fe69 <small> 0024
+fe6a <small> 0025
+fe6b <small> 0040
+fe70 <isolated> 0020 064B
+fe71 <medial> 0640 064B
+fe72 <isolated> 0020 064C
+fe74 <isolated> 0020 064D
+fe76 <isolated> 0020 064E
+fe77 <medial> 0640 064E
+fe78 <isolated> 0020 064F
+fe79 <medial> 0640 064F
+fe7a <isolated> 0020 0650
+fe7b <medial> 0640 0650
+fe7c <isolated> 0020 0651
+fe7d <medial> 0640 0651
+fe7e <isolated> 0020 0652
+fe7f <medial> 0640 0652
+fe80 <isolated> 0621
+fe81 <isolated> 0622
+fe82 <final> 0622
+fe83 <isolated> 0623
+fe84 <final> 0623
+fe85 <isolated> 0624
+fe86 <final> 0624
+fe87 <isolated> 0625
+fe88 <final> 0625
+fe89 <isolated> 0626
+fe8a <final> 0626
+fe8b <initial> 0626
+fe8c <medial> 0626
+fe8d <isolated> 0627
+fe8e <final> 0627
+fe8f <isolated> 0628
+fe90 <final> 0628
+fe91 <initial> 0628
+fe92 <medial> 0628
+fe93 <isolated> 0629
+fe94 <final> 0629
+fe95 <isolated> 062A
+fe96 <final> 062A
+fe97 <initial> 062A
+fe98 <medial> 062A
+fe99 <isolated> 062B
+fe9a <final> 062B
+fe9b <initial> 062B
+fe9c <medial> 062B
+fe9d <isolated> 062C
+fe9e <final> 062C
+fe9f <initial> 062C
+fea0 <medial> 062C
+fea1 <isolated> 062D
+fea2 <final> 062D
+fea3 <initial> 062D
+fea4 <medial> 062D
+fea5 <isolated> 062E
+fea6 <final> 062E
+fea7 <initial> 062E
+fea8 <medial> 062E
+fea9 <isolated> 062F
+feaa <final> 062F
+feab <isolated> 0630
+feac <final> 0630
+fead <isolated> 0631
+feae <final> 0631
+feaf <isolated> 0632
+feb0 <final> 0632
+feb1 <isolated> 0633
+feb2 <final> 0633
+feb3 <initial> 0633
+feb4 <medial> 0633
+feb5 <isolated> 0634
+feb6 <final> 0634
+feb7 <initial> 0634
+feb8 <medial> 0634
+feb9 <isolated> 0635
+feba <final> 0635
+febb <initial> 0635
+febc <medial> 0635
+febd <isolated> 0636
+febe <final> 0636
+febf <initial> 0636
+fec0 <medial> 0636
+fec1 <isolated> 0637
+fec2 <final> 0637
+fec3 <initial> 0637
+fec4 <medial> 0637
+fec5 <isolated> 0638
+fec6 <final> 0638
+fec7 <initial> 0638
+fec8 <medial> 0638
+fec9 <isolated> 0639
+feca <final> 0639
+fecb <initial> 0639
+fecc <medial> 0639
+fecd <isolated> 063A
+fece <final> 063A
+fecf <initial> 063A
+fed0 <medial> 063A
+fed1 <isolated> 0641
+fed2 <final> 0641
+fed3 <initial> 0641
+fed4 <medial> 0641
+fed5 <isolated> 0642
+fed6 <final> 0642
+fed7 <initial> 0642
+fed8 <medial> 0642
+fed9 <isolated> 0643
+feda <final> 0643
+fedb <initial> 0643
+fedc <medial> 0643
+fedd <isolated> 0644
+fede <final> 0644
+fedf <initial> 0644
+fee0 <medial> 0644
+fee1 <isolated> 0645
+fee2 <final> 0645
+fee3 <initial> 0645
+fee4 <medial> 0645
+fee5 <isolated> 0646
+fee6 <final> 0646
+fee7 <initial> 0646
+fee8 <medial> 0646
+fee9 <isolated> 0647
+feea <final> 0647
+feeb <initial> 0647
+feec <medial> 0647
+feed <isolated> 0648
+feee <final> 0648
+feef <isolated> 0649
+fef0 <final> 0649
+fef1 <isolated> 064A
+fef2 <final> 064A
+fef3 <initial> 064A
+fef4 <medial> 064A
+fef5 <isolated> 0644 0622
+fef6 <final> 0644 0622
+fef7 <isolated> 0644 0623
+fef8 <final> 0644 0623
+fef9 <isolated> 0644 0625
+fefa <final> 0644 0625
+fefb <isolated> 0644 0627
+fefc <final> 0644 0627
+ff01 <wide> 0021
+ff02 <wide> 0022
+ff03 <wide> 0023
+ff04 <wide> 0024
+ff05 <wide> 0025
+ff06 <wide> 0026
+ff07 <wide> 0027
+ff08 <wide> 0028
+ff09 <wide> 0029
+ff0a <wide> 002A
+ff0b <wide> 002B
+ff0c <wide> 002C
+ff0d <wide> 002D
+ff0e <wide> 002E
+ff0f <wide> 002F
+ff10 <wide> 0030
+ff11 <wide> 0031
+ff12 <wide> 0032
+ff13 <wide> 0033
+ff14 <wide> 0034
+ff15 <wide> 0035
+ff16 <wide> 0036
+ff17 <wide> 0037
+ff18 <wide> 0038
+ff19 <wide> 0039
+ff1a <wide> 003A
+ff1b <wide> 003B
+ff1c <wide> 003C
+ff1d <wide> 003D
+ff1e <wide> 003E
+ff1f <wide> 003F
+ff20 <wide> 0040
+ff21 <wide> 0041
+ff22 <wide> 0042
+ff23 <wide> 0043
+ff24 <wide> 0044
+ff25 <wide> 0045
+ff26 <wide> 0046
+ff27 <wide> 0047
+ff28 <wide> 0048
+ff29 <wide> 0049
+ff2a <wide> 004A
+ff2b <wide> 004B
+ff2c <wide> 004C
+ff2d <wide> 004D
+ff2e <wide> 004E
+ff2f <wide> 004F
+ff30 <wide> 0050
+ff31 <wide> 0051
+ff32 <wide> 0052
+ff33 <wide> 0053
+ff34 <wide> 0054
+ff35 <wide> 0055
+ff36 <wide> 0056
+ff37 <wide> 0057
+ff38 <wide> 0058
+ff39 <wide> 0059
+ff3a <wide> 005A
+ff3b <wide> 005B
+ff3c <wide> 005C
+ff3d <wide> 005D
+ff3e <wide> 005E
+ff3f <wide> 005F
+ff40 <wide> 0060
+ff41 <wide> 0061
+ff42 <wide> 0062
+ff43 <wide> 0063
+ff44 <wide> 0064
+ff45 <wide> 0065
+ff46 <wide> 0066
+ff47 <wide> 0067
+ff48 <wide> 0068
+ff49 <wide> 0069
+ff4a <wide> 006A
+ff4b <wide> 006B
+ff4c <wide> 006C
+ff4d <wide> 006D
+ff4e <wide> 006E
+ff4f <wide> 006F
+ff50 <wide> 0070
+ff51 <wide> 0071
+ff52 <wide> 0072
+ff53 <wide> 0073
+ff54 <wide> 0074
+ff55 <wide> 0075
+ff56 <wide> 0076
+ff57 <wide> 0077
+ff58 <wide> 0078
+ff59 <wide> 0079
+ff5a <wide> 007A
+ff5b <wide> 007B
+ff5c <wide> 007C
+ff5d <wide> 007D
+ff5e <wide> 007E
+ff61 <narrow> 3002
+ff62 <narrow> 300C
+ff63 <narrow> 300D
+ff64 <narrow> 3001
+ff65 <narrow> 30FB
+ff66 <narrow> 30F2
+ff67 <narrow> 30A1
+ff68 <narrow> 30A3
+ff69 <narrow> 30A5
+ff6a <narrow> 30A7
+ff6b <narrow> 30A9
+ff6c <narrow> 30E3
+ff6d <narrow> 30E5
+ff6e <narrow> 30E7
+ff6f <narrow> 30C3
+ff70 <narrow> 30FC
+ff71 <narrow> 30A2
+ff72 <narrow> 30A4
+ff73 <narrow> 30A6
+ff74 <narrow> 30A8
+ff75 <narrow> 30AA
+ff76 <narrow> 30AB
+ff77 <narrow> 30AD
+ff78 <narrow> 30AF
+ff79 <narrow> 30B1
+ff7a <narrow> 30B3
+ff7b <narrow> 30B5
+ff7c <narrow> 30B7
+ff7d <narrow> 30B9
+ff7e <narrow> 30BB
+ff7f <narrow> 30BD
+ff80 <narrow> 30BF
+ff81 <narrow> 30C1
+ff82 <narrow> 30C4
+ff83 <narrow> 30C6
+ff84 <narrow> 30C8
+ff85 <narrow> 30CA
+ff86 <narrow> 30CB
+ff87 <narrow> 30CC
+ff88 <narrow> 30CD
+ff89 <narrow> 30CE
+ff8a <narrow> 30CF
+ff8b <narrow> 30D2
+ff8c <narrow> 30D5
+ff8d <narrow> 30D8
+ff8e <narrow> 30DB
+ff8f <narrow> 30DE
+ff90 <narrow> 30DF
+ff91 <narrow> 30E0
+ff92 <narrow> 30E1
+ff93 <narrow> 30E2
+ff94 <narrow> 30E4
+ff95 <narrow> 30E6
+ff96 <narrow> 30E8
+ff97 <narrow> 30E9
+ff98 <narrow> 30EA
+ff99 <narrow> 30EB
+ff9a <narrow> 30EC
+ff9b <narrow> 30ED
+ff9c <narrow> 30EF
+ff9d <narrow> 30F3
+ff9e <narrow> 3099
+ff9f <narrow> 309A
+ffa0 <narrow> 3164
+ffa1 <narrow> 3131
+ffa2 <narrow> 3132
+ffa3 <narrow> 3133
+ffa4 <narrow> 3134
+ffa5 <narrow> 3135
+ffa6 <narrow> 3136
+ffa7 <narrow> 3137
+ffa8 <narrow> 3138
+ffa9 <narrow> 3139
+ffaa <narrow> 313A
+ffab <narrow> 313B
+ffac <narrow> 313C
+ffad <narrow> 313D
+ffae <narrow> 313E
+ffaf <narrow> 313F
+ffb0 <narrow> 3140
+ffb1 <narrow> 3141
+ffb2 <narrow> 3142
+ffb3 <narrow> 3143
+ffb4 <narrow> 3144
+ffb5 <narrow> 3145
+ffb6 <narrow> 3146
+ffb7 <narrow> 3147
+ffb8 <narrow> 3148
+ffb9 <narrow> 3149
+ffba <narrow> 314A
+ffbb <narrow> 314B
+ffbc <narrow> 314C
+ffbd <narrow> 314D
+ffbe <narrow> 314E
+ffc2 <narrow> 314F
+ffc3 <narrow> 3150
+ffc4 <narrow> 3151
+ffc5 <narrow> 3152
+ffc6 <narrow> 3153
+ffc7 <narrow> 3154
+ffca <narrow> 3155
+ffcb <narrow> 3156
+ffcc <narrow> 3157
+ffcd <narrow> 3158
+ffce <narrow> 3159
+ffcf <narrow> 315A
+ffd2 <narrow> 315B
+ffd3 <narrow> 315C
+ffd4 <narrow> 315D
+ffd5 <narrow> 315E
+ffd6 <narrow> 315F
+ffd7 <narrow> 3160
+ffda <narrow> 3161
+ffdb <narrow> 3162
+ffdc <narrow> 3163
+ffe0 <wide> 00A2
+ffe1 <wide> 00A3
+ffe2 <wide> 00AC
+ffe3 <wide> 00AF
+ffe4 <wide> 00A6
+ffe5 <wide> 00A5
+ffe6 <wide> 20A9
+ffe8 <narrow> 2502
+ffe9 <narrow> 2190
+ffea <narrow> 2191
+ffeb <narrow> 2192
+ffec <narrow> 2193
+ffed <narrow> 25A0
+ffee <narrow> 25CB
+END
diff --git a/contrib/perl5/lib/unicode/EAWidth.txt b/contrib/perl5/lib/unicode/EAWidth.txt
new file mode 100644
index 0000000..2b3577b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/EAWidth.txt
@@ -0,0 +1,10636 @@
+# EastAsianWidth-3.txt
+#
+# East Asian Width Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains informative data only.
+# The format is three fields separated by semicolons.
+# Field 1: Unicode value
+# Field 2: East Asian Width property, consisting of one of the following values:
+# "N", "A", "H", "W", "F", "Na"
+# - Assigned characters that are not listed explicitly are given the value "N".
+# - Characters within ranges marked by "First>" and "Last>" are omitted,
+# as in UnicodeData.txt. For example, the following means that
+# all characters between 3400 and 4DB5 have the value "W"
+# 3400;W;<CJK Ideograph Extension A, First>
+# 4DB5;W;<CJK Ideograph Extension A, Last>
+# Field 3: Unicode name (this is purely informative)
+#
+# See UTR #11: East Asian Character Width for more information
+0000;N;<control>
+0001;N;<control>
+0002;N;<control>
+0003;N;<control>
+0004;N;<control>
+0005;N;<control>
+0006;N;<control>
+0007;N;<control>
+0008;N;<control>
+0009;N;<control>
+000A;N;<control>
+000B;N;<control>
+000C;N;<control>
+000D;N;<control>
+000E;N;<control>
+000F;N;<control>
+0010;N;<control>
+0011;N;<control>
+0012;N;<control>
+0013;N;<control>
+0014;N;<control>
+0015;N;<control>
+0016;N;<control>
+0017;N;<control>
+0018;N;<control>
+0019;N;<control>
+001A;N;<control>
+001B;N;<control>
+001C;N;<control>
+001D;N;<control>
+001E;N;<control>
+001F;N;<control>
+0020;Na;SPACE
+0021;Na;EXCLAMATION MARK
+0022;Na;QUOTATION MARK
+0023;Na;NUMBER SIGN
+0024;Na;DOLLAR SIGN
+0025;Na;PERCENT SIGN
+0026;Na;AMPERSAND
+0027;Na;APOSTROPHE
+0028;Na;LEFT PARENTHESIS
+0029;Na;RIGHT PARENTHESIS
+002A;Na;ASTERISK
+002B;Na;PLUS SIGN
+002C;Na;COMMA
+002D;Na;HYPHEN-MINUS
+002E;Na;FULL STOP
+002F;Na;SOLIDUS
+0030;Na;DIGIT ZERO
+0031;Na;DIGIT ONE
+0032;Na;DIGIT TWO
+0033;Na;DIGIT THREE
+0034;Na;DIGIT FOUR
+0035;Na;DIGIT FIVE
+0036;Na;DIGIT SIX
+0037;Na;DIGIT SEVEN
+0038;Na;DIGIT EIGHT
+0039;Na;DIGIT NINE
+003A;Na;COLON
+003B;Na;SEMICOLON
+003C;Na;LESS-THAN SIGN
+003D;Na;EQUALS SIGN
+003E;Na;GREATER-THAN SIGN
+003F;Na;QUESTION MARK
+0040;Na;COMMERCIAL AT
+0041;Na;LATIN CAPITAL LETTER A
+0042;Na;LATIN CAPITAL LETTER B
+0043;Na;LATIN CAPITAL LETTER C
+0044;Na;LATIN CAPITAL LETTER D
+0045;Na;LATIN CAPITAL LETTER E
+0046;Na;LATIN CAPITAL LETTER F
+0047;Na;LATIN CAPITAL LETTER G
+0048;Na;LATIN CAPITAL LETTER H
+0049;Na;LATIN CAPITAL LETTER I
+004A;Na;LATIN CAPITAL LETTER J
+004B;Na;LATIN CAPITAL LETTER K
+004C;Na;LATIN CAPITAL LETTER L
+004D;Na;LATIN CAPITAL LETTER M
+004E;Na;LATIN CAPITAL LETTER N
+004F;Na;LATIN CAPITAL LETTER O
+0050;Na;LATIN CAPITAL LETTER P
+0051;Na;LATIN CAPITAL LETTER Q
+0052;Na;LATIN CAPITAL LETTER R
+0053;Na;LATIN CAPITAL LETTER S
+0054;Na;LATIN CAPITAL LETTER T
+0055;Na;LATIN CAPITAL LETTER U
+0056;Na;LATIN CAPITAL LETTER V
+0057;Na;LATIN CAPITAL LETTER W
+0058;Na;LATIN CAPITAL LETTER X
+0059;Na;LATIN CAPITAL LETTER Y
+005A;Na;LATIN CAPITAL LETTER Z
+005B;Na;LEFT SQUARE BRACKET
+005C;Na;REVERSE SOLIDUS
+005D;Na;RIGHT SQUARE BRACKET
+005E;Na;CIRCUMFLEX ACCENT
+005F;Na;LOW LINE
+0060;Na;GRAVE ACCENT
+0061;Na;LATIN SMALL LETTER A
+0062;Na;LATIN SMALL LETTER B
+0063;Na;LATIN SMALL LETTER C
+0064;Na;LATIN SMALL LETTER D
+0065;Na;LATIN SMALL LETTER E
+0066;Na;LATIN SMALL LETTER F
+0067;Na;LATIN SMALL LETTER G
+0068;Na;LATIN SMALL LETTER H
+0069;Na;LATIN SMALL LETTER I
+006A;Na;LATIN SMALL LETTER J
+006B;Na;LATIN SMALL LETTER K
+006C;Na;LATIN SMALL LETTER L
+006D;Na;LATIN SMALL LETTER M
+006E;Na;LATIN SMALL LETTER N
+006F;Na;LATIN SMALL LETTER O
+0070;Na;LATIN SMALL LETTER P
+0071;Na;LATIN SMALL LETTER Q
+0072;Na;LATIN SMALL LETTER R
+0073;Na;LATIN SMALL LETTER S
+0074;Na;LATIN SMALL LETTER T
+0075;Na;LATIN SMALL LETTER U
+0076;Na;LATIN SMALL LETTER V
+0077;Na;LATIN SMALL LETTER W
+0078;Na;LATIN SMALL LETTER X
+0079;Na;LATIN SMALL LETTER Y
+007A;Na;LATIN SMALL LETTER Z
+007B;Na;LEFT CURLY BRACKET
+007C;Na;VERTICAL LINE
+007D;Na;RIGHT CURLY BRACKET
+007E;Na;TILDE
+007F;N;<control>
+0080;N;<control>
+0081;N;<control>
+0082;N;<control>
+0083;N;<control>
+0084;N;<control>
+0085;N;<control>
+0086;N;<control>
+0087;N;<control>
+0088;N;<control>
+0089;N;<control>
+008A;N;<control>
+008B;N;<control>
+008C;N;<control>
+008D;N;<control>
+008E;N;<control>
+008F;N;<control>
+0090;N;<control>
+0091;N;<control>
+0092;N;<control>
+0093;N;<control>
+0094;N;<control>
+0095;N;<control>
+0096;N;<control>
+0097;N;<control>
+0098;N;<control>
+0099;N;<control>
+009A;N;<control>
+009B;N;<control>
+009C;N;<control>
+009D;N;<control>
+009E;N;<control>
+009F;N;<control>
+00A0;N;NO-BREAK SPACE
+00A1;A;INVERTED EXCLAMATION MARK
+00A2;Na;CENT SIGN
+00A3;Na;POUND SIGN
+00A4;A;CURRENCY SIGN
+00A5;Na;YEN SIGN
+00A6;Na;BROKEN BAR
+00A7;A;SECTION SIGN
+00A8;A;DIAERESIS
+00A9;N;COPYRIGHT SIGN
+00AA;A;FEMININE ORDINAL INDICATOR
+00AB;N;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC;Na;NOT SIGN
+00AD;A;SOFT HYPHEN
+00AE;N;REGISTERED SIGN
+00AF;Na;MACRON
+00B0;A;DEGREE SIGN
+00B1;A;PLUS-MINUS SIGN
+00B2;A;SUPERSCRIPT TWO
+00B3;A;SUPERSCRIPT THREE
+00B4;A;ACUTE ACCENT
+00B5;N;MICRO SIGN
+00B6;A;PILCROW SIGN
+00B7;A;MIDDLE DOT
+00B8;A;CEDILLA
+00B9;A;SUPERSCRIPT ONE
+00BA;A;MASCULINE ORDINAL INDICATOR
+00BB;N;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC;A;VULGAR FRACTION ONE QUARTER
+00BD;A;VULGAR FRACTION ONE HALF
+00BE;A;VULGAR FRACTION THREE QUARTERS
+00BF;A;INVERTED QUESTION MARK
+00C0;N;LATIN CAPITAL LETTER A WITH GRAVE
+00C1;N;LATIN CAPITAL LETTER A WITH ACUTE
+00C2;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;N;LATIN CAPITAL LETTER A WITH TILDE
+00C4;N;LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;N;LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6;A;LATIN CAPITAL LETTER AE
+00C7;N;LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;N;LATIN CAPITAL LETTER E WITH GRAVE
+00C9;N;LATIN CAPITAL LETTER E WITH ACUTE
+00CA;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;N;LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;N;LATIN CAPITAL LETTER I WITH GRAVE
+00CD;N;LATIN CAPITAL LETTER I WITH ACUTE
+00CE;N;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;N;LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0;A;LATIN CAPITAL LETTER ETH
+00D1;N;LATIN CAPITAL LETTER N WITH TILDE
+00D2;N;LATIN CAPITAL LETTER O WITH GRAVE
+00D3;N;LATIN CAPITAL LETTER O WITH ACUTE
+00D4;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;N;LATIN CAPITAL LETTER O WITH TILDE
+00D6;N;LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7;A;MULTIPLICATION SIGN
+00D8;A;LATIN CAPITAL LETTER O WITH STROKE
+00D9;N;LATIN CAPITAL LETTER U WITH GRAVE
+00DA;N;LATIN CAPITAL LETTER U WITH ACUTE
+00DB;N;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;N;LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;N;LATIN CAPITAL LETTER Y WITH ACUTE
+00DE;A;LATIN CAPITAL LETTER THORN
+00DF;A;LATIN SMALL LETTER SHARP S
+00E0;A;LATIN SMALL LETTER A WITH GRAVE
+00E1;A;LATIN SMALL LETTER A WITH ACUTE
+00E2;N;LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;N;LATIN SMALL LETTER A WITH TILDE
+00E4;N;LATIN SMALL LETTER A WITH DIAERESIS
+00E5;N;LATIN SMALL LETTER A WITH RING ABOVE
+00E6;A;LATIN SMALL LETTER AE
+00E7;N;LATIN SMALL LETTER C WITH CEDILLA
+00E8;A;LATIN SMALL LETTER E WITH GRAVE
+00E9;A;LATIN SMALL LETTER E WITH ACUTE
+00EA;A;LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;N;LATIN SMALL LETTER E WITH DIAERESIS
+00EC;A;LATIN SMALL LETTER I WITH GRAVE
+00ED;A;LATIN SMALL LETTER I WITH ACUTE
+00EE;N;LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;N;LATIN SMALL LETTER I WITH DIAERESIS
+00F0;A;LATIN SMALL LETTER ETH
+00F1;N;LATIN SMALL LETTER N WITH TILDE
+00F2;A;LATIN SMALL LETTER O WITH GRAVE
+00F3;A;LATIN SMALL LETTER O WITH ACUTE
+00F4;N;LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;N;LATIN SMALL LETTER O WITH TILDE
+00F6;N;LATIN SMALL LETTER O WITH DIAERESIS
+00F7;A;DIVISION SIGN
+00F8;A;LATIN SMALL LETTER O WITH STROKE
+00F9;A;LATIN SMALL LETTER U WITH GRAVE
+00FA;A;LATIN SMALL LETTER U WITH ACUTE
+00FB;N;LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;A;LATIN SMALL LETTER U WITH DIAERESIS
+00FD;N;LATIN SMALL LETTER Y WITH ACUTE
+00FE;A;LATIN SMALL LETTER THORN
+00FF;N;LATIN SMALL LETTER Y WITH DIAERESIS
+0100;N;LATIN CAPITAL LETTER A WITH MACRON
+0101;A;LATIN SMALL LETTER A WITH MACRON
+0102;N;LATIN CAPITAL LETTER A WITH BREVE
+0103;N;LATIN SMALL LETTER A WITH BREVE
+0104;N;LATIN CAPITAL LETTER A WITH OGONEK
+0105;N;LATIN SMALL LETTER A WITH OGONEK
+0106;N;LATIN CAPITAL LETTER C WITH ACUTE
+0107;N;LATIN SMALL LETTER C WITH ACUTE
+0108;N;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;N;LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;N;LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;N;LATIN SMALL LETTER C WITH DOT ABOVE
+010C;N;LATIN CAPITAL LETTER C WITH CARON
+010D;N;LATIN SMALL LETTER C WITH CARON
+010E;N;LATIN CAPITAL LETTER D WITH CARON
+010F;N;LATIN SMALL LETTER D WITH CARON
+0110;N;LATIN CAPITAL LETTER D WITH STROKE
+0111;A;LATIN SMALL LETTER D WITH STROKE
+0112;N;LATIN CAPITAL LETTER E WITH MACRON
+0113;A;LATIN SMALL LETTER E WITH MACRON
+0114;N;LATIN CAPITAL LETTER E WITH BREVE
+0115;N;LATIN SMALL LETTER E WITH BREVE
+0116;N;LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;N;LATIN SMALL LETTER E WITH DOT ABOVE
+0118;N;LATIN CAPITAL LETTER E WITH OGONEK
+0119;N;LATIN SMALL LETTER E WITH OGONEK
+011A;N;LATIN CAPITAL LETTER E WITH CARON
+011B;A;LATIN SMALL LETTER E WITH CARON
+011C;N;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;N;LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;N;LATIN CAPITAL LETTER G WITH BREVE
+011F;N;LATIN SMALL LETTER G WITH BREVE
+0120;N;LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;N;LATIN SMALL LETTER G WITH DOT ABOVE
+0122;N;LATIN CAPITAL LETTER G WITH CEDILLA
+0123;N;LATIN SMALL LETTER G WITH CEDILLA
+0124;N;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;N;LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126;A;LATIN CAPITAL LETTER H WITH STROKE
+0127;A;LATIN SMALL LETTER H WITH STROKE
+0128;N;LATIN CAPITAL LETTER I WITH TILDE
+0129;N;LATIN SMALL LETTER I WITH TILDE
+012A;N;LATIN CAPITAL LETTER I WITH MACRON
+012B;A;LATIN SMALL LETTER I WITH MACRON
+012C;N;LATIN CAPITAL LETTER I WITH BREVE
+012D;N;LATIN SMALL LETTER I WITH BREVE
+012E;N;LATIN CAPITAL LETTER I WITH OGONEK
+012F;N;LATIN SMALL LETTER I WITH OGONEK
+0130;N;LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131;A;LATIN SMALL LETTER DOTLESS I
+0132;A;LATIN CAPITAL LIGATURE IJ
+0133;A;LATIN SMALL LIGATURE IJ
+0134;N;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;N;LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;N;LATIN CAPITAL LETTER K WITH CEDILLA
+0137;N;LATIN SMALL LETTER K WITH CEDILLA
+0138;A;LATIN SMALL LETTER KRA
+0139;N;LATIN CAPITAL LETTER L WITH ACUTE
+013A;N;LATIN SMALL LETTER L WITH ACUTE
+013B;N;LATIN CAPITAL LETTER L WITH CEDILLA
+013C;N;LATIN SMALL LETTER L WITH CEDILLA
+013D;N;LATIN CAPITAL LETTER L WITH CARON
+013E;N;LATIN SMALL LETTER L WITH CARON
+013F;A;LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;A;LATIN SMALL LETTER L WITH MIDDLE DOT
+0141;A;LATIN CAPITAL LETTER L WITH STROKE
+0142;A;LATIN SMALL LETTER L WITH STROKE
+0143;N;LATIN CAPITAL LETTER N WITH ACUTE
+0144;A;LATIN SMALL LETTER N WITH ACUTE
+0145;N;LATIN CAPITAL LETTER N WITH CEDILLA
+0146;N;LATIN SMALL LETTER N WITH CEDILLA
+0147;N;LATIN CAPITAL LETTER N WITH CARON
+0148;A;LATIN SMALL LETTER N WITH CARON
+0149;A;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A;A;LATIN CAPITAL LETTER ENG
+014B;N;LATIN SMALL LETTER ENG
+014C;N;LATIN CAPITAL LETTER O WITH MACRON
+014D;A;LATIN SMALL LETTER O WITH MACRON
+014E;N;LATIN CAPITAL LETTER O WITH BREVE
+014F;N;LATIN SMALL LETTER O WITH BREVE
+0150;N;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;N;LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152;A;LATIN CAPITAL LIGATURE OE
+0153;A;LATIN SMALL LIGATURE OE
+0154;N;LATIN CAPITAL LETTER R WITH ACUTE
+0155;N;LATIN SMALL LETTER R WITH ACUTE
+0156;N;LATIN CAPITAL LETTER R WITH CEDILLA
+0157;N;LATIN SMALL LETTER R WITH CEDILLA
+0158;N;LATIN CAPITAL LETTER R WITH CARON
+0159;N;LATIN SMALL LETTER R WITH CARON
+015A;N;LATIN CAPITAL LETTER S WITH ACUTE
+015B;N;LATIN SMALL LETTER S WITH ACUTE
+015C;N;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;N;LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;N;LATIN CAPITAL LETTER S WITH CEDILLA
+015F;N;LATIN SMALL LETTER S WITH CEDILLA
+0160;N;LATIN CAPITAL LETTER S WITH CARON
+0161;N;LATIN SMALL LETTER S WITH CARON
+0162;N;LATIN CAPITAL LETTER T WITH CEDILLA
+0163;N;LATIN SMALL LETTER T WITH CEDILLA
+0164;N;LATIN CAPITAL LETTER T WITH CARON
+0165;N;LATIN SMALL LETTER T WITH CARON
+0166;A;LATIN CAPITAL LETTER T WITH STROKE
+0167;A;LATIN SMALL LETTER T WITH STROKE
+0168;N;LATIN CAPITAL LETTER U WITH TILDE
+0169;N;LATIN SMALL LETTER U WITH TILDE
+016A;N;LATIN CAPITAL LETTER U WITH MACRON
+016B;A;LATIN SMALL LETTER U WITH MACRON
+016C;N;LATIN CAPITAL LETTER U WITH BREVE
+016D;N;LATIN SMALL LETTER U WITH BREVE
+016E;N;LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;N;LATIN SMALL LETTER U WITH RING ABOVE
+0170;N;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;N;LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;N;LATIN CAPITAL LETTER U WITH OGONEK
+0173;N;LATIN SMALL LETTER U WITH OGONEK
+0174;N;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;N;LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;N;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;N;LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;N;LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;N;LATIN CAPITAL LETTER Z WITH ACUTE
+017A;N;LATIN SMALL LETTER Z WITH ACUTE
+017B;N;LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;N;LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;N;LATIN CAPITAL LETTER Z WITH CARON
+017E;N;LATIN SMALL LETTER Z WITH CARON
+017F;N;LATIN SMALL LETTER LONG S
+0180;N;LATIN SMALL LETTER B WITH STROKE
+0181;N;LATIN CAPITAL LETTER B WITH HOOK
+0182;N;LATIN CAPITAL LETTER B WITH TOPBAR
+0183;N;LATIN SMALL LETTER B WITH TOPBAR
+0184;N;LATIN CAPITAL LETTER TONE SIX
+0185;N;LATIN SMALL LETTER TONE SIX
+0186;N;LATIN CAPITAL LETTER OPEN O
+0187;N;LATIN CAPITAL LETTER C WITH HOOK
+0188;N;LATIN SMALL LETTER C WITH HOOK
+0189;N;LATIN CAPITAL LETTER AFRICAN D
+018A;N;LATIN CAPITAL LETTER D WITH HOOK
+018B;N;LATIN CAPITAL LETTER D WITH TOPBAR
+018C;N;LATIN SMALL LETTER D WITH TOPBAR
+018D;N;LATIN SMALL LETTER TURNED DELTA
+018E;N;LATIN CAPITAL LETTER REVERSED E
+018F;N;LATIN CAPITAL LETTER SCHWA
+0190;N;LATIN CAPITAL LETTER OPEN E
+0191;N;LATIN CAPITAL LETTER F WITH HOOK
+0192;N;LATIN SMALL LETTER F WITH HOOK
+0193;N;LATIN CAPITAL LETTER G WITH HOOK
+0194;N;LATIN CAPITAL LETTER GAMMA
+0195;N;LATIN SMALL LETTER HV
+0196;N;LATIN CAPITAL LETTER IOTA
+0197;N;LATIN CAPITAL LETTER I WITH STROKE
+0198;N;LATIN CAPITAL LETTER K WITH HOOK
+0199;N;LATIN SMALL LETTER K WITH HOOK
+019A;N;LATIN SMALL LETTER L WITH BAR
+019B;N;LATIN SMALL LETTER LAMBDA WITH STROKE
+019C;N;LATIN CAPITAL LETTER TURNED M
+019D;N;LATIN CAPITAL LETTER N WITH LEFT HOOK
+019E;N;LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019F;N;LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0;N;LATIN CAPITAL LETTER O WITH HORN
+01A1;N;LATIN SMALL LETTER O WITH HORN
+01A2;N;LATIN CAPITAL LETTER OI
+01A3;N;LATIN SMALL LETTER OI
+01A4;N;LATIN CAPITAL LETTER P WITH HOOK
+01A5;N;LATIN SMALL LETTER P WITH HOOK
+01A6;N;LATIN LETTER YR
+01A7;N;LATIN CAPITAL LETTER TONE TWO
+01A8;N;LATIN SMALL LETTER TONE TWO
+01A9;N;LATIN CAPITAL LETTER ESH
+01AA;N;LATIN LETTER REVERSED ESH LOOP
+01AB;N;LATIN SMALL LETTER T WITH PALATAL HOOK
+01AC;N;LATIN CAPITAL LETTER T WITH HOOK
+01AD;N;LATIN SMALL LETTER T WITH HOOK
+01AE;N;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF;N;LATIN CAPITAL LETTER U WITH HORN
+01B0;N;LATIN SMALL LETTER U WITH HORN
+01B1;N;LATIN CAPITAL LETTER UPSILON
+01B2;N;LATIN CAPITAL LETTER V WITH HOOK
+01B3;N;LATIN CAPITAL LETTER Y WITH HOOK
+01B4;N;LATIN SMALL LETTER Y WITH HOOK
+01B5;N;LATIN CAPITAL LETTER Z WITH STROKE
+01B6;N;LATIN SMALL LETTER Z WITH STROKE
+01B7;N;LATIN CAPITAL LETTER EZH
+01B8;N;LATIN CAPITAL LETTER EZH REVERSED
+01B9;N;LATIN SMALL LETTER EZH REVERSED
+01BA;N;LATIN SMALL LETTER EZH WITH TAIL
+01BB;N;LATIN LETTER TWO WITH STROKE
+01BC;N;LATIN CAPITAL LETTER TONE FIVE
+01BD;N;LATIN SMALL LETTER TONE FIVE
+01BE;N;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01BF;N;LATIN LETTER WYNN
+01C0;N;LATIN LETTER DENTAL CLICK
+01C1;N;LATIN LETTER LATERAL CLICK
+01C2;N;LATIN LETTER ALVEOLAR CLICK
+01C3;N;LATIN LETTER RETROFLEX CLICK
+01C4;N;LATIN CAPITAL LETTER DZ WITH CARON
+01C5;N;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;N;LATIN SMALL LETTER DZ WITH CARON
+01C7;N;LATIN CAPITAL LETTER LJ
+01C8;N;LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;N;LATIN SMALL LETTER LJ
+01CA;N;LATIN CAPITAL LETTER NJ
+01CB;N;LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;N;LATIN SMALL LETTER NJ
+01CD;N;LATIN CAPITAL LETTER A WITH CARON
+01CE;A;LATIN SMALL LETTER A WITH CARON
+01CF;N;LATIN CAPITAL LETTER I WITH CARON
+01D0;A;LATIN SMALL LETTER I WITH CARON
+01D1;N;LATIN CAPITAL LETTER O WITH CARON
+01D2;A;LATIN SMALL LETTER O WITH CARON
+01D3;N;LATIN CAPITAL LETTER U WITH CARON
+01D4;A;LATIN SMALL LETTER U WITH CARON
+01D5;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;A;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;A;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;A;LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;A;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DD;N;LATIN SMALL LETTER TURNED E
+01DE;N;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;N;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;N;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;N;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;N;LATIN CAPITAL LETTER AE WITH MACRON
+01E3;N;LATIN SMALL LETTER AE WITH MACRON
+01E4;N;LATIN CAPITAL LETTER G WITH STROKE
+01E5;N;LATIN SMALL LETTER G WITH STROKE
+01E6;N;LATIN CAPITAL LETTER G WITH CARON
+01E7;N;LATIN SMALL LETTER G WITH CARON
+01E8;N;LATIN CAPITAL LETTER K WITH CARON
+01E9;N;LATIN SMALL LETTER K WITH CARON
+01EA;N;LATIN CAPITAL LETTER O WITH OGONEK
+01EB;N;LATIN SMALL LETTER O WITH OGONEK
+01EC;N;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;N;LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;N;LATIN CAPITAL LETTER EZH WITH CARON
+01EF;N;LATIN SMALL LETTER EZH WITH CARON
+01F0;N;LATIN SMALL LETTER J WITH CARON
+01F1;N;LATIN CAPITAL LETTER DZ
+01F2;N;LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;N;LATIN SMALL LETTER DZ
+01F4;N;LATIN CAPITAL LETTER G WITH ACUTE
+01F5;N;LATIN SMALL LETTER G WITH ACUTE
+01F6;N;LATIN CAPITAL LETTER HWAIR
+01F7;N;LATIN CAPITAL LETTER WYNN
+01F8;N;LATIN CAPITAL LETTER N WITH GRAVE
+01F9;N;LATIN SMALL LETTER N WITH GRAVE
+01FA;N;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;N;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;N;LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;N;LATIN SMALL LETTER AE WITH ACUTE
+01FE;N;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;N;LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;N;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;N;LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;N;LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;N;LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;N;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;N;LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;N;LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;N;LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;N;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;N;LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;N;LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;N;LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;N;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;N;LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;N;LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;N;LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;N;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;N;LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;N;LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;N;LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;N;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;N;LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;N;LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;N;LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;N;LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;N;LATIN SMALL LETTER S WITH COMMA BELOW
+021A;N;LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;N;LATIN SMALL LETTER T WITH COMMA BELOW
+021C;N;LATIN CAPITAL LETTER YOGH
+021D;N;LATIN SMALL LETTER YOGH
+021E;N;LATIN CAPITAL LETTER H WITH CARON
+021F;N;LATIN SMALL LETTER H WITH CARON
+0222;N;LATIN CAPITAL LETTER OU
+0223;N;LATIN SMALL LETTER OU
+0224;N;LATIN CAPITAL LETTER Z WITH HOOK
+0225;N;LATIN SMALL LETTER Z WITH HOOK
+0226;N;LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;N;LATIN SMALL LETTER A WITH DOT ABOVE
+0228;N;LATIN CAPITAL LETTER E WITH CEDILLA
+0229;N;LATIN SMALL LETTER E WITH CEDILLA
+022A;N;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;N;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;N;LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;N;LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;N;LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;N;LATIN SMALL LETTER O WITH DOT ABOVE
+0230;N;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;N;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;N;LATIN CAPITAL LETTER Y WITH MACRON
+0233;N;LATIN SMALL LETTER Y WITH MACRON
+0250;N;LATIN SMALL LETTER TURNED A
+0251;A;LATIN SMALL LETTER ALPHA
+0252;N;LATIN SMALL LETTER TURNED ALPHA
+0253;N;LATIN SMALL LETTER B WITH HOOK
+0254;N;LATIN SMALL LETTER OPEN O
+0255;N;LATIN SMALL LETTER C WITH CURL
+0256;N;LATIN SMALL LETTER D WITH TAIL
+0257;N;LATIN SMALL LETTER D WITH HOOK
+0258;N;LATIN SMALL LETTER REVERSED E
+0259;N;LATIN SMALL LETTER SCHWA
+025A;N;LATIN SMALL LETTER SCHWA WITH HOOK
+025B;N;LATIN SMALL LETTER OPEN E
+025C;N;LATIN SMALL LETTER REVERSED OPEN E
+025D;N;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E;N;LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025F;N;LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260;N;LATIN SMALL LETTER G WITH HOOK
+0261;A;LATIN SMALL LETTER SCRIPT G
+0262;N;LATIN LETTER SMALL CAPITAL G
+0263;N;LATIN SMALL LETTER GAMMA
+0264;N;LATIN SMALL LETTER RAMS HORN
+0265;N;LATIN SMALL LETTER TURNED H
+0266;N;LATIN SMALL LETTER H WITH HOOK
+0267;N;LATIN SMALL LETTER HENG WITH HOOK
+0268;N;LATIN SMALL LETTER I WITH STROKE
+0269;N;LATIN SMALL LETTER IOTA
+026A;N;LATIN LETTER SMALL CAPITAL I
+026B;N;LATIN SMALL LETTER L WITH MIDDLE TILDE
+026C;N;LATIN SMALL LETTER L WITH BELT
+026D;N;LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026E;N;LATIN SMALL LETTER LEZH
+026F;N;LATIN SMALL LETTER TURNED M
+0270;N;LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271;N;LATIN SMALL LETTER M WITH HOOK
+0272;N;LATIN SMALL LETTER N WITH LEFT HOOK
+0273;N;LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274;N;LATIN LETTER SMALL CAPITAL N
+0275;N;LATIN SMALL LETTER BARRED O
+0276;N;LATIN LETTER SMALL CAPITAL OE
+0277;N;LATIN SMALL LETTER CLOSED OMEGA
+0278;N;LATIN SMALL LETTER PHI
+0279;N;LATIN SMALL LETTER TURNED R
+027A;N;LATIN SMALL LETTER TURNED R WITH LONG LEG
+027B;N;LATIN SMALL LETTER TURNED R WITH HOOK
+027C;N;LATIN SMALL LETTER R WITH LONG LEG
+027D;N;LATIN SMALL LETTER R WITH TAIL
+027E;N;LATIN SMALL LETTER R WITH FISHHOOK
+027F;N;LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280;N;LATIN LETTER SMALL CAPITAL R
+0281;N;LATIN LETTER SMALL CAPITAL INVERTED R
+0282;N;LATIN SMALL LETTER S WITH HOOK
+0283;N;LATIN SMALL LETTER ESH
+0284;N;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285;N;LATIN SMALL LETTER SQUAT REVERSED ESH
+0286;N;LATIN SMALL LETTER ESH WITH CURL
+0287;N;LATIN SMALL LETTER TURNED T
+0288;N;LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289;N;LATIN SMALL LETTER U BAR
+028A;N;LATIN SMALL LETTER UPSILON
+028B;N;LATIN SMALL LETTER V WITH HOOK
+028C;N;LATIN SMALL LETTER TURNED V
+028D;N;LATIN SMALL LETTER TURNED W
+028E;N;LATIN SMALL LETTER TURNED Y
+028F;N;LATIN LETTER SMALL CAPITAL Y
+0290;N;LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291;N;LATIN SMALL LETTER Z WITH CURL
+0292;N;LATIN SMALL LETTER EZH
+0293;N;LATIN SMALL LETTER EZH WITH CURL
+0294;N;LATIN LETTER GLOTTAL STOP
+0295;N;LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296;N;LATIN LETTER INVERTED GLOTTAL STOP
+0297;N;LATIN LETTER STRETCHED C
+0298;N;LATIN LETTER BILABIAL CLICK
+0299;N;LATIN LETTER SMALL CAPITAL B
+029A;N;LATIN SMALL LETTER CLOSED OPEN E
+029B;N;LATIN LETTER SMALL CAPITAL G WITH HOOK
+029C;N;LATIN LETTER SMALL CAPITAL H
+029D;N;LATIN SMALL LETTER J WITH CROSSED-TAIL
+029E;N;LATIN SMALL LETTER TURNED K
+029F;N;LATIN LETTER SMALL CAPITAL L
+02A0;N;LATIN SMALL LETTER Q WITH HOOK
+02A1;N;LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2;N;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02A3;N;LATIN SMALL LETTER DZ DIGRAPH
+02A4;N;LATIN SMALL LETTER DEZH DIGRAPH
+02A5;N;LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A6;N;LATIN SMALL LETTER TS DIGRAPH
+02A7;N;LATIN SMALL LETTER TESH DIGRAPH
+02A8;N;LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02A9;N;LATIN SMALL LETTER FENG DIGRAPH
+02AA;N;LATIN SMALL LETTER LS DIGRAPH
+02AB;N;LATIN SMALL LETTER LZ DIGRAPH
+02AC;N;LATIN LETTER BILABIAL PERCUSSIVE
+02AD;N;LATIN LETTER BIDENTAL PERCUSSIVE
+02B0;N;MODIFIER LETTER SMALL H
+02B1;N;MODIFIER LETTER SMALL H WITH HOOK
+02B2;N;MODIFIER LETTER SMALL J
+02B3;N;MODIFIER LETTER SMALL R
+02B4;N;MODIFIER LETTER SMALL TURNED R
+02B5;N;MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;N;MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;N;MODIFIER LETTER SMALL W
+02B8;N;MODIFIER LETTER SMALL Y
+02B9;N;MODIFIER LETTER PRIME
+02BA;N;MODIFIER LETTER DOUBLE PRIME
+02BB;N;MODIFIER LETTER TURNED COMMA
+02BC;N;MODIFIER LETTER APOSTROPHE
+02BD;N;MODIFIER LETTER REVERSED COMMA
+02BE;N;MODIFIER LETTER RIGHT HALF RING
+02BF;N;MODIFIER LETTER LEFT HALF RING
+02C0;N;MODIFIER LETTER GLOTTAL STOP
+02C1;N;MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2;N;MODIFIER LETTER LEFT ARROWHEAD
+02C3;N;MODIFIER LETTER RIGHT ARROWHEAD
+02C4;N;MODIFIER LETTER UP ARROWHEAD
+02C5;N;MODIFIER LETTER DOWN ARROWHEAD
+02C6;N;MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7;A;CARON
+02C8;N;MODIFIER LETTER VERTICAL LINE
+02C9;A;MODIFIER LETTER MACRON
+02CA;A;MODIFIER LETTER ACUTE ACCENT
+02CB;A;MODIFIER LETTER GRAVE ACCENT
+02CC;N;MODIFIER LETTER LOW VERTICAL LINE
+02CD;A;MODIFIER LETTER LOW MACRON
+02CE;N;MODIFIER LETTER LOW GRAVE ACCENT
+02CF;N;MODIFIER LETTER LOW ACUTE ACCENT
+02D0;A;MODIFIER LETTER TRIANGULAR COLON
+02D1;N;MODIFIER LETTER HALF TRIANGULAR COLON
+02D2;N;MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3;N;MODIFIER LETTER CENTRED LEFT HALF RING
+02D4;N;MODIFIER LETTER UP TACK
+02D5;N;MODIFIER LETTER DOWN TACK
+02D6;N;MODIFIER LETTER PLUS SIGN
+02D7;N;MODIFIER LETTER MINUS SIGN
+02D8;A;BREVE
+02D9;A;DOT ABOVE
+02DA;A;RING ABOVE
+02DB;A;OGONEK
+02DC;N;SMALL TILDE
+02DD;A;DOUBLE ACUTE ACCENT
+02DE;N;MODIFIER LETTER RHOTIC HOOK
+02DF;N;MODIFIER LETTER CROSS ACCENT
+02E0;N;MODIFIER LETTER SMALL GAMMA
+02E1;N;MODIFIER LETTER SMALL L
+02E2;N;MODIFIER LETTER SMALL S
+02E3;N;MODIFIER LETTER SMALL X
+02E4;N;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5;N;MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6;N;MODIFIER LETTER HIGH TONE BAR
+02E7;N;MODIFIER LETTER MID TONE BAR
+02E8;N;MODIFIER LETTER LOW TONE BAR
+02E9;N;MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA;N;MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB;N;MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC;N;MODIFIER LETTER VOICING
+02ED;N;MODIFIER LETTER UNASPIRATED
+02EE;N;MODIFIER LETTER DOUBLE APOSTROPHE
+0300;A;COMBINING GRAVE ACCENT
+0301;A;COMBINING ACUTE ACCENT
+0302;A;COMBINING CIRCUMFLEX ACCENT
+0303;A;COMBINING TILDE
+0304;A;COMBINING MACRON
+0305;A;COMBINING OVERLINE
+0306;A;COMBINING BREVE
+0307;A;COMBINING DOT ABOVE
+0308;A;COMBINING DIAERESIS
+0309;A;COMBINING HOOK ABOVE
+030A;A;COMBINING RING ABOVE
+030B;A;COMBINING DOUBLE ACUTE ACCENT
+030C;A;COMBINING CARON
+030D;A;COMBINING VERTICAL LINE ABOVE
+030E;A;COMBINING DOUBLE VERTICAL LINE ABOVE
+030F;A;COMBINING DOUBLE GRAVE ACCENT
+0310;A;COMBINING CANDRABINDU
+0311;A;COMBINING INVERTED BREVE
+0312;A;COMBINING TURNED COMMA ABOVE
+0313;A;COMBINING COMMA ABOVE
+0314;A;COMBINING REVERSED COMMA ABOVE
+0315;A;COMBINING COMMA ABOVE RIGHT
+0316;A;COMBINING GRAVE ACCENT BELOW
+0317;A;COMBINING ACUTE ACCENT BELOW
+0318;A;COMBINING LEFT TACK BELOW
+0319;A;COMBINING RIGHT TACK BELOW
+031A;A;COMBINING LEFT ANGLE ABOVE
+031B;A;COMBINING HORN
+031C;A;COMBINING LEFT HALF RING BELOW
+031D;A;COMBINING UP TACK BELOW
+031E;A;COMBINING DOWN TACK BELOW
+031F;A;COMBINING PLUS SIGN BELOW
+0320;A;COMBINING MINUS SIGN BELOW
+0321;A;COMBINING PALATALIZED HOOK BELOW
+0322;A;COMBINING RETROFLEX HOOK BELOW
+0323;A;COMBINING DOT BELOW
+0324;A;COMBINING DIAERESIS BELOW
+0325;A;COMBINING RING BELOW
+0326;A;COMBINING COMMA BELOW
+0327;A;COMBINING CEDILLA
+0328;A;COMBINING OGONEK
+0329;A;COMBINING VERTICAL LINE BELOW
+032A;A;COMBINING BRIDGE BELOW
+032B;A;COMBINING INVERTED DOUBLE ARCH BELOW
+032C;A;COMBINING CARON BELOW
+032D;A;COMBINING CIRCUMFLEX ACCENT BELOW
+032E;A;COMBINING BREVE BELOW
+032F;A;COMBINING INVERTED BREVE BELOW
+0330;A;COMBINING TILDE BELOW
+0331;A;COMBINING MACRON BELOW
+0332;A;COMBINING LOW LINE
+0333;A;COMBINING DOUBLE LOW LINE
+0334;A;COMBINING TILDE OVERLAY
+0335;A;COMBINING SHORT STROKE OVERLAY
+0336;A;COMBINING LONG STROKE OVERLAY
+0337;A;COMBINING SHORT SOLIDUS OVERLAY
+0338;A;COMBINING LONG SOLIDUS OVERLAY
+0339;A;COMBINING RIGHT HALF RING BELOW
+033A;A;COMBINING INVERTED BRIDGE BELOW
+033B;A;COMBINING SQUARE BELOW
+033C;A;COMBINING SEAGULL BELOW
+033D;A;COMBINING X ABOVE
+033E;A;COMBINING VERTICAL TILDE
+033F;A;COMBINING DOUBLE OVERLINE
+0340;A;COMBINING GRAVE TONE MARK
+0341;A;COMBINING ACUTE TONE MARK
+0342;A;COMBINING GREEK PERISPOMENI
+0343;A;COMBINING GREEK KORONIS
+0344;A;COMBINING GREEK DIALYTIKA TONOS
+0345;A;COMBINING GREEK YPOGEGRAMMENI
+0346;A;COMBINING BRIDGE ABOVE
+0347;A;COMBINING EQUALS SIGN BELOW
+0348;A;COMBINING DOUBLE VERTICAL LINE BELOW
+0349;A;COMBINING LEFT ANGLE BELOW
+034A;A;COMBINING NOT TILDE ABOVE
+034B;A;COMBINING HOMOTHETIC ABOVE
+034C;A;COMBINING ALMOST EQUAL TO ABOVE
+034D;A;COMBINING LEFT RIGHT ARROW BELOW
+034E;A;COMBINING UPWARDS ARROW BELOW
+0360;A;COMBINING DOUBLE TILDE
+0361;A;COMBINING DOUBLE INVERTED BREVE
+0362;A;COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0374;N;GREEK NUMERAL SIGN
+0375;N;GREEK LOWER NUMERAL SIGN
+037A;N;GREEK YPOGEGRAMMENI
+037E;N;GREEK QUESTION MARK
+0384;N;GREEK TONOS
+0385;N;GREEK DIALYTIKA TONOS
+0386;N;GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;N;GREEK ANO TELEIA
+0388;N;GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;N;GREEK CAPITAL LETTER ETA WITH TONOS
+038A;N;GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;N;GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;N;GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;N;GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391;A;GREEK CAPITAL LETTER ALPHA
+0392;A;GREEK CAPITAL LETTER BETA
+0393;A;GREEK CAPITAL LETTER GAMMA
+0394;A;GREEK CAPITAL LETTER DELTA
+0395;A;GREEK CAPITAL LETTER EPSILON
+0396;A;GREEK CAPITAL LETTER ZETA
+0397;A;GREEK CAPITAL LETTER ETA
+0398;A;GREEK CAPITAL LETTER THETA
+0399;A;GREEK CAPITAL LETTER IOTA
+039A;A;GREEK CAPITAL LETTER KAPPA
+039B;A;GREEK CAPITAL LETTER LAMDA
+039C;A;GREEK CAPITAL LETTER MU
+039D;A;GREEK CAPITAL LETTER NU
+039E;A;GREEK CAPITAL LETTER XI
+039F;A;GREEK CAPITAL LETTER OMICRON
+03A0;A;GREEK CAPITAL LETTER PI
+03A1;A;GREEK CAPITAL LETTER RHO
+03A3;A;GREEK CAPITAL LETTER SIGMA
+03A4;A;GREEK CAPITAL LETTER TAU
+03A5;A;GREEK CAPITAL LETTER UPSILON
+03A6;A;GREEK CAPITAL LETTER PHI
+03A7;A;GREEK CAPITAL LETTER CHI
+03A8;A;GREEK CAPITAL LETTER PSI
+03A9;A;GREEK CAPITAL LETTER OMEGA
+03AA;N;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;N;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;N;GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;N;GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;N;GREEK SMALL LETTER ETA WITH TONOS
+03AF;N;GREEK SMALL LETTER IOTA WITH TONOS
+03B0;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1;A;GREEK SMALL LETTER ALPHA
+03B2;A;GREEK SMALL LETTER BETA
+03B3;A;GREEK SMALL LETTER GAMMA
+03B4;A;GREEK SMALL LETTER DELTA
+03B5;A;GREEK SMALL LETTER EPSILON
+03B6;A;GREEK SMALL LETTER ZETA
+03B7;A;GREEK SMALL LETTER ETA
+03B8;A;GREEK SMALL LETTER THETA
+03B9;A;GREEK SMALL LETTER IOTA
+03BA;A;GREEK SMALL LETTER KAPPA
+03BB;A;GREEK SMALL LETTER LAMDA
+03BC;A;GREEK SMALL LETTER MU
+03BD;A;GREEK SMALL LETTER NU
+03BE;A;GREEK SMALL LETTER XI
+03BF;A;GREEK SMALL LETTER OMICRON
+03C0;A;GREEK SMALL LETTER PI
+03C1;A;GREEK SMALL LETTER RHO
+03C2;N;GREEK SMALL LETTER FINAL SIGMA
+03C3;A;GREEK SMALL LETTER SIGMA
+03C4;A;GREEK SMALL LETTER TAU
+03C5;A;GREEK SMALL LETTER UPSILON
+03C6;A;GREEK SMALL LETTER PHI
+03C7;A;GREEK SMALL LETTER CHI
+03C8;A;GREEK SMALL LETTER PSI
+03C9;A;GREEK SMALL LETTER OMEGA
+03CA;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;N;GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;N;GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;N;GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;N;GREEK BETA SYMBOL
+03D1;N;GREEK THETA SYMBOL
+03D2;N;GREEK UPSILON WITH HOOK SYMBOL
+03D3;N;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;N;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;N;GREEK PHI SYMBOL
+03D6;N;GREEK PI SYMBOL
+03D7;N;GREEK KAI SYMBOL
+03DA;N;GREEK LETTER STIGMA
+03DB;N;GREEK SMALL LETTER STIGMA
+03DC;N;GREEK LETTER DIGAMMA
+03DD;N;GREEK SMALL LETTER DIGAMMA
+03DE;N;GREEK LETTER KOPPA
+03DF;N;GREEK SMALL LETTER KOPPA
+03E0;N;GREEK LETTER SAMPI
+03E1;N;GREEK SMALL LETTER SAMPI
+03E2;N;COPTIC CAPITAL LETTER SHEI
+03E3;N;COPTIC SMALL LETTER SHEI
+03E4;N;COPTIC CAPITAL LETTER FEI
+03E5;N;COPTIC SMALL LETTER FEI
+03E6;N;COPTIC CAPITAL LETTER KHEI
+03E7;N;COPTIC SMALL LETTER KHEI
+03E8;N;COPTIC CAPITAL LETTER HORI
+03E9;N;COPTIC SMALL LETTER HORI
+03EA;N;COPTIC CAPITAL LETTER GANGIA
+03EB;N;COPTIC SMALL LETTER GANGIA
+03EC;N;COPTIC CAPITAL LETTER SHIMA
+03ED;N;COPTIC SMALL LETTER SHIMA
+03EE;N;COPTIC CAPITAL LETTER DEI
+03EF;N;COPTIC SMALL LETTER DEI
+03F0;N;GREEK KAPPA SYMBOL
+03F1;N;GREEK RHO SYMBOL
+03F2;N;GREEK LUNATE SIGMA SYMBOL
+03F3;N;GREEK LETTER YOT
+0400;N;CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;A;CYRILLIC CAPITAL LETTER IO
+0402;N;CYRILLIC CAPITAL LETTER DJE
+0403;N;CYRILLIC CAPITAL LETTER GJE
+0404;N;CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;N;CYRILLIC CAPITAL LETTER DZE
+0406;N;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;N;CYRILLIC CAPITAL LETTER YI
+0408;N;CYRILLIC CAPITAL LETTER JE
+0409;N;CYRILLIC CAPITAL LETTER LJE
+040A;N;CYRILLIC CAPITAL LETTER NJE
+040B;N;CYRILLIC CAPITAL LETTER TSHE
+040C;N;CYRILLIC CAPITAL LETTER KJE
+040D;N;CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;N;CYRILLIC CAPITAL LETTER SHORT U
+040F;N;CYRILLIC CAPITAL LETTER DZHE
+0410;A;CYRILLIC CAPITAL LETTER A
+0411;A;CYRILLIC CAPITAL LETTER BE
+0412;A;CYRILLIC CAPITAL LETTER VE
+0413;A;CYRILLIC CAPITAL LETTER GHE
+0414;A;CYRILLIC CAPITAL LETTER DE
+0415;A;CYRILLIC CAPITAL LETTER IE
+0416;A;CYRILLIC CAPITAL LETTER ZHE
+0417;A;CYRILLIC CAPITAL LETTER ZE
+0418;A;CYRILLIC CAPITAL LETTER I
+0419;A;CYRILLIC CAPITAL LETTER SHORT I
+041A;A;CYRILLIC CAPITAL LETTER KA
+041B;A;CYRILLIC CAPITAL LETTER EL
+041C;A;CYRILLIC CAPITAL LETTER EM
+041D;A;CYRILLIC CAPITAL LETTER EN
+041E;A;CYRILLIC CAPITAL LETTER O
+041F;A;CYRILLIC CAPITAL LETTER PE
+0420;A;CYRILLIC CAPITAL LETTER ER
+0421;A;CYRILLIC CAPITAL LETTER ES
+0422;A;CYRILLIC CAPITAL LETTER TE
+0423;A;CYRILLIC CAPITAL LETTER U
+0424;A;CYRILLIC CAPITAL LETTER EF
+0425;A;CYRILLIC CAPITAL LETTER HA
+0426;A;CYRILLIC CAPITAL LETTER TSE
+0427;A;CYRILLIC CAPITAL LETTER CHE
+0428;A;CYRILLIC CAPITAL LETTER SHA
+0429;A;CYRILLIC CAPITAL LETTER SHCHA
+042A;A;CYRILLIC CAPITAL LETTER HARD SIGN
+042B;A;CYRILLIC CAPITAL LETTER YERU
+042C;A;CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;A;CYRILLIC CAPITAL LETTER E
+042E;A;CYRILLIC CAPITAL LETTER YU
+042F;A;CYRILLIC CAPITAL LETTER YA
+0430;A;CYRILLIC SMALL LETTER A
+0431;A;CYRILLIC SMALL LETTER BE
+0432;A;CYRILLIC SMALL LETTER VE
+0433;A;CYRILLIC SMALL LETTER GHE
+0434;A;CYRILLIC SMALL LETTER DE
+0435;A;CYRILLIC SMALL LETTER IE
+0436;A;CYRILLIC SMALL LETTER ZHE
+0437;A;CYRILLIC SMALL LETTER ZE
+0438;A;CYRILLIC SMALL LETTER I
+0439;A;CYRILLIC SMALL LETTER SHORT I
+043A;A;CYRILLIC SMALL LETTER KA
+043B;A;CYRILLIC SMALL LETTER EL
+043C;A;CYRILLIC SMALL LETTER EM
+043D;A;CYRILLIC SMALL LETTER EN
+043E;A;CYRILLIC SMALL LETTER O
+043F;A;CYRILLIC SMALL LETTER PE
+0440;A;CYRILLIC SMALL LETTER ER
+0441;A;CYRILLIC SMALL LETTER ES
+0442;A;CYRILLIC SMALL LETTER TE
+0443;A;CYRILLIC SMALL LETTER U
+0444;A;CYRILLIC SMALL LETTER EF
+0445;A;CYRILLIC SMALL LETTER HA
+0446;A;CYRILLIC SMALL LETTER TSE
+0447;A;CYRILLIC SMALL LETTER CHE
+0448;A;CYRILLIC SMALL LETTER SHA
+0449;A;CYRILLIC SMALL LETTER SHCHA
+044A;A;CYRILLIC SMALL LETTER HARD SIGN
+044B;A;CYRILLIC SMALL LETTER YERU
+044C;A;CYRILLIC SMALL LETTER SOFT SIGN
+044D;A;CYRILLIC SMALL LETTER E
+044E;A;CYRILLIC SMALL LETTER YU
+044F;A;CYRILLIC SMALL LETTER YA
+0450;N;CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;A;CYRILLIC SMALL LETTER IO
+0452;N;CYRILLIC SMALL LETTER DJE
+0453;N;CYRILLIC SMALL LETTER GJE
+0454;N;CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;N;CYRILLIC SMALL LETTER DZE
+0456;N;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;N;CYRILLIC SMALL LETTER YI
+0458;N;CYRILLIC SMALL LETTER JE
+0459;N;CYRILLIC SMALL LETTER LJE
+045A;N;CYRILLIC SMALL LETTER NJE
+045B;N;CYRILLIC SMALL LETTER TSHE
+045C;N;CYRILLIC SMALL LETTER KJE
+045D;N;CYRILLIC SMALL LETTER I WITH GRAVE
+045E;N;CYRILLIC SMALL LETTER SHORT U
+045F;N;CYRILLIC SMALL LETTER DZHE
+0460;N;CYRILLIC CAPITAL LETTER OMEGA
+0461;N;CYRILLIC SMALL LETTER OMEGA
+0462;N;CYRILLIC CAPITAL LETTER YAT
+0463;N;CYRILLIC SMALL LETTER YAT
+0464;N;CYRILLIC CAPITAL LETTER IOTIFIED E
+0465;N;CYRILLIC SMALL LETTER IOTIFIED E
+0466;N;CYRILLIC CAPITAL LETTER LITTLE YUS
+0467;N;CYRILLIC SMALL LETTER LITTLE YUS
+0468;N;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469;N;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A;N;CYRILLIC CAPITAL LETTER BIG YUS
+046B;N;CYRILLIC SMALL LETTER BIG YUS
+046C;N;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D;N;CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E;N;CYRILLIC CAPITAL LETTER KSI
+046F;N;CYRILLIC SMALL LETTER KSI
+0470;N;CYRILLIC CAPITAL LETTER PSI
+0471;N;CYRILLIC SMALL LETTER PSI
+0472;N;CYRILLIC CAPITAL LETTER FITA
+0473;N;CYRILLIC SMALL LETTER FITA
+0474;N;CYRILLIC CAPITAL LETTER IZHITSA
+0475;N;CYRILLIC SMALL LETTER IZHITSA
+0476;N;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;N;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478;N;CYRILLIC CAPITAL LETTER UK
+0479;N;CYRILLIC SMALL LETTER UK
+047A;N;CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B;N;CYRILLIC SMALL LETTER ROUND OMEGA
+047C;N;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D;N;CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E;N;CYRILLIC CAPITAL LETTER OT
+047F;N;CYRILLIC SMALL LETTER OT
+0480;N;CYRILLIC CAPITAL LETTER KOPPA
+0481;N;CYRILLIC SMALL LETTER KOPPA
+0482;N;CYRILLIC THOUSANDS SIGN
+0483;N;COMBINING CYRILLIC TITLO
+0484;N;COMBINING CYRILLIC PALATALIZATION
+0485;N;COMBINING CYRILLIC DASIA PNEUMATA
+0486;N;COMBINING CYRILLIC PSILI PNEUMATA
+0488;N;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489;N;COMBINING CYRILLIC MILLIONS SIGN
+048C;N;CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D;N;CYRILLIC SMALL LETTER SEMISOFT SIGN
+048E;N;CYRILLIC CAPITAL LETTER ER WITH TICK
+048F;N;CYRILLIC SMALL LETTER ER WITH TICK
+0490;N;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491;N;CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492;N;CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493;N;CYRILLIC SMALL LETTER GHE WITH STROKE
+0494;N;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495;N;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496;N;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497;N;CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498;N;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499;N;CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A;N;CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B;N;CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C;N;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D;N;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E;N;CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F;N;CYRILLIC SMALL LETTER KA WITH STROKE
+04A0;N;CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1;N;CYRILLIC SMALL LETTER BASHKIR KA
+04A2;N;CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3;N;CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4;N;CYRILLIC CAPITAL LIGATURE EN GHE
+04A5;N;CYRILLIC SMALL LIGATURE EN GHE
+04A6;N;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7;N;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8;N;CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9;N;CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA;N;CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB;N;CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC;N;CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD;N;CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE;N;CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF;N;CYRILLIC SMALL LETTER STRAIGHT U
+04B0;N;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1;N;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2;N;CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3;N;CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4;N;CYRILLIC CAPITAL LIGATURE TE TSE
+04B5;N;CYRILLIC SMALL LIGATURE TE TSE
+04B6;N;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7;N;CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8;N;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9;N;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA;N;CYRILLIC CAPITAL LETTER SHHA
+04BB;N;CYRILLIC SMALL LETTER SHHA
+04BC;N;CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD;N;CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE;N;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF;N;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0;N;CYRILLIC LETTER PALOCHKA
+04C1;N;CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;N;CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3;N;CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4;N;CYRILLIC SMALL LETTER KA WITH HOOK
+04C7;N;CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8;N;CYRILLIC SMALL LETTER EN WITH HOOK
+04CB;N;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC;N;CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0;N;CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;N;CYRILLIC SMALL LETTER A WITH BREVE
+04D2;N;CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;N;CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4;N;CYRILLIC CAPITAL LIGATURE A IE
+04D5;N;CYRILLIC SMALL LIGATURE A IE
+04D6;N;CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;N;CYRILLIC SMALL LETTER IE WITH BREVE
+04D8;N;CYRILLIC CAPITAL LETTER SCHWA
+04D9;N;CYRILLIC SMALL LETTER SCHWA
+04DA;N;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;N;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;N;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;N;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;N;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;N;CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0;N;CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1;N;CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2;N;CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;N;CYRILLIC SMALL LETTER I WITH MACRON
+04E4;N;CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;N;CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;N;CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;N;CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8;N;CYRILLIC CAPITAL LETTER BARRED O
+04E9;N;CYRILLIC SMALL LETTER BARRED O
+04EA;N;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;N;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;N;CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;N;CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;N;CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;N;CYRILLIC SMALL LETTER U WITH MACRON
+04F0;N;CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;N;CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;N;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;N;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;N;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;N;CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8;N;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;N;CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0531;N;ARMENIAN CAPITAL LETTER AYB
+0532;N;ARMENIAN CAPITAL LETTER BEN
+0533;N;ARMENIAN CAPITAL LETTER GIM
+0534;N;ARMENIAN CAPITAL LETTER DA
+0535;N;ARMENIAN CAPITAL LETTER ECH
+0536;N;ARMENIAN CAPITAL LETTER ZA
+0537;N;ARMENIAN CAPITAL LETTER EH
+0538;N;ARMENIAN CAPITAL LETTER ET
+0539;N;ARMENIAN CAPITAL LETTER TO
+053A;N;ARMENIAN CAPITAL LETTER ZHE
+053B;N;ARMENIAN CAPITAL LETTER INI
+053C;N;ARMENIAN CAPITAL LETTER LIWN
+053D;N;ARMENIAN CAPITAL LETTER XEH
+053E;N;ARMENIAN CAPITAL LETTER CA
+053F;N;ARMENIAN CAPITAL LETTER KEN
+0540;N;ARMENIAN CAPITAL LETTER HO
+0541;N;ARMENIAN CAPITAL LETTER JA
+0542;N;ARMENIAN CAPITAL LETTER GHAD
+0543;N;ARMENIAN CAPITAL LETTER CHEH
+0544;N;ARMENIAN CAPITAL LETTER MEN
+0545;N;ARMENIAN CAPITAL LETTER YI
+0546;N;ARMENIAN CAPITAL LETTER NOW
+0547;N;ARMENIAN CAPITAL LETTER SHA
+0548;N;ARMENIAN CAPITAL LETTER VO
+0549;N;ARMENIAN CAPITAL LETTER CHA
+054A;N;ARMENIAN CAPITAL LETTER PEH
+054B;N;ARMENIAN CAPITAL LETTER JHEH
+054C;N;ARMENIAN CAPITAL LETTER RA
+054D;N;ARMENIAN CAPITAL LETTER SEH
+054E;N;ARMENIAN CAPITAL LETTER VEW
+054F;N;ARMENIAN CAPITAL LETTER TIWN
+0550;N;ARMENIAN CAPITAL LETTER REH
+0551;N;ARMENIAN CAPITAL LETTER CO
+0552;N;ARMENIAN CAPITAL LETTER YIWN
+0553;N;ARMENIAN CAPITAL LETTER PIWR
+0554;N;ARMENIAN CAPITAL LETTER KEH
+0555;N;ARMENIAN CAPITAL LETTER OH
+0556;N;ARMENIAN CAPITAL LETTER FEH
+0559;N;ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A;N;ARMENIAN APOSTROPHE
+055B;N;ARMENIAN EMPHASIS MARK
+055C;N;ARMENIAN EXCLAMATION MARK
+055D;N;ARMENIAN COMMA
+055E;N;ARMENIAN QUESTION MARK
+055F;N;ARMENIAN ABBREVIATION MARK
+0561;N;ARMENIAN SMALL LETTER AYB
+0562;N;ARMENIAN SMALL LETTER BEN
+0563;N;ARMENIAN SMALL LETTER GIM
+0564;N;ARMENIAN SMALL LETTER DA
+0565;N;ARMENIAN SMALL LETTER ECH
+0566;N;ARMENIAN SMALL LETTER ZA
+0567;N;ARMENIAN SMALL LETTER EH
+0568;N;ARMENIAN SMALL LETTER ET
+0569;N;ARMENIAN SMALL LETTER TO
+056A;N;ARMENIAN SMALL LETTER ZHE
+056B;N;ARMENIAN SMALL LETTER INI
+056C;N;ARMENIAN SMALL LETTER LIWN
+056D;N;ARMENIAN SMALL LETTER XEH
+056E;N;ARMENIAN SMALL LETTER CA
+056F;N;ARMENIAN SMALL LETTER KEN
+0570;N;ARMENIAN SMALL LETTER HO
+0571;N;ARMENIAN SMALL LETTER JA
+0572;N;ARMENIAN SMALL LETTER GHAD
+0573;N;ARMENIAN SMALL LETTER CHEH
+0574;N;ARMENIAN SMALL LETTER MEN
+0575;N;ARMENIAN SMALL LETTER YI
+0576;N;ARMENIAN SMALL LETTER NOW
+0577;N;ARMENIAN SMALL LETTER SHA
+0578;N;ARMENIAN SMALL LETTER VO
+0579;N;ARMENIAN SMALL LETTER CHA
+057A;N;ARMENIAN SMALL LETTER PEH
+057B;N;ARMENIAN SMALL LETTER JHEH
+057C;N;ARMENIAN SMALL LETTER RA
+057D;N;ARMENIAN SMALL LETTER SEH
+057E;N;ARMENIAN SMALL LETTER VEW
+057F;N;ARMENIAN SMALL LETTER TIWN
+0580;N;ARMENIAN SMALL LETTER REH
+0581;N;ARMENIAN SMALL LETTER CO
+0582;N;ARMENIAN SMALL LETTER YIWN
+0583;N;ARMENIAN SMALL LETTER PIWR
+0584;N;ARMENIAN SMALL LETTER KEH
+0585;N;ARMENIAN SMALL LETTER OH
+0586;N;ARMENIAN SMALL LETTER FEH
+0587;N;ARMENIAN SMALL LIGATURE ECH YIWN
+0589;N;ARMENIAN FULL STOP
+058A;N;ARMENIAN HYPHEN
+0591;N;HEBREW ACCENT ETNAHTA
+0592;N;HEBREW ACCENT SEGOL
+0593;N;HEBREW ACCENT SHALSHELET
+0594;N;HEBREW ACCENT ZAQEF QATAN
+0595;N;HEBREW ACCENT ZAQEF GADOL
+0596;N;HEBREW ACCENT TIPEHA
+0597;N;HEBREW ACCENT REVIA
+0598;N;HEBREW ACCENT ZARQA
+0599;N;HEBREW ACCENT PASHTA
+059A;N;HEBREW ACCENT YETIV
+059B;N;HEBREW ACCENT TEVIR
+059C;N;HEBREW ACCENT GERESH
+059D;N;HEBREW ACCENT GERESH MUQDAM
+059E;N;HEBREW ACCENT GERSHAYIM
+059F;N;HEBREW ACCENT QARNEY PARA
+05A0;N;HEBREW ACCENT TELISHA GEDOLA
+05A1;N;HEBREW ACCENT PAZER
+05A3;N;HEBREW ACCENT MUNAH
+05A4;N;HEBREW ACCENT MAHAPAKH
+05A5;N;HEBREW ACCENT MERKHA
+05A6;N;HEBREW ACCENT MERKHA KEFULA
+05A7;N;HEBREW ACCENT DARGA
+05A8;N;HEBREW ACCENT QADMA
+05A9;N;HEBREW ACCENT TELISHA QETANA
+05AA;N;HEBREW ACCENT YERAH BEN YOMO
+05AB;N;HEBREW ACCENT OLE
+05AC;N;HEBREW ACCENT ILUY
+05AD;N;HEBREW ACCENT DEHI
+05AE;N;HEBREW ACCENT ZINOR
+05AF;N;HEBREW MARK MASORA CIRCLE
+05B0;N;HEBREW POINT SHEVA
+05B1;N;HEBREW POINT HATAF SEGOL
+05B2;N;HEBREW POINT HATAF PATAH
+05B3;N;HEBREW POINT HATAF QAMATS
+05B4;N;HEBREW POINT HIRIQ
+05B5;N;HEBREW POINT TSERE
+05B6;N;HEBREW POINT SEGOL
+05B7;N;HEBREW POINT PATAH
+05B8;N;HEBREW POINT QAMATS
+05B9;N;HEBREW POINT HOLAM
+05BB;N;HEBREW POINT QUBUTS
+05BC;N;HEBREW POINT DAGESH OR MAPIQ
+05BD;N;HEBREW POINT METEG
+05BE;N;HEBREW PUNCTUATION MAQAF
+05BF;N;HEBREW POINT RAFE
+05C0;N;HEBREW PUNCTUATION PASEQ
+05C1;N;HEBREW POINT SHIN DOT
+05C2;N;HEBREW POINT SIN DOT
+05C3;N;HEBREW PUNCTUATION SOF PASUQ
+05C4;N;HEBREW MARK UPPER DOT
+05D0;N;HEBREW LETTER ALEF
+05D1;N;HEBREW LETTER BET
+05D2;N;HEBREW LETTER GIMEL
+05D3;N;HEBREW LETTER DALET
+05D4;N;HEBREW LETTER HE
+05D5;N;HEBREW LETTER VAV
+05D6;N;HEBREW LETTER ZAYIN
+05D7;N;HEBREW LETTER HET
+05D8;N;HEBREW LETTER TET
+05D9;N;HEBREW LETTER YOD
+05DA;N;HEBREW LETTER FINAL KAF
+05DB;N;HEBREW LETTER KAF
+05DC;N;HEBREW LETTER LAMED
+05DD;N;HEBREW LETTER FINAL MEM
+05DE;N;HEBREW LETTER MEM
+05DF;N;HEBREW LETTER FINAL NUN
+05E0;N;HEBREW LETTER NUN
+05E1;N;HEBREW LETTER SAMEKH
+05E2;N;HEBREW LETTER AYIN
+05E3;N;HEBREW LETTER FINAL PE
+05E4;N;HEBREW LETTER PE
+05E5;N;HEBREW LETTER FINAL TSADI
+05E6;N;HEBREW LETTER TSADI
+05E7;N;HEBREW LETTER QOF
+05E8;N;HEBREW LETTER RESH
+05E9;N;HEBREW LETTER SHIN
+05EA;N;HEBREW LETTER TAV
+05F0;N;HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;N;HEBREW LIGATURE YIDDISH VAV YOD
+05F2;N;HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3;N;HEBREW PUNCTUATION GERESH
+05F4;N;HEBREW PUNCTUATION GERSHAYIM
+060C;N;ARABIC COMMA
+061B;N;ARABIC SEMICOLON
+061F;N;ARABIC QUESTION MARK
+0621;N;ARABIC LETTER HAMZA
+0622;N;ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;N;ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;N;ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;N;ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;N;ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;N;ARABIC LETTER ALEF
+0628;N;ARABIC LETTER BEH
+0629;N;ARABIC LETTER TEH MARBUTA
+062A;N;ARABIC LETTER TEH
+062B;N;ARABIC LETTER THEH
+062C;N;ARABIC LETTER JEEM
+062D;N;ARABIC LETTER HAH
+062E;N;ARABIC LETTER KHAH
+062F;N;ARABIC LETTER DAL
+0630;N;ARABIC LETTER THAL
+0631;N;ARABIC LETTER REH
+0632;N;ARABIC LETTER ZAIN
+0633;N;ARABIC LETTER SEEN
+0634;N;ARABIC LETTER SHEEN
+0635;N;ARABIC LETTER SAD
+0636;N;ARABIC LETTER DAD
+0637;N;ARABIC LETTER TAH
+0638;N;ARABIC LETTER ZAH
+0639;N;ARABIC LETTER AIN
+063A;N;ARABIC LETTER GHAIN
+0640;N;ARABIC TATWEEL
+0641;N;ARABIC LETTER FEH
+0642;N;ARABIC LETTER QAF
+0643;N;ARABIC LETTER KAF
+0644;N;ARABIC LETTER LAM
+0645;N;ARABIC LETTER MEEM
+0646;N;ARABIC LETTER NOON
+0647;N;ARABIC LETTER HEH
+0648;N;ARABIC LETTER WAW
+0649;N;ARABIC LETTER ALEF MAKSURA
+064A;N;ARABIC LETTER YEH
+064B;N;ARABIC FATHATAN
+064C;N;ARABIC DAMMATAN
+064D;N;ARABIC KASRATAN
+064E;N;ARABIC FATHA
+064F;N;ARABIC DAMMA
+0650;N;ARABIC KASRA
+0651;N;ARABIC SHADDA
+0652;N;ARABIC SUKUN
+0653;N;ARABIC MADDAH ABOVE
+0654;N;ARABIC HAMZA ABOVE
+0655;N;ARABIC HAMZA BELOW
+0660;N;ARABIC-INDIC DIGIT ZERO
+0661;N;ARABIC-INDIC DIGIT ONE
+0662;N;ARABIC-INDIC DIGIT TWO
+0663;N;ARABIC-INDIC DIGIT THREE
+0664;N;ARABIC-INDIC DIGIT FOUR
+0665;N;ARABIC-INDIC DIGIT FIVE
+0666;N;ARABIC-INDIC DIGIT SIX
+0667;N;ARABIC-INDIC DIGIT SEVEN
+0668;N;ARABIC-INDIC DIGIT EIGHT
+0669;N;ARABIC-INDIC DIGIT NINE
+066A;N;ARABIC PERCENT SIGN
+066B;N;ARABIC DECIMAL SEPARATOR
+066C;N;ARABIC THOUSANDS SEPARATOR
+066D;N;ARABIC FIVE POINTED STAR
+0670;N;ARABIC LETTER SUPERSCRIPT ALEF
+0671;N;ARABIC LETTER ALEF WASLA
+0672;N;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0673;N;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0674;N;ARABIC LETTER HIGH HAMZA
+0675;N;ARABIC LETTER HIGH HAMZA ALEF
+0676;N;ARABIC LETTER HIGH HAMZA WAW
+0677;N;ARABIC LETTER U WITH HAMZA ABOVE
+0678;N;ARABIC LETTER HIGH HAMZA YEH
+0679;N;ARABIC LETTER TTEH
+067A;N;ARABIC LETTER TTEHEH
+067B;N;ARABIC LETTER BEEH
+067C;N;ARABIC LETTER TEH WITH RING
+067D;N;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067E;N;ARABIC LETTER PEH
+067F;N;ARABIC LETTER TEHEH
+0680;N;ARABIC LETTER BEHEH
+0681;N;ARABIC LETTER HAH WITH HAMZA ABOVE
+0682;N;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0683;N;ARABIC LETTER NYEH
+0684;N;ARABIC LETTER DYEH
+0685;N;ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0686;N;ARABIC LETTER TCHEH
+0687;N;ARABIC LETTER TCHEHEH
+0688;N;ARABIC LETTER DDAL
+0689;N;ARABIC LETTER DAL WITH RING
+068A;N;ARABIC LETTER DAL WITH DOT BELOW
+068B;N;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C;N;ARABIC LETTER DAHAL
+068D;N;ARABIC LETTER DDAHAL
+068E;N;ARABIC LETTER DUL
+068F;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690;N;ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+0691;N;ARABIC LETTER RREH
+0692;N;ARABIC LETTER REH WITH SMALL V
+0693;N;ARABIC LETTER REH WITH RING
+0694;N;ARABIC LETTER REH WITH DOT BELOW
+0695;N;ARABIC LETTER REH WITH SMALL V BELOW
+0696;N;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697;N;ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698;N;ARABIC LETTER JEH
+0699;N;ARABIC LETTER REH WITH FOUR DOTS ABOVE
+069A;N;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B;N;ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C;N;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+069D;N;ARABIC LETTER SAD WITH TWO DOTS BELOW
+069E;N;ARABIC LETTER SAD WITH THREE DOTS ABOVE
+069F;N;ARABIC LETTER TAH WITH THREE DOTS ABOVE
+06A0;N;ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06A1;N;ARABIC LETTER DOTLESS FEH
+06A2;N;ARABIC LETTER FEH WITH DOT MOVED BELOW
+06A3;N;ARABIC LETTER FEH WITH DOT BELOW
+06A4;N;ARABIC LETTER VEH
+06A5;N;ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6;N;ARABIC LETTER PEHEH
+06A7;N;ARABIC LETTER QAF WITH DOT ABOVE
+06A8;N;ARABIC LETTER QAF WITH THREE DOTS ABOVE
+06A9;N;ARABIC LETTER KEHEH
+06AA;N;ARABIC LETTER SWASH KAF
+06AB;N;ARABIC LETTER KAF WITH RING
+06AC;N;ARABIC LETTER KAF WITH DOT ABOVE
+06AD;N;ARABIC LETTER NG
+06AE;N;ARABIC LETTER KAF WITH THREE DOTS BELOW
+06AF;N;ARABIC LETTER GAF
+06B0;N;ARABIC LETTER GAF WITH RING
+06B1;N;ARABIC LETTER NGOEH
+06B2;N;ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3;N;ARABIC LETTER GUEH
+06B4;N;ARABIC LETTER GAF WITH THREE DOTS ABOVE
+06B5;N;ARABIC LETTER LAM WITH SMALL V
+06B6;N;ARABIC LETTER LAM WITH DOT ABOVE
+06B7;N;ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8;N;ARABIC LETTER LAM WITH THREE DOTS BELOW
+06B9;N;ARABIC LETTER NOON WITH DOT BELOW
+06BA;N;ARABIC LETTER NOON GHUNNA
+06BB;N;ARABIC LETTER RNOON
+06BC;N;ARABIC LETTER NOON WITH RING
+06BD;N;ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06BE;N;ARABIC LETTER HEH DOACHASHMEE
+06BF;N;ARABIC LETTER TCHEH WITH DOT ABOVE
+06C0;N;ARABIC LETTER HEH WITH YEH ABOVE
+06C1;N;ARABIC LETTER HEH GOAL
+06C2;N;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3;N;ARABIC LETTER TEH MARBUTA GOAL
+06C4;N;ARABIC LETTER WAW WITH RING
+06C5;N;ARABIC LETTER KIRGHIZ OE
+06C6;N;ARABIC LETTER OE
+06C7;N;ARABIC LETTER U
+06C8;N;ARABIC LETTER YU
+06C9;N;ARABIC LETTER KIRGHIZ YU
+06CA;N;ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB;N;ARABIC LETTER VE
+06CC;N;ARABIC LETTER FARSI YEH
+06CD;N;ARABIC LETTER YEH WITH TAIL
+06CE;N;ARABIC LETTER YEH WITH SMALL V
+06CF;N;ARABIC LETTER WAW WITH DOT ABOVE
+06D0;N;ARABIC LETTER E
+06D1;N;ARABIC LETTER YEH WITH THREE DOTS BELOW
+06D2;N;ARABIC LETTER YEH BARREE
+06D3;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4;N;ARABIC FULL STOP
+06D5;N;ARABIC LETTER AE
+06D6;N;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7;N;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8;N;ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9;N;ARABIC SMALL HIGH LAM ALEF
+06DA;N;ARABIC SMALL HIGH JEEM
+06DB;N;ARABIC SMALL HIGH THREE DOTS
+06DC;N;ARABIC SMALL HIGH SEEN
+06DD;N;ARABIC END OF AYAH
+06DE;N;ARABIC START OF RUB EL HIZB
+06DF;N;ARABIC SMALL HIGH ROUNDED ZERO
+06E0;N;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1;N;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2;N;ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3;N;ARABIC SMALL LOW SEEN
+06E4;N;ARABIC SMALL HIGH MADDA
+06E5;N;ARABIC SMALL WAW
+06E6;N;ARABIC SMALL YEH
+06E7;N;ARABIC SMALL HIGH YEH
+06E8;N;ARABIC SMALL HIGH NOON
+06E9;N;ARABIC PLACE OF SAJDAH
+06EA;N;ARABIC EMPTY CENTRE LOW STOP
+06EB;N;ARABIC EMPTY CENTRE HIGH STOP
+06EC;N;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED;N;ARABIC SMALL LOW MEEM
+06F0;N;EXTENDED ARABIC-INDIC DIGIT ZERO
+06F1;N;EXTENDED ARABIC-INDIC DIGIT ONE
+06F2;N;EXTENDED ARABIC-INDIC DIGIT TWO
+06F3;N;EXTENDED ARABIC-INDIC DIGIT THREE
+06F4;N;EXTENDED ARABIC-INDIC DIGIT FOUR
+06F5;N;EXTENDED ARABIC-INDIC DIGIT FIVE
+06F6;N;EXTENDED ARABIC-INDIC DIGIT SIX
+06F7;N;EXTENDED ARABIC-INDIC DIGIT SEVEN
+06F8;N;EXTENDED ARABIC-INDIC DIGIT EIGHT
+06F9;N;EXTENDED ARABIC-INDIC DIGIT NINE
+06FA;N;ARABIC LETTER SHEEN WITH DOT BELOW
+06FB;N;ARABIC LETTER DAD WITH DOT BELOW
+06FC;N;ARABIC LETTER GHAIN WITH DOT BELOW
+06FD;N;ARABIC SIGN SINDHI AMPERSAND
+06FE;N;ARABIC SIGN SINDHI POSTPOSITION MEN
+0700;N;SYRIAC END OF PARAGRAPH
+0701;N;SYRIAC SUPRALINEAR FULL STOP
+0702;N;SYRIAC SUBLINEAR FULL STOP
+0703;N;SYRIAC SUPRALINEAR COLON
+0704;N;SYRIAC SUBLINEAR COLON
+0705;N;SYRIAC HORIZONTAL COLON
+0706;N;SYRIAC COLON SKEWED LEFT
+0707;N;SYRIAC COLON SKEWED RIGHT
+0708;N;SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709;N;SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070A;N;SYRIAC CONTRACTION
+070B;N;SYRIAC HARKLEAN OBELUS
+070C;N;SYRIAC HARKLEAN METOBELUS
+070D;N;SYRIAC HARKLEAN ASTERISCUS
+070F;N;SYRIAC ABBREVIATION MARK
+0710;N;SYRIAC LETTER ALAPH
+0711;N;SYRIAC LETTER SUPERSCRIPT ALAPH
+0712;N;SYRIAC LETTER BETH
+0713;N;SYRIAC LETTER GAMAL
+0714;N;SYRIAC LETTER GAMAL GARSHUNI
+0715;N;SYRIAC LETTER DALATH
+0716;N;SYRIAC LETTER DOTLESS DALATH RISH
+0717;N;SYRIAC LETTER HE
+0718;N;SYRIAC LETTER WAW
+0719;N;SYRIAC LETTER ZAIN
+071A;N;SYRIAC LETTER HETH
+071B;N;SYRIAC LETTER TETH
+071C;N;SYRIAC LETTER TETH GARSHUNI
+071D;N;SYRIAC LETTER YUDH
+071E;N;SYRIAC LETTER YUDH HE
+071F;N;SYRIAC LETTER KAPH
+0720;N;SYRIAC LETTER LAMADH
+0721;N;SYRIAC LETTER MIM
+0722;N;SYRIAC LETTER NUN
+0723;N;SYRIAC LETTER SEMKATH
+0724;N;SYRIAC LETTER FINAL SEMKATH
+0725;N;SYRIAC LETTER E
+0726;N;SYRIAC LETTER PE
+0727;N;SYRIAC LETTER REVERSED PE
+0728;N;SYRIAC LETTER SADHE
+0729;N;SYRIAC LETTER QAPH
+072A;N;SYRIAC LETTER RISH
+072B;N;SYRIAC LETTER SHIN
+072C;N;SYRIAC LETTER TAW
+0730;N;SYRIAC PTHAHA ABOVE
+0731;N;SYRIAC PTHAHA BELOW
+0732;N;SYRIAC PTHAHA DOTTED
+0733;N;SYRIAC ZQAPHA ABOVE
+0734;N;SYRIAC ZQAPHA BELOW
+0735;N;SYRIAC ZQAPHA DOTTED
+0736;N;SYRIAC RBASA ABOVE
+0737;N;SYRIAC RBASA BELOW
+0738;N;SYRIAC DOTTED ZLAMA HORIZONTAL
+0739;N;SYRIAC DOTTED ZLAMA ANGULAR
+073A;N;SYRIAC HBASA ABOVE
+073B;N;SYRIAC HBASA BELOW
+073C;N;SYRIAC HBASA-ESASA DOTTED
+073D;N;SYRIAC ESASA ABOVE
+073E;N;SYRIAC ESASA BELOW
+073F;N;SYRIAC RWAHA
+0740;N;SYRIAC FEMININE DOT
+0741;N;SYRIAC QUSHSHAYA
+0742;N;SYRIAC RUKKAKHA
+0743;N;SYRIAC TWO VERTICAL DOTS ABOVE
+0744;N;SYRIAC TWO VERTICAL DOTS BELOW
+0745;N;SYRIAC THREE DOTS ABOVE
+0746;N;SYRIAC THREE DOTS BELOW
+0747;N;SYRIAC OBLIQUE LINE ABOVE
+0748;N;SYRIAC OBLIQUE LINE BELOW
+0749;N;SYRIAC MUSIC
+074A;N;SYRIAC BARREKH
+0780;N;THAANA LETTER HAA
+0781;N;THAANA LETTER SHAVIYANI
+0782;N;THAANA LETTER NOONU
+0783;N;THAANA LETTER RAA
+0784;N;THAANA LETTER BAA
+0785;N;THAANA LETTER LHAVIYANI
+0786;N;THAANA LETTER KAAFU
+0787;N;THAANA LETTER ALIFU
+0788;N;THAANA LETTER VAAVU
+0789;N;THAANA LETTER MEEMU
+078A;N;THAANA LETTER FAAFU
+078B;N;THAANA LETTER DHAALU
+078C;N;THAANA LETTER THAA
+078D;N;THAANA LETTER LAAMU
+078E;N;THAANA LETTER GAAFU
+078F;N;THAANA LETTER GNAVIYANI
+0790;N;THAANA LETTER SEENU
+0791;N;THAANA LETTER DAVIYANI
+0792;N;THAANA LETTER ZAVIYANI
+0793;N;THAANA LETTER TAVIYANI
+0794;N;THAANA LETTER YAA
+0795;N;THAANA LETTER PAVIYANI
+0796;N;THAANA LETTER JAVIYANI
+0797;N;THAANA LETTER CHAVIYANI
+0798;N;THAANA LETTER TTAA
+0799;N;THAANA LETTER HHAA
+079A;N;THAANA LETTER KHAA
+079B;N;THAANA LETTER THAALU
+079C;N;THAANA LETTER ZAA
+079D;N;THAANA LETTER SHEENU
+079E;N;THAANA LETTER SAADHU
+079F;N;THAANA LETTER DAADHU
+07A0;N;THAANA LETTER TO
+07A1;N;THAANA LETTER ZO
+07A2;N;THAANA LETTER AINU
+07A3;N;THAANA LETTER GHAINU
+07A4;N;THAANA LETTER QAAFU
+07A5;N;THAANA LETTER WAAVU
+07A6;N;THAANA ABAFILI
+07A7;N;THAANA AABAAFILI
+07A8;N;THAANA IBIFILI
+07A9;N;THAANA EEBEEFILI
+07AA;N;THAANA UBUFILI
+07AB;N;THAANA OOBOOFILI
+07AC;N;THAANA EBEFILI
+07AD;N;THAANA EYBEYFILI
+07AE;N;THAANA OBOFILI
+07AF;N;THAANA OABOAFILI
+07B0;N;THAANA SUKUN
+0901;N;DEVANAGARI SIGN CANDRABINDU
+0902;N;DEVANAGARI SIGN ANUSVARA
+0903;N;DEVANAGARI SIGN VISARGA
+0905;N;DEVANAGARI LETTER A
+0906;N;DEVANAGARI LETTER AA
+0907;N;DEVANAGARI LETTER I
+0908;N;DEVANAGARI LETTER II
+0909;N;DEVANAGARI LETTER U
+090A;N;DEVANAGARI LETTER UU
+090B;N;DEVANAGARI LETTER VOCALIC R
+090C;N;DEVANAGARI LETTER VOCALIC L
+090D;N;DEVANAGARI LETTER CANDRA E
+090E;N;DEVANAGARI LETTER SHORT E
+090F;N;DEVANAGARI LETTER E
+0910;N;DEVANAGARI LETTER AI
+0911;N;DEVANAGARI LETTER CANDRA O
+0912;N;DEVANAGARI LETTER SHORT O
+0913;N;DEVANAGARI LETTER O
+0914;N;DEVANAGARI LETTER AU
+0915;N;DEVANAGARI LETTER KA
+0916;N;DEVANAGARI LETTER KHA
+0917;N;DEVANAGARI LETTER GA
+0918;N;DEVANAGARI LETTER GHA
+0919;N;DEVANAGARI LETTER NGA
+091A;N;DEVANAGARI LETTER CA
+091B;N;DEVANAGARI LETTER CHA
+091C;N;DEVANAGARI LETTER JA
+091D;N;DEVANAGARI LETTER JHA
+091E;N;DEVANAGARI LETTER NYA
+091F;N;DEVANAGARI LETTER TTA
+0920;N;DEVANAGARI LETTER TTHA
+0921;N;DEVANAGARI LETTER DDA
+0922;N;DEVANAGARI LETTER DDHA
+0923;N;DEVANAGARI LETTER NNA
+0924;N;DEVANAGARI LETTER TA
+0925;N;DEVANAGARI LETTER THA
+0926;N;DEVANAGARI LETTER DA
+0927;N;DEVANAGARI LETTER DHA
+0928;N;DEVANAGARI LETTER NA
+0929;N;DEVANAGARI LETTER NNNA
+092A;N;DEVANAGARI LETTER PA
+092B;N;DEVANAGARI LETTER PHA
+092C;N;DEVANAGARI LETTER BA
+092D;N;DEVANAGARI LETTER BHA
+092E;N;DEVANAGARI LETTER MA
+092F;N;DEVANAGARI LETTER YA
+0930;N;DEVANAGARI LETTER RA
+0931;N;DEVANAGARI LETTER RRA
+0932;N;DEVANAGARI LETTER LA
+0933;N;DEVANAGARI LETTER LLA
+0934;N;DEVANAGARI LETTER LLLA
+0935;N;DEVANAGARI LETTER VA
+0936;N;DEVANAGARI LETTER SHA
+0937;N;DEVANAGARI LETTER SSA
+0938;N;DEVANAGARI LETTER SA
+0939;N;DEVANAGARI LETTER HA
+093C;N;DEVANAGARI SIGN NUKTA
+093D;N;DEVANAGARI SIGN AVAGRAHA
+093E;N;DEVANAGARI VOWEL SIGN AA
+093F;N;DEVANAGARI VOWEL SIGN I
+0940;N;DEVANAGARI VOWEL SIGN II
+0941;N;DEVANAGARI VOWEL SIGN U
+0942;N;DEVANAGARI VOWEL SIGN UU
+0943;N;DEVANAGARI VOWEL SIGN VOCALIC R
+0944;N;DEVANAGARI VOWEL SIGN VOCALIC RR
+0945;N;DEVANAGARI VOWEL SIGN CANDRA E
+0946;N;DEVANAGARI VOWEL SIGN SHORT E
+0947;N;DEVANAGARI VOWEL SIGN E
+0948;N;DEVANAGARI VOWEL SIGN AI
+0949;N;DEVANAGARI VOWEL SIGN CANDRA O
+094A;N;DEVANAGARI VOWEL SIGN SHORT O
+094B;N;DEVANAGARI VOWEL SIGN O
+094C;N;DEVANAGARI VOWEL SIGN AU
+094D;N;DEVANAGARI SIGN VIRAMA
+0950;N;DEVANAGARI OM
+0951;N;DEVANAGARI STRESS SIGN UDATTA
+0952;N;DEVANAGARI STRESS SIGN ANUDATTA
+0953;N;DEVANAGARI GRAVE ACCENT
+0954;N;DEVANAGARI ACUTE ACCENT
+0958;N;DEVANAGARI LETTER QA
+0959;N;DEVANAGARI LETTER KHHA
+095A;N;DEVANAGARI LETTER GHHA
+095B;N;DEVANAGARI LETTER ZA
+095C;N;DEVANAGARI LETTER DDDHA
+095D;N;DEVANAGARI LETTER RHA
+095E;N;DEVANAGARI LETTER FA
+095F;N;DEVANAGARI LETTER YYA
+0960;N;DEVANAGARI LETTER VOCALIC RR
+0961;N;DEVANAGARI LETTER VOCALIC LL
+0962;N;DEVANAGARI VOWEL SIGN VOCALIC L
+0963;N;DEVANAGARI VOWEL SIGN VOCALIC LL
+0964;N;DEVANAGARI DANDA
+0965;N;DEVANAGARI DOUBLE DANDA
+0966;N;DEVANAGARI DIGIT ZERO
+0967;N;DEVANAGARI DIGIT ONE
+0968;N;DEVANAGARI DIGIT TWO
+0969;N;DEVANAGARI DIGIT THREE
+096A;N;DEVANAGARI DIGIT FOUR
+096B;N;DEVANAGARI DIGIT FIVE
+096C;N;DEVANAGARI DIGIT SIX
+096D;N;DEVANAGARI DIGIT SEVEN
+096E;N;DEVANAGARI DIGIT EIGHT
+096F;N;DEVANAGARI DIGIT NINE
+0970;N;DEVANAGARI ABBREVIATION SIGN
+0981;N;BENGALI SIGN CANDRABINDU
+0982;N;BENGALI SIGN ANUSVARA
+0983;N;BENGALI SIGN VISARGA
+0985;N;BENGALI LETTER A
+0986;N;BENGALI LETTER AA
+0987;N;BENGALI LETTER I
+0988;N;BENGALI LETTER II
+0989;N;BENGALI LETTER U
+098A;N;BENGALI LETTER UU
+098B;N;BENGALI LETTER VOCALIC R
+098C;N;BENGALI LETTER VOCALIC L
+098F;N;BENGALI LETTER E
+0990;N;BENGALI LETTER AI
+0993;N;BENGALI LETTER O
+0994;N;BENGALI LETTER AU
+0995;N;BENGALI LETTER KA
+0996;N;BENGALI LETTER KHA
+0997;N;BENGALI LETTER GA
+0998;N;BENGALI LETTER GHA
+0999;N;BENGALI LETTER NGA
+099A;N;BENGALI LETTER CA
+099B;N;BENGALI LETTER CHA
+099C;N;BENGALI LETTER JA
+099D;N;BENGALI LETTER JHA
+099E;N;BENGALI LETTER NYA
+099F;N;BENGALI LETTER TTA
+09A0;N;BENGALI LETTER TTHA
+09A1;N;BENGALI LETTER DDA
+09A2;N;BENGALI LETTER DDHA
+09A3;N;BENGALI LETTER NNA
+09A4;N;BENGALI LETTER TA
+09A5;N;BENGALI LETTER THA
+09A6;N;BENGALI LETTER DA
+09A7;N;BENGALI LETTER DHA
+09A8;N;BENGALI LETTER NA
+09AA;N;BENGALI LETTER PA
+09AB;N;BENGALI LETTER PHA
+09AC;N;BENGALI LETTER BA
+09AD;N;BENGALI LETTER BHA
+09AE;N;BENGALI LETTER MA
+09AF;N;BENGALI LETTER YA
+09B0;N;BENGALI LETTER RA
+09B2;N;BENGALI LETTER LA
+09B6;N;BENGALI LETTER SHA
+09B7;N;BENGALI LETTER SSA
+09B8;N;BENGALI LETTER SA
+09B9;N;BENGALI LETTER HA
+09BC;N;BENGALI SIGN NUKTA
+09BE;N;BENGALI VOWEL SIGN AA
+09BF;N;BENGALI VOWEL SIGN I
+09C0;N;BENGALI VOWEL SIGN II
+09C1;N;BENGALI VOWEL SIGN U
+09C2;N;BENGALI VOWEL SIGN UU
+09C3;N;BENGALI VOWEL SIGN VOCALIC R
+09C4;N;BENGALI VOWEL SIGN VOCALIC RR
+09C7;N;BENGALI VOWEL SIGN E
+09C8;N;BENGALI VOWEL SIGN AI
+09CB;N;BENGALI VOWEL SIGN O
+09CC;N;BENGALI VOWEL SIGN AU
+09CD;N;BENGALI SIGN VIRAMA
+09D7;N;BENGALI AU LENGTH MARK
+09DC;N;BENGALI LETTER RRA
+09DD;N;BENGALI LETTER RHA
+09DF;N;BENGALI LETTER YYA
+09E0;N;BENGALI LETTER VOCALIC RR
+09E1;N;BENGALI LETTER VOCALIC LL
+09E2;N;BENGALI VOWEL SIGN VOCALIC L
+09E3;N;BENGALI VOWEL SIGN VOCALIC LL
+09E6;N;BENGALI DIGIT ZERO
+09E7;N;BENGALI DIGIT ONE
+09E8;N;BENGALI DIGIT TWO
+09E9;N;BENGALI DIGIT THREE
+09EA;N;BENGALI DIGIT FOUR
+09EB;N;BENGALI DIGIT FIVE
+09EC;N;BENGALI DIGIT SIX
+09ED;N;BENGALI DIGIT SEVEN
+09EE;N;BENGALI DIGIT EIGHT
+09EF;N;BENGALI DIGIT NINE
+09F0;N;BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09F1;N;BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2;N;BENGALI RUPEE MARK
+09F3;N;BENGALI RUPEE SIGN
+09F4;N;BENGALI CURRENCY NUMERATOR ONE
+09F5;N;BENGALI CURRENCY NUMERATOR TWO
+09F6;N;BENGALI CURRENCY NUMERATOR THREE
+09F7;N;BENGALI CURRENCY NUMERATOR FOUR
+09F8;N;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9;N;BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA;N;BENGALI ISSHAR
+0A02;N;GURMUKHI SIGN BINDI
+0A05;N;GURMUKHI LETTER A
+0A06;N;GURMUKHI LETTER AA
+0A07;N;GURMUKHI LETTER I
+0A08;N;GURMUKHI LETTER II
+0A09;N;GURMUKHI LETTER U
+0A0A;N;GURMUKHI LETTER UU
+0A0F;N;GURMUKHI LETTER EE
+0A10;N;GURMUKHI LETTER AI
+0A13;N;GURMUKHI LETTER OO
+0A14;N;GURMUKHI LETTER AU
+0A15;N;GURMUKHI LETTER KA
+0A16;N;GURMUKHI LETTER KHA
+0A17;N;GURMUKHI LETTER GA
+0A18;N;GURMUKHI LETTER GHA
+0A19;N;GURMUKHI LETTER NGA
+0A1A;N;GURMUKHI LETTER CA
+0A1B;N;GURMUKHI LETTER CHA
+0A1C;N;GURMUKHI LETTER JA
+0A1D;N;GURMUKHI LETTER JHA
+0A1E;N;GURMUKHI LETTER NYA
+0A1F;N;GURMUKHI LETTER TTA
+0A20;N;GURMUKHI LETTER TTHA
+0A21;N;GURMUKHI LETTER DDA
+0A22;N;GURMUKHI LETTER DDHA
+0A23;N;GURMUKHI LETTER NNA
+0A24;N;GURMUKHI LETTER TA
+0A25;N;GURMUKHI LETTER THA
+0A26;N;GURMUKHI LETTER DA
+0A27;N;GURMUKHI LETTER DHA
+0A28;N;GURMUKHI LETTER NA
+0A2A;N;GURMUKHI LETTER PA
+0A2B;N;GURMUKHI LETTER PHA
+0A2C;N;GURMUKHI LETTER BA
+0A2D;N;GURMUKHI LETTER BHA
+0A2E;N;GURMUKHI LETTER MA
+0A2F;N;GURMUKHI LETTER YA
+0A30;N;GURMUKHI LETTER RA
+0A32;N;GURMUKHI LETTER LA
+0A33;N;GURMUKHI LETTER LLA
+0A35;N;GURMUKHI LETTER VA
+0A36;N;GURMUKHI LETTER SHA
+0A38;N;GURMUKHI LETTER SA
+0A39;N;GURMUKHI LETTER HA
+0A3C;N;GURMUKHI SIGN NUKTA
+0A3E;N;GURMUKHI VOWEL SIGN AA
+0A3F;N;GURMUKHI VOWEL SIGN I
+0A40;N;GURMUKHI VOWEL SIGN II
+0A41;N;GURMUKHI VOWEL SIGN U
+0A42;N;GURMUKHI VOWEL SIGN UU
+0A47;N;GURMUKHI VOWEL SIGN EE
+0A48;N;GURMUKHI VOWEL SIGN AI
+0A4B;N;GURMUKHI VOWEL SIGN OO
+0A4C;N;GURMUKHI VOWEL SIGN AU
+0A4D;N;GURMUKHI SIGN VIRAMA
+0A59;N;GURMUKHI LETTER KHHA
+0A5A;N;GURMUKHI LETTER GHHA
+0A5B;N;GURMUKHI LETTER ZA
+0A5C;N;GURMUKHI LETTER RRA
+0A5E;N;GURMUKHI LETTER FA
+0A66;N;GURMUKHI DIGIT ZERO
+0A67;N;GURMUKHI DIGIT ONE
+0A68;N;GURMUKHI DIGIT TWO
+0A69;N;GURMUKHI DIGIT THREE
+0A6A;N;GURMUKHI DIGIT FOUR
+0A6B;N;GURMUKHI DIGIT FIVE
+0A6C;N;GURMUKHI DIGIT SIX
+0A6D;N;GURMUKHI DIGIT SEVEN
+0A6E;N;GURMUKHI DIGIT EIGHT
+0A6F;N;GURMUKHI DIGIT NINE
+0A70;N;GURMUKHI TIPPI
+0A71;N;GURMUKHI ADDAK
+0A72;N;GURMUKHI IRI
+0A73;N;GURMUKHI URA
+0A74;N;GURMUKHI EK ONKAR
+0A81;N;GUJARATI SIGN CANDRABINDU
+0A82;N;GUJARATI SIGN ANUSVARA
+0A83;N;GUJARATI SIGN VISARGA
+0A85;N;GUJARATI LETTER A
+0A86;N;GUJARATI LETTER AA
+0A87;N;GUJARATI LETTER I
+0A88;N;GUJARATI LETTER II
+0A89;N;GUJARATI LETTER U
+0A8A;N;GUJARATI LETTER UU
+0A8B;N;GUJARATI LETTER VOCALIC R
+0A8D;N;GUJARATI VOWEL CANDRA E
+0A8F;N;GUJARATI LETTER E
+0A90;N;GUJARATI LETTER AI
+0A91;N;GUJARATI VOWEL CANDRA O
+0A93;N;GUJARATI LETTER O
+0A94;N;GUJARATI LETTER AU
+0A95;N;GUJARATI LETTER KA
+0A96;N;GUJARATI LETTER KHA
+0A97;N;GUJARATI LETTER GA
+0A98;N;GUJARATI LETTER GHA
+0A99;N;GUJARATI LETTER NGA
+0A9A;N;GUJARATI LETTER CA
+0A9B;N;GUJARATI LETTER CHA
+0A9C;N;GUJARATI LETTER JA
+0A9D;N;GUJARATI LETTER JHA
+0A9E;N;GUJARATI LETTER NYA
+0A9F;N;GUJARATI LETTER TTA
+0AA0;N;GUJARATI LETTER TTHA
+0AA1;N;GUJARATI LETTER DDA
+0AA2;N;GUJARATI LETTER DDHA
+0AA3;N;GUJARATI LETTER NNA
+0AA4;N;GUJARATI LETTER TA
+0AA5;N;GUJARATI LETTER THA
+0AA6;N;GUJARATI LETTER DA
+0AA7;N;GUJARATI LETTER DHA
+0AA8;N;GUJARATI LETTER NA
+0AAA;N;GUJARATI LETTER PA
+0AAB;N;GUJARATI LETTER PHA
+0AAC;N;GUJARATI LETTER BA
+0AAD;N;GUJARATI LETTER BHA
+0AAE;N;GUJARATI LETTER MA
+0AAF;N;GUJARATI LETTER YA
+0AB0;N;GUJARATI LETTER RA
+0AB2;N;GUJARATI LETTER LA
+0AB3;N;GUJARATI LETTER LLA
+0AB5;N;GUJARATI LETTER VA
+0AB6;N;GUJARATI LETTER SHA
+0AB7;N;GUJARATI LETTER SSA
+0AB8;N;GUJARATI LETTER SA
+0AB9;N;GUJARATI LETTER HA
+0ABC;N;GUJARATI SIGN NUKTA
+0ABD;N;GUJARATI SIGN AVAGRAHA
+0ABE;N;GUJARATI VOWEL SIGN AA
+0ABF;N;GUJARATI VOWEL SIGN I
+0AC0;N;GUJARATI VOWEL SIGN II
+0AC1;N;GUJARATI VOWEL SIGN U
+0AC2;N;GUJARATI VOWEL SIGN UU
+0AC3;N;GUJARATI VOWEL SIGN VOCALIC R
+0AC4;N;GUJARATI VOWEL SIGN VOCALIC RR
+0AC5;N;GUJARATI VOWEL SIGN CANDRA E
+0AC7;N;GUJARATI VOWEL SIGN E
+0AC8;N;GUJARATI VOWEL SIGN AI
+0AC9;N;GUJARATI VOWEL SIGN CANDRA O
+0ACB;N;GUJARATI VOWEL SIGN O
+0ACC;N;GUJARATI VOWEL SIGN AU
+0ACD;N;GUJARATI SIGN VIRAMA
+0AD0;N;GUJARATI OM
+0AE0;N;GUJARATI LETTER VOCALIC RR
+0AE6;N;GUJARATI DIGIT ZERO
+0AE7;N;GUJARATI DIGIT ONE
+0AE8;N;GUJARATI DIGIT TWO
+0AE9;N;GUJARATI DIGIT THREE
+0AEA;N;GUJARATI DIGIT FOUR
+0AEB;N;GUJARATI DIGIT FIVE
+0AEC;N;GUJARATI DIGIT SIX
+0AED;N;GUJARATI DIGIT SEVEN
+0AEE;N;GUJARATI DIGIT EIGHT
+0AEF;N;GUJARATI DIGIT NINE
+0B01;N;ORIYA SIGN CANDRABINDU
+0B02;N;ORIYA SIGN ANUSVARA
+0B03;N;ORIYA SIGN VISARGA
+0B05;N;ORIYA LETTER A
+0B06;N;ORIYA LETTER AA
+0B07;N;ORIYA LETTER I
+0B08;N;ORIYA LETTER II
+0B09;N;ORIYA LETTER U
+0B0A;N;ORIYA LETTER UU
+0B0B;N;ORIYA LETTER VOCALIC R
+0B0C;N;ORIYA LETTER VOCALIC L
+0B0F;N;ORIYA LETTER E
+0B10;N;ORIYA LETTER AI
+0B13;N;ORIYA LETTER O
+0B14;N;ORIYA LETTER AU
+0B15;N;ORIYA LETTER KA
+0B16;N;ORIYA LETTER KHA
+0B17;N;ORIYA LETTER GA
+0B18;N;ORIYA LETTER GHA
+0B19;N;ORIYA LETTER NGA
+0B1A;N;ORIYA LETTER CA
+0B1B;N;ORIYA LETTER CHA
+0B1C;N;ORIYA LETTER JA
+0B1D;N;ORIYA LETTER JHA
+0B1E;N;ORIYA LETTER NYA
+0B1F;N;ORIYA LETTER TTA
+0B20;N;ORIYA LETTER TTHA
+0B21;N;ORIYA LETTER DDA
+0B22;N;ORIYA LETTER DDHA
+0B23;N;ORIYA LETTER NNA
+0B24;N;ORIYA LETTER TA
+0B25;N;ORIYA LETTER THA
+0B26;N;ORIYA LETTER DA
+0B27;N;ORIYA LETTER DHA
+0B28;N;ORIYA LETTER NA
+0B2A;N;ORIYA LETTER PA
+0B2B;N;ORIYA LETTER PHA
+0B2C;N;ORIYA LETTER BA
+0B2D;N;ORIYA LETTER BHA
+0B2E;N;ORIYA LETTER MA
+0B2F;N;ORIYA LETTER YA
+0B30;N;ORIYA LETTER RA
+0B32;N;ORIYA LETTER LA
+0B33;N;ORIYA LETTER LLA
+0B36;N;ORIYA LETTER SHA
+0B37;N;ORIYA LETTER SSA
+0B38;N;ORIYA LETTER SA
+0B39;N;ORIYA LETTER HA
+0B3C;N;ORIYA SIGN NUKTA
+0B3D;N;ORIYA SIGN AVAGRAHA
+0B3E;N;ORIYA VOWEL SIGN AA
+0B3F;N;ORIYA VOWEL SIGN I
+0B40;N;ORIYA VOWEL SIGN II
+0B41;N;ORIYA VOWEL SIGN U
+0B42;N;ORIYA VOWEL SIGN UU
+0B43;N;ORIYA VOWEL SIGN VOCALIC R
+0B47;N;ORIYA VOWEL SIGN E
+0B48;N;ORIYA VOWEL SIGN AI
+0B4B;N;ORIYA VOWEL SIGN O
+0B4C;N;ORIYA VOWEL SIGN AU
+0B4D;N;ORIYA SIGN VIRAMA
+0B56;N;ORIYA AI LENGTH MARK
+0B57;N;ORIYA AU LENGTH MARK
+0B5C;N;ORIYA LETTER RRA
+0B5D;N;ORIYA LETTER RHA
+0B5F;N;ORIYA LETTER YYA
+0B60;N;ORIYA LETTER VOCALIC RR
+0B61;N;ORIYA LETTER VOCALIC LL
+0B66;N;ORIYA DIGIT ZERO
+0B67;N;ORIYA DIGIT ONE
+0B68;N;ORIYA DIGIT TWO
+0B69;N;ORIYA DIGIT THREE
+0B6A;N;ORIYA DIGIT FOUR
+0B6B;N;ORIYA DIGIT FIVE
+0B6C;N;ORIYA DIGIT SIX
+0B6D;N;ORIYA DIGIT SEVEN
+0B6E;N;ORIYA DIGIT EIGHT
+0B6F;N;ORIYA DIGIT NINE
+0B70;N;ORIYA ISSHAR
+0B82;N;TAMIL SIGN ANUSVARA
+0B83;N;TAMIL SIGN VISARGA
+0B85;N;TAMIL LETTER A
+0B86;N;TAMIL LETTER AA
+0B87;N;TAMIL LETTER I
+0B88;N;TAMIL LETTER II
+0B89;N;TAMIL LETTER U
+0B8A;N;TAMIL LETTER UU
+0B8E;N;TAMIL LETTER E
+0B8F;N;TAMIL LETTER EE
+0B90;N;TAMIL LETTER AI
+0B92;N;TAMIL LETTER O
+0B93;N;TAMIL LETTER OO
+0B94;N;TAMIL LETTER AU
+0B95;N;TAMIL LETTER KA
+0B99;N;TAMIL LETTER NGA
+0B9A;N;TAMIL LETTER CA
+0B9C;N;TAMIL LETTER JA
+0B9E;N;TAMIL LETTER NYA
+0B9F;N;TAMIL LETTER TTA
+0BA3;N;TAMIL LETTER NNA
+0BA4;N;TAMIL LETTER TA
+0BA8;N;TAMIL LETTER NA
+0BA9;N;TAMIL LETTER NNNA
+0BAA;N;TAMIL LETTER PA
+0BAE;N;TAMIL LETTER MA
+0BAF;N;TAMIL LETTER YA
+0BB0;N;TAMIL LETTER RA
+0BB1;N;TAMIL LETTER RRA
+0BB2;N;TAMIL LETTER LA
+0BB3;N;TAMIL LETTER LLA
+0BB4;N;TAMIL LETTER LLLA
+0BB5;N;TAMIL LETTER VA
+0BB7;N;TAMIL LETTER SSA
+0BB8;N;TAMIL LETTER SA
+0BB9;N;TAMIL LETTER HA
+0BBE;N;TAMIL VOWEL SIGN AA
+0BBF;N;TAMIL VOWEL SIGN I
+0BC0;N;TAMIL VOWEL SIGN II
+0BC1;N;TAMIL VOWEL SIGN U
+0BC2;N;TAMIL VOWEL SIGN UU
+0BC6;N;TAMIL VOWEL SIGN E
+0BC7;N;TAMIL VOWEL SIGN EE
+0BC8;N;TAMIL VOWEL SIGN AI
+0BCA;N;TAMIL VOWEL SIGN O
+0BCB;N;TAMIL VOWEL SIGN OO
+0BCC;N;TAMIL VOWEL SIGN AU
+0BCD;N;TAMIL SIGN VIRAMA
+0BD7;N;TAMIL AU LENGTH MARK
+0BE7;N;TAMIL DIGIT ONE
+0BE8;N;TAMIL DIGIT TWO
+0BE9;N;TAMIL DIGIT THREE
+0BEA;N;TAMIL DIGIT FOUR
+0BEB;N;TAMIL DIGIT FIVE
+0BEC;N;TAMIL DIGIT SIX
+0BED;N;TAMIL DIGIT SEVEN
+0BEE;N;TAMIL DIGIT EIGHT
+0BEF;N;TAMIL DIGIT NINE
+0BF0;N;TAMIL NUMBER TEN
+0BF1;N;TAMIL NUMBER ONE HUNDRED
+0BF2;N;TAMIL NUMBER ONE THOUSAND
+0C01;N;TELUGU SIGN CANDRABINDU
+0C02;N;TELUGU SIGN ANUSVARA
+0C03;N;TELUGU SIGN VISARGA
+0C05;N;TELUGU LETTER A
+0C06;N;TELUGU LETTER AA
+0C07;N;TELUGU LETTER I
+0C08;N;TELUGU LETTER II
+0C09;N;TELUGU LETTER U
+0C0A;N;TELUGU LETTER UU
+0C0B;N;TELUGU LETTER VOCALIC R
+0C0C;N;TELUGU LETTER VOCALIC L
+0C0E;N;TELUGU LETTER E
+0C0F;N;TELUGU LETTER EE
+0C10;N;TELUGU LETTER AI
+0C12;N;TELUGU LETTER O
+0C13;N;TELUGU LETTER OO
+0C14;N;TELUGU LETTER AU
+0C15;N;TELUGU LETTER KA
+0C16;N;TELUGU LETTER KHA
+0C17;N;TELUGU LETTER GA
+0C18;N;TELUGU LETTER GHA
+0C19;N;TELUGU LETTER NGA
+0C1A;N;TELUGU LETTER CA
+0C1B;N;TELUGU LETTER CHA
+0C1C;N;TELUGU LETTER JA
+0C1D;N;TELUGU LETTER JHA
+0C1E;N;TELUGU LETTER NYA
+0C1F;N;TELUGU LETTER TTA
+0C20;N;TELUGU LETTER TTHA
+0C21;N;TELUGU LETTER DDA
+0C22;N;TELUGU LETTER DDHA
+0C23;N;TELUGU LETTER NNA
+0C24;N;TELUGU LETTER TA
+0C25;N;TELUGU LETTER THA
+0C26;N;TELUGU LETTER DA
+0C27;N;TELUGU LETTER DHA
+0C28;N;TELUGU LETTER NA
+0C2A;N;TELUGU LETTER PA
+0C2B;N;TELUGU LETTER PHA
+0C2C;N;TELUGU LETTER BA
+0C2D;N;TELUGU LETTER BHA
+0C2E;N;TELUGU LETTER MA
+0C2F;N;TELUGU LETTER YA
+0C30;N;TELUGU LETTER RA
+0C31;N;TELUGU LETTER RRA
+0C32;N;TELUGU LETTER LA
+0C33;N;TELUGU LETTER LLA
+0C35;N;TELUGU LETTER VA
+0C36;N;TELUGU LETTER SHA
+0C37;N;TELUGU LETTER SSA
+0C38;N;TELUGU LETTER SA
+0C39;N;TELUGU LETTER HA
+0C3E;N;TELUGU VOWEL SIGN AA
+0C3F;N;TELUGU VOWEL SIGN I
+0C40;N;TELUGU VOWEL SIGN II
+0C41;N;TELUGU VOWEL SIGN U
+0C42;N;TELUGU VOWEL SIGN UU
+0C43;N;TELUGU VOWEL SIGN VOCALIC R
+0C44;N;TELUGU VOWEL SIGN VOCALIC RR
+0C46;N;TELUGU VOWEL SIGN E
+0C47;N;TELUGU VOWEL SIGN EE
+0C48;N;TELUGU VOWEL SIGN AI
+0C4A;N;TELUGU VOWEL SIGN O
+0C4B;N;TELUGU VOWEL SIGN OO
+0C4C;N;TELUGU VOWEL SIGN AU
+0C4D;N;TELUGU SIGN VIRAMA
+0C55;N;TELUGU LENGTH MARK
+0C56;N;TELUGU AI LENGTH MARK
+0C60;N;TELUGU LETTER VOCALIC RR
+0C61;N;TELUGU LETTER VOCALIC LL
+0C66;N;TELUGU DIGIT ZERO
+0C67;N;TELUGU DIGIT ONE
+0C68;N;TELUGU DIGIT TWO
+0C69;N;TELUGU DIGIT THREE
+0C6A;N;TELUGU DIGIT FOUR
+0C6B;N;TELUGU DIGIT FIVE
+0C6C;N;TELUGU DIGIT SIX
+0C6D;N;TELUGU DIGIT SEVEN
+0C6E;N;TELUGU DIGIT EIGHT
+0C6F;N;TELUGU DIGIT NINE
+0C82;N;KANNADA SIGN ANUSVARA
+0C83;N;KANNADA SIGN VISARGA
+0C85;N;KANNADA LETTER A
+0C86;N;KANNADA LETTER AA
+0C87;N;KANNADA LETTER I
+0C88;N;KANNADA LETTER II
+0C89;N;KANNADA LETTER U
+0C8A;N;KANNADA LETTER UU
+0C8B;N;KANNADA LETTER VOCALIC R
+0C8C;N;KANNADA LETTER VOCALIC L
+0C8E;N;KANNADA LETTER E
+0C8F;N;KANNADA LETTER EE
+0C90;N;KANNADA LETTER AI
+0C92;N;KANNADA LETTER O
+0C93;N;KANNADA LETTER OO
+0C94;N;KANNADA LETTER AU
+0C95;N;KANNADA LETTER KA
+0C96;N;KANNADA LETTER KHA
+0C97;N;KANNADA LETTER GA
+0C98;N;KANNADA LETTER GHA
+0C99;N;KANNADA LETTER NGA
+0C9A;N;KANNADA LETTER CA
+0C9B;N;KANNADA LETTER CHA
+0C9C;N;KANNADA LETTER JA
+0C9D;N;KANNADA LETTER JHA
+0C9E;N;KANNADA LETTER NYA
+0C9F;N;KANNADA LETTER TTA
+0CA0;N;KANNADA LETTER TTHA
+0CA1;N;KANNADA LETTER DDA
+0CA2;N;KANNADA LETTER DDHA
+0CA3;N;KANNADA LETTER NNA
+0CA4;N;KANNADA LETTER TA
+0CA5;N;KANNADA LETTER THA
+0CA6;N;KANNADA LETTER DA
+0CA7;N;KANNADA LETTER DHA
+0CA8;N;KANNADA LETTER NA
+0CAA;N;KANNADA LETTER PA
+0CAB;N;KANNADA LETTER PHA
+0CAC;N;KANNADA LETTER BA
+0CAD;N;KANNADA LETTER BHA
+0CAE;N;KANNADA LETTER MA
+0CAF;N;KANNADA LETTER YA
+0CB0;N;KANNADA LETTER RA
+0CB1;N;KANNADA LETTER RRA
+0CB2;N;KANNADA LETTER LA
+0CB3;N;KANNADA LETTER LLA
+0CB5;N;KANNADA LETTER VA
+0CB6;N;KANNADA LETTER SHA
+0CB7;N;KANNADA LETTER SSA
+0CB8;N;KANNADA LETTER SA
+0CB9;N;KANNADA LETTER HA
+0CBE;N;KANNADA VOWEL SIGN AA
+0CBF;N;KANNADA VOWEL SIGN I
+0CC0;N;KANNADA VOWEL SIGN II
+0CC1;N;KANNADA VOWEL SIGN U
+0CC2;N;KANNADA VOWEL SIGN UU
+0CC3;N;KANNADA VOWEL SIGN VOCALIC R
+0CC4;N;KANNADA VOWEL SIGN VOCALIC RR
+0CC6;N;KANNADA VOWEL SIGN E
+0CC7;N;KANNADA VOWEL SIGN EE
+0CC8;N;KANNADA VOWEL SIGN AI
+0CCA;N;KANNADA VOWEL SIGN O
+0CCB;N;KANNADA VOWEL SIGN OO
+0CCC;N;KANNADA VOWEL SIGN AU
+0CCD;N;KANNADA SIGN VIRAMA
+0CD5;N;KANNADA LENGTH MARK
+0CD6;N;KANNADA AI LENGTH MARK
+0CDE;N;KANNADA LETTER FA
+0CE0;N;KANNADA LETTER VOCALIC RR
+0CE1;N;KANNADA LETTER VOCALIC LL
+0CE6;N;KANNADA DIGIT ZERO
+0CE7;N;KANNADA DIGIT ONE
+0CE8;N;KANNADA DIGIT TWO
+0CE9;N;KANNADA DIGIT THREE
+0CEA;N;KANNADA DIGIT FOUR
+0CEB;N;KANNADA DIGIT FIVE
+0CEC;N;KANNADA DIGIT SIX
+0CED;N;KANNADA DIGIT SEVEN
+0CEE;N;KANNADA DIGIT EIGHT
+0CEF;N;KANNADA DIGIT NINE
+0D02;N;MALAYALAM SIGN ANUSVARA
+0D03;N;MALAYALAM SIGN VISARGA
+0D05;N;MALAYALAM LETTER A
+0D06;N;MALAYALAM LETTER AA
+0D07;N;MALAYALAM LETTER I
+0D08;N;MALAYALAM LETTER II
+0D09;N;MALAYALAM LETTER U
+0D0A;N;MALAYALAM LETTER UU
+0D0B;N;MALAYALAM LETTER VOCALIC R
+0D0C;N;MALAYALAM LETTER VOCALIC L
+0D0E;N;MALAYALAM LETTER E
+0D0F;N;MALAYALAM LETTER EE
+0D10;N;MALAYALAM LETTER AI
+0D12;N;MALAYALAM LETTER O
+0D13;N;MALAYALAM LETTER OO
+0D14;N;MALAYALAM LETTER AU
+0D15;N;MALAYALAM LETTER KA
+0D16;N;MALAYALAM LETTER KHA
+0D17;N;MALAYALAM LETTER GA
+0D18;N;MALAYALAM LETTER GHA
+0D19;N;MALAYALAM LETTER NGA
+0D1A;N;MALAYALAM LETTER CA
+0D1B;N;MALAYALAM LETTER CHA
+0D1C;N;MALAYALAM LETTER JA
+0D1D;N;MALAYALAM LETTER JHA
+0D1E;N;MALAYALAM LETTER NYA
+0D1F;N;MALAYALAM LETTER TTA
+0D20;N;MALAYALAM LETTER TTHA
+0D21;N;MALAYALAM LETTER DDA
+0D22;N;MALAYALAM LETTER DDHA
+0D23;N;MALAYALAM LETTER NNA
+0D24;N;MALAYALAM LETTER TA
+0D25;N;MALAYALAM LETTER THA
+0D26;N;MALAYALAM LETTER DA
+0D27;N;MALAYALAM LETTER DHA
+0D28;N;MALAYALAM LETTER NA
+0D2A;N;MALAYALAM LETTER PA
+0D2B;N;MALAYALAM LETTER PHA
+0D2C;N;MALAYALAM LETTER BA
+0D2D;N;MALAYALAM LETTER BHA
+0D2E;N;MALAYALAM LETTER MA
+0D2F;N;MALAYALAM LETTER YA
+0D30;N;MALAYALAM LETTER RA
+0D31;N;MALAYALAM LETTER RRA
+0D32;N;MALAYALAM LETTER LA
+0D33;N;MALAYALAM LETTER LLA
+0D34;N;MALAYALAM LETTER LLLA
+0D35;N;MALAYALAM LETTER VA
+0D36;N;MALAYALAM LETTER SHA
+0D37;N;MALAYALAM LETTER SSA
+0D38;N;MALAYALAM LETTER SA
+0D39;N;MALAYALAM LETTER HA
+0D3E;N;MALAYALAM VOWEL SIGN AA
+0D3F;N;MALAYALAM VOWEL SIGN I
+0D40;N;MALAYALAM VOWEL SIGN II
+0D41;N;MALAYALAM VOWEL SIGN U
+0D42;N;MALAYALAM VOWEL SIGN UU
+0D43;N;MALAYALAM VOWEL SIGN VOCALIC R
+0D46;N;MALAYALAM VOWEL SIGN E
+0D47;N;MALAYALAM VOWEL SIGN EE
+0D48;N;MALAYALAM VOWEL SIGN AI
+0D4A;N;MALAYALAM VOWEL SIGN O
+0D4B;N;MALAYALAM VOWEL SIGN OO
+0D4C;N;MALAYALAM VOWEL SIGN AU
+0D4D;N;MALAYALAM SIGN VIRAMA
+0D57;N;MALAYALAM AU LENGTH MARK
+0D60;N;MALAYALAM LETTER VOCALIC RR
+0D61;N;MALAYALAM LETTER VOCALIC LL
+0D66;N;MALAYALAM DIGIT ZERO
+0D67;N;MALAYALAM DIGIT ONE
+0D68;N;MALAYALAM DIGIT TWO
+0D69;N;MALAYALAM DIGIT THREE
+0D6A;N;MALAYALAM DIGIT FOUR
+0D6B;N;MALAYALAM DIGIT FIVE
+0D6C;N;MALAYALAM DIGIT SIX
+0D6D;N;MALAYALAM DIGIT SEVEN
+0D6E;N;MALAYALAM DIGIT EIGHT
+0D6F;N;MALAYALAM DIGIT NINE
+0D82;N;SINHALA SIGN ANUSVARAYA
+0D83;N;SINHALA SIGN VISARGAYA
+0D85;N;SINHALA LETTER AYANNA
+0D86;N;SINHALA LETTER AAYANNA
+0D87;N;SINHALA LETTER AEYANNA
+0D88;N;SINHALA LETTER AEEYANNA
+0D89;N;SINHALA LETTER IYANNA
+0D8A;N;SINHALA LETTER IIYANNA
+0D8B;N;SINHALA LETTER UYANNA
+0D8C;N;SINHALA LETTER UUYANNA
+0D8D;N;SINHALA LETTER IRUYANNA
+0D8E;N;SINHALA LETTER IRUUYANNA
+0D8F;N;SINHALA LETTER ILUYANNA
+0D90;N;SINHALA LETTER ILUUYANNA
+0D91;N;SINHALA LETTER EYANNA
+0D92;N;SINHALA LETTER EEYANNA
+0D93;N;SINHALA LETTER AIYANNA
+0D94;N;SINHALA LETTER OYANNA
+0D95;N;SINHALA LETTER OOYANNA
+0D96;N;SINHALA LETTER AUYANNA
+0D9A;N;SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B;N;SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C;N;SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D;N;SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E;N;SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F;N;SINHALA LETTER SANYAKA GAYANNA
+0DA0;N;SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1;N;SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2;N;SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3;N;SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4;N;SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5;N;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6;N;SINHALA LETTER SANYAKA JAYANNA
+0DA7;N;SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8;N;SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9;N;SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA;N;SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB;N;SINHALA LETTER MUURDHAJA NAYANNA
+0DAC;N;SINHALA LETTER SANYAKA DDAYANNA
+0DAD;N;SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE;N;SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF;N;SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0;N;SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1;N;SINHALA LETTER DANTAJA NAYANNA
+0DB3;N;SINHALA LETTER SANYAKA DAYANNA
+0DB4;N;SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5;N;SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6;N;SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7;N;SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8;N;SINHALA LETTER MAYANNA
+0DB9;N;SINHALA LETTER AMBA BAYANNA
+0DBA;N;SINHALA LETTER YAYANNA
+0DBB;N;SINHALA LETTER RAYANNA
+0DBD;N;SINHALA LETTER DANTAJA LAYANNA
+0DC0;N;SINHALA LETTER VAYANNA
+0DC1;N;SINHALA LETTER TAALUJA SAYANNA
+0DC2;N;SINHALA LETTER MUURDHAJA SAYANNA
+0DC3;N;SINHALA LETTER DANTAJA SAYANNA
+0DC4;N;SINHALA LETTER HAYANNA
+0DC5;N;SINHALA LETTER MUURDHAJA LAYANNA
+0DC6;N;SINHALA LETTER FAYANNA
+0DCA;N;SINHALA SIGN AL-LAKUNA
+0DCF;N;SINHALA VOWEL SIGN AELA-PILLA
+0DD0;N;SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1;N;SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2;N;SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3;N;SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4;N;SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6;N;SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8;N;SINHALA VOWEL SIGN GAETTA-PILLA
+0DD9;N;SINHALA VOWEL SIGN KOMBUVA
+0DDA;N;SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB;N;SINHALA VOWEL SIGN KOMBU DEKA
+0DDC;N;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;N;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;N;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DDF;N;SINHALA VOWEL SIGN GAYANUKITTA
+0DF2;N;SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DF3;N;SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4;N;SINHALA PUNCTUATION KUNDDALIYA
+0E01;N;THAI CHARACTER KO KAI
+0E02;N;THAI CHARACTER KHO KHAI
+0E03;N;THAI CHARACTER KHO KHUAT
+0E04;N;THAI CHARACTER KHO KHWAI
+0E05;N;THAI CHARACTER KHO KHON
+0E06;N;THAI CHARACTER KHO RAKHANG
+0E07;N;THAI CHARACTER NGO NGU
+0E08;N;THAI CHARACTER CHO CHAN
+0E09;N;THAI CHARACTER CHO CHING
+0E0A;N;THAI CHARACTER CHO CHANG
+0E0B;N;THAI CHARACTER SO SO
+0E0C;N;THAI CHARACTER CHO CHOE
+0E0D;N;THAI CHARACTER YO YING
+0E0E;N;THAI CHARACTER DO CHADA
+0E0F;N;THAI CHARACTER TO PATAK
+0E10;N;THAI CHARACTER THO THAN
+0E11;N;THAI CHARACTER THO NANGMONTHO
+0E12;N;THAI CHARACTER THO PHUTHAO
+0E13;N;THAI CHARACTER NO NEN
+0E14;N;THAI CHARACTER DO DEK
+0E15;N;THAI CHARACTER TO TAO
+0E16;N;THAI CHARACTER THO THUNG
+0E17;N;THAI CHARACTER THO THAHAN
+0E18;N;THAI CHARACTER THO THONG
+0E19;N;THAI CHARACTER NO NU
+0E1A;N;THAI CHARACTER BO BAIMAI
+0E1B;N;THAI CHARACTER PO PLA
+0E1C;N;THAI CHARACTER PHO PHUNG
+0E1D;N;THAI CHARACTER FO FA
+0E1E;N;THAI CHARACTER PHO PHAN
+0E1F;N;THAI CHARACTER FO FAN
+0E20;N;THAI CHARACTER PHO SAMPHAO
+0E21;N;THAI CHARACTER MO MA
+0E22;N;THAI CHARACTER YO YAK
+0E23;N;THAI CHARACTER RO RUA
+0E24;N;THAI CHARACTER RU
+0E25;N;THAI CHARACTER LO LING
+0E26;N;THAI CHARACTER LU
+0E27;N;THAI CHARACTER WO WAEN
+0E28;N;THAI CHARACTER SO SALA
+0E29;N;THAI CHARACTER SO RUSI
+0E2A;N;THAI CHARACTER SO SUA
+0E2B;N;THAI CHARACTER HO HIP
+0E2C;N;THAI CHARACTER LO CHULA
+0E2D;N;THAI CHARACTER O ANG
+0E2E;N;THAI CHARACTER HO NOKHUK
+0E2F;N;THAI CHARACTER PAIYANNOI
+0E30;N;THAI CHARACTER SARA A
+0E31;N;THAI CHARACTER MAI HAN-AKAT
+0E32;N;THAI CHARACTER SARA AA
+0E33;N;THAI CHARACTER SARA AM
+0E34;N;THAI CHARACTER SARA I
+0E35;N;THAI CHARACTER SARA II
+0E36;N;THAI CHARACTER SARA UE
+0E37;N;THAI CHARACTER SARA UEE
+0E38;N;THAI CHARACTER SARA U
+0E39;N;THAI CHARACTER SARA UU
+0E3A;N;THAI CHARACTER PHINTHU
+0E3F;N;THAI CURRENCY SYMBOL BAHT
+0E40;N;THAI CHARACTER SARA E
+0E41;N;THAI CHARACTER SARA AE
+0E42;N;THAI CHARACTER SARA O
+0E43;N;THAI CHARACTER SARA AI MAIMUAN
+0E44;N;THAI CHARACTER SARA AI MAIMALAI
+0E45;N;THAI CHARACTER LAKKHANGYAO
+0E46;N;THAI CHARACTER MAIYAMOK
+0E47;N;THAI CHARACTER MAITAIKHU
+0E48;N;THAI CHARACTER MAI EK
+0E49;N;THAI CHARACTER MAI THO
+0E4A;N;THAI CHARACTER MAI TRI
+0E4B;N;THAI CHARACTER MAI CHATTAWA
+0E4C;N;THAI CHARACTER THANTHAKHAT
+0E4D;N;THAI CHARACTER NIKHAHIT
+0E4E;N;THAI CHARACTER YAMAKKAN
+0E4F;N;THAI CHARACTER FONGMAN
+0E50;N;THAI DIGIT ZERO
+0E51;N;THAI DIGIT ONE
+0E52;N;THAI DIGIT TWO
+0E53;N;THAI DIGIT THREE
+0E54;N;THAI DIGIT FOUR
+0E55;N;THAI DIGIT FIVE
+0E56;N;THAI DIGIT SIX
+0E57;N;THAI DIGIT SEVEN
+0E58;N;THAI DIGIT EIGHT
+0E59;N;THAI DIGIT NINE
+0E5A;N;THAI CHARACTER ANGKHANKHU
+0E5B;N;THAI CHARACTER KHOMUT
+0E81;N;LAO LETTER KO
+0E82;N;LAO LETTER KHO SUNG
+0E84;N;LAO LETTER KHO TAM
+0E87;N;LAO LETTER NGO
+0E88;N;LAO LETTER CO
+0E8A;N;LAO LETTER SO TAM
+0E8D;N;LAO LETTER NYO
+0E94;N;LAO LETTER DO
+0E95;N;LAO LETTER TO
+0E96;N;LAO LETTER THO SUNG
+0E97;N;LAO LETTER THO TAM
+0E99;N;LAO LETTER NO
+0E9A;N;LAO LETTER BO
+0E9B;N;LAO LETTER PO
+0E9C;N;LAO LETTER PHO SUNG
+0E9D;N;LAO LETTER FO TAM
+0E9E;N;LAO LETTER PHO TAM
+0E9F;N;LAO LETTER FO SUNG
+0EA1;N;LAO LETTER MO
+0EA2;N;LAO LETTER YO
+0EA3;N;LAO LETTER LO LING
+0EA5;N;LAO LETTER LO LOOT
+0EA7;N;LAO LETTER WO
+0EAA;N;LAO LETTER SO SUNG
+0EAB;N;LAO LETTER HO SUNG
+0EAD;N;LAO LETTER O
+0EAE;N;LAO LETTER HO TAM
+0EAF;N;LAO ELLIPSIS
+0EB0;N;LAO VOWEL SIGN A
+0EB1;N;LAO VOWEL SIGN MAI KAN
+0EB2;N;LAO VOWEL SIGN AA
+0EB3;N;LAO VOWEL SIGN AM
+0EB4;N;LAO VOWEL SIGN I
+0EB5;N;LAO VOWEL SIGN II
+0EB6;N;LAO VOWEL SIGN Y
+0EB7;N;LAO VOWEL SIGN YY
+0EB8;N;LAO VOWEL SIGN U
+0EB9;N;LAO VOWEL SIGN UU
+0EBB;N;LAO VOWEL SIGN MAI KON
+0EBC;N;LAO SEMIVOWEL SIGN LO
+0EBD;N;LAO SEMIVOWEL SIGN NYO
+0EC0;N;LAO VOWEL SIGN E
+0EC1;N;LAO VOWEL SIGN EI
+0EC2;N;LAO VOWEL SIGN O
+0EC3;N;LAO VOWEL SIGN AY
+0EC4;N;LAO VOWEL SIGN AI
+0EC6;N;LAO KO LA
+0EC8;N;LAO TONE MAI EK
+0EC9;N;LAO TONE MAI THO
+0ECA;N;LAO TONE MAI TI
+0ECB;N;LAO TONE MAI CATAWA
+0ECC;N;LAO CANCELLATION MARK
+0ECD;N;LAO NIGGAHITA
+0ED0;N;LAO DIGIT ZERO
+0ED1;N;LAO DIGIT ONE
+0ED2;N;LAO DIGIT TWO
+0ED3;N;LAO DIGIT THREE
+0ED4;N;LAO DIGIT FOUR
+0ED5;N;LAO DIGIT FIVE
+0ED6;N;LAO DIGIT SIX
+0ED7;N;LAO DIGIT SEVEN
+0ED8;N;LAO DIGIT EIGHT
+0ED9;N;LAO DIGIT NINE
+0EDC;N;LAO HO NO
+0EDD;N;LAO HO MO
+0F00;N;TIBETAN SYLLABLE OM
+0F01;N;TIBETAN MARK GTER YIG MGO TRUNCATED A
+0F02;N;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0F03;N;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04;N;TIBETAN MARK INITIAL YIG MGO MDUN MA
+0F05;N;TIBETAN MARK CLOSING YIG MGO SGAB MA
+0F06;N;TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0F07;N;TIBETAN MARK YIG MGO TSHEG SHAD MA
+0F08;N;TIBETAN MARK SBRUL SHAD
+0F09;N;TIBETAN MARK BSKUR YIG MGO
+0F0A;N;TIBETAN MARK BKA- SHOG YIG MGO
+0F0B;N;TIBETAN MARK INTERSYLLABIC TSHEG
+0F0C;N;TIBETAN MARK DELIMITER TSHEG BSTAR
+0F0D;N;TIBETAN MARK SHAD
+0F0E;N;TIBETAN MARK NYIS SHAD
+0F0F;N;TIBETAN MARK TSHEG SHAD
+0F10;N;TIBETAN MARK NYIS TSHEG SHAD
+0F11;N;TIBETAN MARK RIN CHEN SPUNGS SHAD
+0F12;N;TIBETAN MARK RGYA GRAM SHAD
+0F13;N;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0F14;N;TIBETAN MARK GTER TSHEG
+0F15;N;TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0F16;N;TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0F17;N;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18;N;TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19;N;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A;N;TIBETAN SIGN RDEL DKAR GCIG
+0F1B;N;TIBETAN SIGN RDEL DKAR GNYIS
+0F1C;N;TIBETAN SIGN RDEL DKAR GSUM
+0F1D;N;TIBETAN SIGN RDEL NAG GCIG
+0F1E;N;TIBETAN SIGN RDEL NAG GNYIS
+0F1F;N;TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20;N;TIBETAN DIGIT ZERO
+0F21;N;TIBETAN DIGIT ONE
+0F22;N;TIBETAN DIGIT TWO
+0F23;N;TIBETAN DIGIT THREE
+0F24;N;TIBETAN DIGIT FOUR
+0F25;N;TIBETAN DIGIT FIVE
+0F26;N;TIBETAN DIGIT SIX
+0F27;N;TIBETAN DIGIT SEVEN
+0F28;N;TIBETAN DIGIT EIGHT
+0F29;N;TIBETAN DIGIT NINE
+0F2A;N;TIBETAN DIGIT HALF ONE
+0F2B;N;TIBETAN DIGIT HALF TWO
+0F2C;N;TIBETAN DIGIT HALF THREE
+0F2D;N;TIBETAN DIGIT HALF FOUR
+0F2E;N;TIBETAN DIGIT HALF FIVE
+0F2F;N;TIBETAN DIGIT HALF SIX
+0F30;N;TIBETAN DIGIT HALF SEVEN
+0F31;N;TIBETAN DIGIT HALF EIGHT
+0F32;N;TIBETAN DIGIT HALF NINE
+0F33;N;TIBETAN DIGIT HALF ZERO
+0F34;N;TIBETAN MARK BSDUS RTAGS
+0F35;N;TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36;N;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37;N;TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38;N;TIBETAN MARK CHE MGO
+0F39;N;TIBETAN MARK TSA -PHRU
+0F3A;N;TIBETAN MARK GUG RTAGS GYON
+0F3B;N;TIBETAN MARK GUG RTAGS GYAS
+0F3C;N;TIBETAN MARK ANG KHANG GYON
+0F3D;N;TIBETAN MARK ANG KHANG GYAS
+0F3E;N;TIBETAN SIGN YAR TSHES
+0F3F;N;TIBETAN SIGN MAR TSHES
+0F40;N;TIBETAN LETTER KA
+0F41;N;TIBETAN LETTER KHA
+0F42;N;TIBETAN LETTER GA
+0F43;N;TIBETAN LETTER GHA
+0F44;N;TIBETAN LETTER NGA
+0F45;N;TIBETAN LETTER CA
+0F46;N;TIBETAN LETTER CHA
+0F47;N;TIBETAN LETTER JA
+0F49;N;TIBETAN LETTER NYA
+0F4A;N;TIBETAN LETTER TTA
+0F4B;N;TIBETAN LETTER TTHA
+0F4C;N;TIBETAN LETTER DDA
+0F4D;N;TIBETAN LETTER DDHA
+0F4E;N;TIBETAN LETTER NNA
+0F4F;N;TIBETAN LETTER TA
+0F50;N;TIBETAN LETTER THA
+0F51;N;TIBETAN LETTER DA
+0F52;N;TIBETAN LETTER DHA
+0F53;N;TIBETAN LETTER NA
+0F54;N;TIBETAN LETTER PA
+0F55;N;TIBETAN LETTER PHA
+0F56;N;TIBETAN LETTER BA
+0F57;N;TIBETAN LETTER BHA
+0F58;N;TIBETAN LETTER MA
+0F59;N;TIBETAN LETTER TSA
+0F5A;N;TIBETAN LETTER TSHA
+0F5B;N;TIBETAN LETTER DZA
+0F5C;N;TIBETAN LETTER DZHA
+0F5D;N;TIBETAN LETTER WA
+0F5E;N;TIBETAN LETTER ZHA
+0F5F;N;TIBETAN LETTER ZA
+0F60;N;TIBETAN LETTER -A
+0F61;N;TIBETAN LETTER YA
+0F62;N;TIBETAN LETTER RA
+0F63;N;TIBETAN LETTER LA
+0F64;N;TIBETAN LETTER SHA
+0F65;N;TIBETAN LETTER SSA
+0F66;N;TIBETAN LETTER SA
+0F67;N;TIBETAN LETTER HA
+0F68;N;TIBETAN LETTER A
+0F69;N;TIBETAN LETTER KSSA
+0F6A;N;TIBETAN LETTER FIXED-FORM RA
+0F71;N;TIBETAN VOWEL SIGN AA
+0F72;N;TIBETAN VOWEL SIGN I
+0F73;N;TIBETAN VOWEL SIGN II
+0F74;N;TIBETAN VOWEL SIGN U
+0F75;N;TIBETAN VOWEL SIGN UU
+0F76;N;TIBETAN VOWEL SIGN VOCALIC R
+0F77;N;TIBETAN VOWEL SIGN VOCALIC RR
+0F78;N;TIBETAN VOWEL SIGN VOCALIC L
+0F79;N;TIBETAN VOWEL SIGN VOCALIC LL
+0F7A;N;TIBETAN VOWEL SIGN E
+0F7B;N;TIBETAN VOWEL SIGN EE
+0F7C;N;TIBETAN VOWEL SIGN O
+0F7D;N;TIBETAN VOWEL SIGN OO
+0F7E;N;TIBETAN SIGN RJES SU NGA RO
+0F7F;N;TIBETAN SIGN RNAM BCAD
+0F80;N;TIBETAN VOWEL SIGN REVERSED I
+0F81;N;TIBETAN VOWEL SIGN REVERSED II
+0F82;N;TIBETAN SIGN NYI ZLA NAA DA
+0F83;N;TIBETAN SIGN SNA LDAN
+0F84;N;TIBETAN MARK HALANTA
+0F85;N;TIBETAN MARK PALUTA
+0F86;N;TIBETAN SIGN LCI RTAGS
+0F87;N;TIBETAN SIGN YANG RTAGS
+0F88;N;TIBETAN SIGN LCE TSA CAN
+0F89;N;TIBETAN SIGN MCHU CAN
+0F8A;N;TIBETAN SIGN GRU CAN RGYINGS
+0F8B;N;TIBETAN SIGN GRU MED RGYINGS
+0F90;N;TIBETAN SUBJOINED LETTER KA
+0F91;N;TIBETAN SUBJOINED LETTER KHA
+0F92;N;TIBETAN SUBJOINED LETTER GA
+0F93;N;TIBETAN SUBJOINED LETTER GHA
+0F94;N;TIBETAN SUBJOINED LETTER NGA
+0F95;N;TIBETAN SUBJOINED LETTER CA
+0F96;N;TIBETAN SUBJOINED LETTER CHA
+0F97;N;TIBETAN SUBJOINED LETTER JA
+0F99;N;TIBETAN SUBJOINED LETTER NYA
+0F9A;N;TIBETAN SUBJOINED LETTER TTA
+0F9B;N;TIBETAN SUBJOINED LETTER TTHA
+0F9C;N;TIBETAN SUBJOINED LETTER DDA
+0F9D;N;TIBETAN SUBJOINED LETTER DDHA
+0F9E;N;TIBETAN SUBJOINED LETTER NNA
+0F9F;N;TIBETAN SUBJOINED LETTER TA
+0FA0;N;TIBETAN SUBJOINED LETTER THA
+0FA1;N;TIBETAN SUBJOINED LETTER DA
+0FA2;N;TIBETAN SUBJOINED LETTER DHA
+0FA3;N;TIBETAN SUBJOINED LETTER NA
+0FA4;N;TIBETAN SUBJOINED LETTER PA
+0FA5;N;TIBETAN SUBJOINED LETTER PHA
+0FA6;N;TIBETAN SUBJOINED LETTER BA
+0FA7;N;TIBETAN SUBJOINED LETTER BHA
+0FA8;N;TIBETAN SUBJOINED LETTER MA
+0FA9;N;TIBETAN SUBJOINED LETTER TSA
+0FAA;N;TIBETAN SUBJOINED LETTER TSHA
+0FAB;N;TIBETAN SUBJOINED LETTER DZA
+0FAC;N;TIBETAN SUBJOINED LETTER DZHA
+0FAD;N;TIBETAN SUBJOINED LETTER WA
+0FAE;N;TIBETAN SUBJOINED LETTER ZHA
+0FAF;N;TIBETAN SUBJOINED LETTER ZA
+0FB0;N;TIBETAN SUBJOINED LETTER -A
+0FB1;N;TIBETAN SUBJOINED LETTER YA
+0FB2;N;TIBETAN SUBJOINED LETTER RA
+0FB3;N;TIBETAN SUBJOINED LETTER LA
+0FB4;N;TIBETAN SUBJOINED LETTER SHA
+0FB5;N;TIBETAN SUBJOINED LETTER SSA
+0FB6;N;TIBETAN SUBJOINED LETTER SA
+0FB7;N;TIBETAN SUBJOINED LETTER HA
+0FB8;N;TIBETAN SUBJOINED LETTER A
+0FB9;N;TIBETAN SUBJOINED LETTER KSSA
+0FBA;N;TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0FBB;N;TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0FBC;N;TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE;N;TIBETAN KU RU KHA
+0FBF;N;TIBETAN KU RU KHA BZHI MIG CAN
+0FC0;N;TIBETAN CANTILLATION SIGN HEAVY BEAT
+0FC1;N;TIBETAN CANTILLATION SIGN LIGHT BEAT
+0FC2;N;TIBETAN CANTILLATION SIGN CANG TE-U
+0FC3;N;TIBETAN CANTILLATION SIGN SBUB -CHAL
+0FC4;N;TIBETAN SYMBOL DRIL BU
+0FC5;N;TIBETAN SYMBOL RDO RJE
+0FC6;N;TIBETAN SYMBOL PADMA GDAN
+0FC7;N;TIBETAN SYMBOL RDO RJE RGYA GRAM
+0FC8;N;TIBETAN SYMBOL PHUR PA
+0FC9;N;TIBETAN SYMBOL NOR BU
+0FCA;N;TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0FCB;N;TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0FCC;N;TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF;N;TIBETAN SIGN RDEL NAG GSUM
+1000;N;MYANMAR LETTER KA
+1001;N;MYANMAR LETTER KHA
+1002;N;MYANMAR LETTER GA
+1003;N;MYANMAR LETTER GHA
+1004;N;MYANMAR LETTER NGA
+1005;N;MYANMAR LETTER CA
+1006;N;MYANMAR LETTER CHA
+1007;N;MYANMAR LETTER JA
+1008;N;MYANMAR LETTER JHA
+1009;N;MYANMAR LETTER NYA
+100A;N;MYANMAR LETTER NNYA
+100B;N;MYANMAR LETTER TTA
+100C;N;MYANMAR LETTER TTHA
+100D;N;MYANMAR LETTER DDA
+100E;N;MYANMAR LETTER DDHA
+100F;N;MYANMAR LETTER NNA
+1010;N;MYANMAR LETTER TA
+1011;N;MYANMAR LETTER THA
+1012;N;MYANMAR LETTER DA
+1013;N;MYANMAR LETTER DHA
+1014;N;MYANMAR LETTER NA
+1015;N;MYANMAR LETTER PA
+1016;N;MYANMAR LETTER PHA
+1017;N;MYANMAR LETTER BA
+1018;N;MYANMAR LETTER BHA
+1019;N;MYANMAR LETTER MA
+101A;N;MYANMAR LETTER YA
+101B;N;MYANMAR LETTER RA
+101C;N;MYANMAR LETTER LA
+101D;N;MYANMAR LETTER WA
+101E;N;MYANMAR LETTER SA
+101F;N;MYANMAR LETTER HA
+1020;N;MYANMAR LETTER LLA
+1021;N;MYANMAR LETTER A
+1023;N;MYANMAR LETTER I
+1024;N;MYANMAR LETTER II
+1025;N;MYANMAR LETTER U
+1026;N;MYANMAR LETTER UU
+1027;N;MYANMAR LETTER E
+1029;N;MYANMAR LETTER O
+102A;N;MYANMAR LETTER AU
+102C;N;MYANMAR VOWEL SIGN AA
+102D;N;MYANMAR VOWEL SIGN I
+102E;N;MYANMAR VOWEL SIGN II
+102F;N;MYANMAR VOWEL SIGN U
+1030;N;MYANMAR VOWEL SIGN UU
+1031;N;MYANMAR VOWEL SIGN E
+1032;N;MYANMAR VOWEL SIGN AI
+1036;N;MYANMAR SIGN ANUSVARA
+1037;N;MYANMAR SIGN DOT BELOW
+1038;N;MYANMAR SIGN VISARGA
+1039;N;MYANMAR SIGN VIRAMA
+1040;N;MYANMAR DIGIT ZERO
+1041;N;MYANMAR DIGIT ONE
+1042;N;MYANMAR DIGIT TWO
+1043;N;MYANMAR DIGIT THREE
+1044;N;MYANMAR DIGIT FOUR
+1045;N;MYANMAR DIGIT FIVE
+1046;N;MYANMAR DIGIT SIX
+1047;N;MYANMAR DIGIT SEVEN
+1048;N;MYANMAR DIGIT EIGHT
+1049;N;MYANMAR DIGIT NINE
+104A;N;MYANMAR SIGN LITTLE SECTION
+104B;N;MYANMAR SIGN SECTION
+104C;N;MYANMAR SYMBOL LOCATIVE
+104D;N;MYANMAR SYMBOL COMPLETED
+104E;N;MYANMAR SYMBOL AFOREMENTIONED
+104F;N;MYANMAR SYMBOL GENITIVE
+1050;N;MYANMAR LETTER SHA
+1051;N;MYANMAR LETTER SSA
+1052;N;MYANMAR LETTER VOCALIC R
+1053;N;MYANMAR LETTER VOCALIC RR
+1054;N;MYANMAR LETTER VOCALIC L
+1055;N;MYANMAR LETTER VOCALIC LL
+1056;N;MYANMAR VOWEL SIGN VOCALIC R
+1057;N;MYANMAR VOWEL SIGN VOCALIC RR
+1058;N;MYANMAR VOWEL SIGN VOCALIC L
+1059;N;MYANMAR VOWEL SIGN VOCALIC LL
+10A0;N;GEORGIAN CAPITAL LETTER AN
+10A1;N;GEORGIAN CAPITAL LETTER BAN
+10A2;N;GEORGIAN CAPITAL LETTER GAN
+10A3;N;GEORGIAN CAPITAL LETTER DON
+10A4;N;GEORGIAN CAPITAL LETTER EN
+10A5;N;GEORGIAN CAPITAL LETTER VIN
+10A6;N;GEORGIAN CAPITAL LETTER ZEN
+10A7;N;GEORGIAN CAPITAL LETTER TAN
+10A8;N;GEORGIAN CAPITAL LETTER IN
+10A9;N;GEORGIAN CAPITAL LETTER KAN
+10AA;N;GEORGIAN CAPITAL LETTER LAS
+10AB;N;GEORGIAN CAPITAL LETTER MAN
+10AC;N;GEORGIAN CAPITAL LETTER NAR
+10AD;N;GEORGIAN CAPITAL LETTER ON
+10AE;N;GEORGIAN CAPITAL LETTER PAR
+10AF;N;GEORGIAN CAPITAL LETTER ZHAR
+10B0;N;GEORGIAN CAPITAL LETTER RAE
+10B1;N;GEORGIAN CAPITAL LETTER SAN
+10B2;N;GEORGIAN CAPITAL LETTER TAR
+10B3;N;GEORGIAN CAPITAL LETTER UN
+10B4;N;GEORGIAN CAPITAL LETTER PHAR
+10B5;N;GEORGIAN CAPITAL LETTER KHAR
+10B6;N;GEORGIAN CAPITAL LETTER GHAN
+10B7;N;GEORGIAN CAPITAL LETTER QAR
+10B8;N;GEORGIAN CAPITAL LETTER SHIN
+10B9;N;GEORGIAN CAPITAL LETTER CHIN
+10BA;N;GEORGIAN CAPITAL LETTER CAN
+10BB;N;GEORGIAN CAPITAL LETTER JIL
+10BC;N;GEORGIAN CAPITAL LETTER CIL
+10BD;N;GEORGIAN CAPITAL LETTER CHAR
+10BE;N;GEORGIAN CAPITAL LETTER XAN
+10BF;N;GEORGIAN CAPITAL LETTER JHAN
+10C0;N;GEORGIAN CAPITAL LETTER HAE
+10C1;N;GEORGIAN CAPITAL LETTER HE
+10C2;N;GEORGIAN CAPITAL LETTER HIE
+10C3;N;GEORGIAN CAPITAL LETTER WE
+10C4;N;GEORGIAN CAPITAL LETTER HAR
+10C5;N;GEORGIAN CAPITAL LETTER HOE
+10D0;N;GEORGIAN LETTER AN
+10D1;N;GEORGIAN LETTER BAN
+10D2;N;GEORGIAN LETTER GAN
+10D3;N;GEORGIAN LETTER DON
+10D4;N;GEORGIAN LETTER EN
+10D5;N;GEORGIAN LETTER VIN
+10D6;N;GEORGIAN LETTER ZEN
+10D7;N;GEORGIAN LETTER TAN
+10D8;N;GEORGIAN LETTER IN
+10D9;N;GEORGIAN LETTER KAN
+10DA;N;GEORGIAN LETTER LAS
+10DB;N;GEORGIAN LETTER MAN
+10DC;N;GEORGIAN LETTER NAR
+10DD;N;GEORGIAN LETTER ON
+10DE;N;GEORGIAN LETTER PAR
+10DF;N;GEORGIAN LETTER ZHAR
+10E0;N;GEORGIAN LETTER RAE
+10E1;N;GEORGIAN LETTER SAN
+10E2;N;GEORGIAN LETTER TAR
+10E3;N;GEORGIAN LETTER UN
+10E4;N;GEORGIAN LETTER PHAR
+10E5;N;GEORGIAN LETTER KHAR
+10E6;N;GEORGIAN LETTER GHAN
+10E7;N;GEORGIAN LETTER QAR
+10E8;N;GEORGIAN LETTER SHIN
+10E9;N;GEORGIAN LETTER CHIN
+10EA;N;GEORGIAN LETTER CAN
+10EB;N;GEORGIAN LETTER JIL
+10EC;N;GEORGIAN LETTER CIL
+10ED;N;GEORGIAN LETTER CHAR
+10EE;N;GEORGIAN LETTER XAN
+10EF;N;GEORGIAN LETTER JHAN
+10F0;N;GEORGIAN LETTER HAE
+10F1;N;GEORGIAN LETTER HE
+10F2;N;GEORGIAN LETTER HIE
+10F3;N;GEORGIAN LETTER WE
+10F4;N;GEORGIAN LETTER HAR
+10F5;N;GEORGIAN LETTER HOE
+10F6;N;GEORGIAN LETTER FI
+10FB;N;GEORGIAN PARAGRAPH SEPARATOR
+1100;W;HANGUL CHOSEONG KIYEOK
+1101;W;HANGUL CHOSEONG SSANGKIYEOK
+1102;W;HANGUL CHOSEONG NIEUN
+1103;W;HANGUL CHOSEONG TIKEUT
+1104;W;HANGUL CHOSEONG SSANGTIKEUT
+1105;W;HANGUL CHOSEONG RIEUL
+1106;W;HANGUL CHOSEONG MIEUM
+1107;W;HANGUL CHOSEONG PIEUP
+1108;W;HANGUL CHOSEONG SSANGPIEUP
+1109;W;HANGUL CHOSEONG SIOS
+110A;W;HANGUL CHOSEONG SSANGSIOS
+110B;W;HANGUL CHOSEONG IEUNG
+110C;W;HANGUL CHOSEONG CIEUC
+110D;W;HANGUL CHOSEONG SSANGCIEUC
+110E;W;HANGUL CHOSEONG CHIEUCH
+110F;W;HANGUL CHOSEONG KHIEUKH
+1110;W;HANGUL CHOSEONG THIEUTH
+1111;W;HANGUL CHOSEONG PHIEUPH
+1112;W;HANGUL CHOSEONG HIEUH
+1113;W;HANGUL CHOSEONG NIEUN-KIYEOK
+1114;W;HANGUL CHOSEONG SSANGNIEUN
+1115;W;HANGUL CHOSEONG NIEUN-TIKEUT
+1116;W;HANGUL CHOSEONG NIEUN-PIEUP
+1117;W;HANGUL CHOSEONG TIKEUT-KIYEOK
+1118;W;HANGUL CHOSEONG RIEUL-NIEUN
+1119;W;HANGUL CHOSEONG SSANGRIEUL
+111A;W;HANGUL CHOSEONG RIEUL-HIEUH
+111B;W;HANGUL CHOSEONG KAPYEOUNRIEUL
+111C;W;HANGUL CHOSEONG MIEUM-PIEUP
+111D;W;HANGUL CHOSEONG KAPYEOUNMIEUM
+111E;W;HANGUL CHOSEONG PIEUP-KIYEOK
+111F;W;HANGUL CHOSEONG PIEUP-NIEUN
+1120;W;HANGUL CHOSEONG PIEUP-TIKEUT
+1121;W;HANGUL CHOSEONG PIEUP-SIOS
+1122;W;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123;W;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124;W;HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125;W;HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126;W;HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127;W;HANGUL CHOSEONG PIEUP-CIEUC
+1128;W;HANGUL CHOSEONG PIEUP-CHIEUCH
+1129;W;HANGUL CHOSEONG PIEUP-THIEUTH
+112A;W;HANGUL CHOSEONG PIEUP-PHIEUPH
+112B;W;HANGUL CHOSEONG KAPYEOUNPIEUP
+112C;W;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112D;W;HANGUL CHOSEONG SIOS-KIYEOK
+112E;W;HANGUL CHOSEONG SIOS-NIEUN
+112F;W;HANGUL CHOSEONG SIOS-TIKEUT
+1130;W;HANGUL CHOSEONG SIOS-RIEUL
+1131;W;HANGUL CHOSEONG SIOS-MIEUM
+1132;W;HANGUL CHOSEONG SIOS-PIEUP
+1133;W;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134;W;HANGUL CHOSEONG SIOS-SSANGSIOS
+1135;W;HANGUL CHOSEONG SIOS-IEUNG
+1136;W;HANGUL CHOSEONG SIOS-CIEUC
+1137;W;HANGUL CHOSEONG SIOS-CHIEUCH
+1138;W;HANGUL CHOSEONG SIOS-KHIEUKH
+1139;W;HANGUL CHOSEONG SIOS-THIEUTH
+113A;W;HANGUL CHOSEONG SIOS-PHIEUPH
+113B;W;HANGUL CHOSEONG SIOS-HIEUH
+113C;W;HANGUL CHOSEONG CHITUEUMSIOS
+113D;W;HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E;W;HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F;W;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140;W;HANGUL CHOSEONG PANSIOS
+1141;W;HANGUL CHOSEONG IEUNG-KIYEOK
+1142;W;HANGUL CHOSEONG IEUNG-TIKEUT
+1143;W;HANGUL CHOSEONG IEUNG-MIEUM
+1144;W;HANGUL CHOSEONG IEUNG-PIEUP
+1145;W;HANGUL CHOSEONG IEUNG-SIOS
+1146;W;HANGUL CHOSEONG IEUNG-PANSIOS
+1147;W;HANGUL CHOSEONG SSANGIEUNG
+1148;W;HANGUL CHOSEONG IEUNG-CIEUC
+1149;W;HANGUL CHOSEONG IEUNG-CHIEUCH
+114A;W;HANGUL CHOSEONG IEUNG-THIEUTH
+114B;W;HANGUL CHOSEONG IEUNG-PHIEUPH
+114C;W;HANGUL CHOSEONG YESIEUNG
+114D;W;HANGUL CHOSEONG CIEUC-IEUNG
+114E;W;HANGUL CHOSEONG CHITUEUMCIEUC
+114F;W;HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150;W;HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151;W;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152;W;HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153;W;HANGUL CHOSEONG CHIEUCH-HIEUH
+1154;W;HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155;W;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156;W;HANGUL CHOSEONG PHIEUPH-PIEUP
+1157;W;HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158;W;HANGUL CHOSEONG SSANGHIEUH
+1159;W;HANGUL CHOSEONG YEORINHIEUH
+115F;W;HANGUL CHOSEONG FILLER
+1160;N;HANGUL JUNGSEONG FILLER
+1161;N;HANGUL JUNGSEONG A
+1162;N;HANGUL JUNGSEONG AE
+1163;N;HANGUL JUNGSEONG YA
+1164;N;HANGUL JUNGSEONG YAE
+1165;N;HANGUL JUNGSEONG EO
+1166;N;HANGUL JUNGSEONG E
+1167;N;HANGUL JUNGSEONG YEO
+1168;N;HANGUL JUNGSEONG YE
+1169;N;HANGUL JUNGSEONG O
+116A;N;HANGUL JUNGSEONG WA
+116B;N;HANGUL JUNGSEONG WAE
+116C;N;HANGUL JUNGSEONG OE
+116D;N;HANGUL JUNGSEONG YO
+116E;N;HANGUL JUNGSEONG U
+116F;N;HANGUL JUNGSEONG WEO
+1170;N;HANGUL JUNGSEONG WE
+1171;N;HANGUL JUNGSEONG WI
+1172;N;HANGUL JUNGSEONG YU
+1173;N;HANGUL JUNGSEONG EU
+1174;N;HANGUL JUNGSEONG YI
+1175;N;HANGUL JUNGSEONG I
+1176;N;HANGUL JUNGSEONG A-O
+1177;N;HANGUL JUNGSEONG A-U
+1178;N;HANGUL JUNGSEONG YA-O
+1179;N;HANGUL JUNGSEONG YA-YO
+117A;N;HANGUL JUNGSEONG EO-O
+117B;N;HANGUL JUNGSEONG EO-U
+117C;N;HANGUL JUNGSEONG EO-EU
+117D;N;HANGUL JUNGSEONG YEO-O
+117E;N;HANGUL JUNGSEONG YEO-U
+117F;N;HANGUL JUNGSEONG O-EO
+1180;N;HANGUL JUNGSEONG O-E
+1181;N;HANGUL JUNGSEONG O-YE
+1182;N;HANGUL JUNGSEONG O-O
+1183;N;HANGUL JUNGSEONG O-U
+1184;N;HANGUL JUNGSEONG YO-YA
+1185;N;HANGUL JUNGSEONG YO-YAE
+1186;N;HANGUL JUNGSEONG YO-YEO
+1187;N;HANGUL JUNGSEONG YO-O
+1188;N;HANGUL JUNGSEONG YO-I
+1189;N;HANGUL JUNGSEONG U-A
+118A;N;HANGUL JUNGSEONG U-AE
+118B;N;HANGUL JUNGSEONG U-EO-EU
+118C;N;HANGUL JUNGSEONG U-YE
+118D;N;HANGUL JUNGSEONG U-U
+118E;N;HANGUL JUNGSEONG YU-A
+118F;N;HANGUL JUNGSEONG YU-EO
+1190;N;HANGUL JUNGSEONG YU-E
+1191;N;HANGUL JUNGSEONG YU-YEO
+1192;N;HANGUL JUNGSEONG YU-YE
+1193;N;HANGUL JUNGSEONG YU-U
+1194;N;HANGUL JUNGSEONG YU-I
+1195;N;HANGUL JUNGSEONG EU-U
+1196;N;HANGUL JUNGSEONG EU-EU
+1197;N;HANGUL JUNGSEONG YI-U
+1198;N;HANGUL JUNGSEONG I-A
+1199;N;HANGUL JUNGSEONG I-YA
+119A;N;HANGUL JUNGSEONG I-O
+119B;N;HANGUL JUNGSEONG I-U
+119C;N;HANGUL JUNGSEONG I-EU
+119D;N;HANGUL JUNGSEONG I-ARAEA
+119E;N;HANGUL JUNGSEONG ARAEA
+119F;N;HANGUL JUNGSEONG ARAEA-EO
+11A0;N;HANGUL JUNGSEONG ARAEA-U
+11A1;N;HANGUL JUNGSEONG ARAEA-I
+11A2;N;HANGUL JUNGSEONG SSANGARAEA
+11A8;N;HANGUL JONGSEONG KIYEOK
+11A9;N;HANGUL JONGSEONG SSANGKIYEOK
+11AA;N;HANGUL JONGSEONG KIYEOK-SIOS
+11AB;N;HANGUL JONGSEONG NIEUN
+11AC;N;HANGUL JONGSEONG NIEUN-CIEUC
+11AD;N;HANGUL JONGSEONG NIEUN-HIEUH
+11AE;N;HANGUL JONGSEONG TIKEUT
+11AF;N;HANGUL JONGSEONG RIEUL
+11B0;N;HANGUL JONGSEONG RIEUL-KIYEOK
+11B1;N;HANGUL JONGSEONG RIEUL-MIEUM
+11B2;N;HANGUL JONGSEONG RIEUL-PIEUP
+11B3;N;HANGUL JONGSEONG RIEUL-SIOS
+11B4;N;HANGUL JONGSEONG RIEUL-THIEUTH
+11B5;N;HANGUL JONGSEONG RIEUL-PHIEUPH
+11B6;N;HANGUL JONGSEONG RIEUL-HIEUH
+11B7;N;HANGUL JONGSEONG MIEUM
+11B8;N;HANGUL JONGSEONG PIEUP
+11B9;N;HANGUL JONGSEONG PIEUP-SIOS
+11BA;N;HANGUL JONGSEONG SIOS
+11BB;N;HANGUL JONGSEONG SSANGSIOS
+11BC;N;HANGUL JONGSEONG IEUNG
+11BD;N;HANGUL JONGSEONG CIEUC
+11BE;N;HANGUL JONGSEONG CHIEUCH
+11BF;N;HANGUL JONGSEONG KHIEUKH
+11C0;N;HANGUL JONGSEONG THIEUTH
+11C1;N;HANGUL JONGSEONG PHIEUPH
+11C2;N;HANGUL JONGSEONG HIEUH
+11C3;N;HANGUL JONGSEONG KIYEOK-RIEUL
+11C4;N;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5;N;HANGUL JONGSEONG NIEUN-KIYEOK
+11C6;N;HANGUL JONGSEONG NIEUN-TIKEUT
+11C7;N;HANGUL JONGSEONG NIEUN-SIOS
+11C8;N;HANGUL JONGSEONG NIEUN-PANSIOS
+11C9;N;HANGUL JONGSEONG NIEUN-THIEUTH
+11CA;N;HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB;N;HANGUL JONGSEONG TIKEUT-RIEUL
+11CC;N;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11CD;N;HANGUL JONGSEONG RIEUL-NIEUN
+11CE;N;HANGUL JONGSEONG RIEUL-TIKEUT
+11CF;N;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0;N;HANGUL JONGSEONG SSANGRIEUL
+11D1;N;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2;N;HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3;N;HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11D4;N;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5;N;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6;N;HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7;N;HANGUL JONGSEONG RIEUL-PANSIOS
+11D8;N;HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9;N;HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11DA;N;HANGUL JONGSEONG MIEUM-KIYEOK
+11DB;N;HANGUL JONGSEONG MIEUM-RIEUL
+11DC;N;HANGUL JONGSEONG MIEUM-PIEUP
+11DD;N;HANGUL JONGSEONG MIEUM-SIOS
+11DE;N;HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF;N;HANGUL JONGSEONG MIEUM-PANSIOS
+11E0;N;HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1;N;HANGUL JONGSEONG MIEUM-HIEUH
+11E2;N;HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3;N;HANGUL JONGSEONG PIEUP-RIEUL
+11E4;N;HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5;N;HANGUL JONGSEONG PIEUP-HIEUH
+11E6;N;HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7;N;HANGUL JONGSEONG SIOS-KIYEOK
+11E8;N;HANGUL JONGSEONG SIOS-TIKEUT
+11E9;N;HANGUL JONGSEONG SIOS-RIEUL
+11EA;N;HANGUL JONGSEONG SIOS-PIEUP
+11EB;N;HANGUL JONGSEONG PANSIOS
+11EC;N;HANGUL JONGSEONG IEUNG-KIYEOK
+11ED;N;HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE;N;HANGUL JONGSEONG SSANGIEUNG
+11EF;N;HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0;N;HANGUL JONGSEONG YESIEUNG
+11F1;N;HANGUL JONGSEONG YESIEUNG-SIOS
+11F2;N;HANGUL JONGSEONG YESIEUNG-PANSIOS
+11F3;N;HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4;N;HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5;N;HANGUL JONGSEONG HIEUH-NIEUN
+11F6;N;HANGUL JONGSEONG HIEUH-RIEUL
+11F7;N;HANGUL JONGSEONG HIEUH-MIEUM
+11F8;N;HANGUL JONGSEONG HIEUH-PIEUP
+11F9;N;HANGUL JONGSEONG YEORINHIEUH
+1200;N;ETHIOPIC SYLLABLE HA
+1201;N;ETHIOPIC SYLLABLE HU
+1202;N;ETHIOPIC SYLLABLE HI
+1203;N;ETHIOPIC SYLLABLE HAA
+1204;N;ETHIOPIC SYLLABLE HEE
+1205;N;ETHIOPIC SYLLABLE HE
+1206;N;ETHIOPIC SYLLABLE HO
+1208;N;ETHIOPIC SYLLABLE LA
+1209;N;ETHIOPIC SYLLABLE LU
+120A;N;ETHIOPIC SYLLABLE LI
+120B;N;ETHIOPIC SYLLABLE LAA
+120C;N;ETHIOPIC SYLLABLE LEE
+120D;N;ETHIOPIC SYLLABLE LE
+120E;N;ETHIOPIC SYLLABLE LO
+120F;N;ETHIOPIC SYLLABLE LWA
+1210;N;ETHIOPIC SYLLABLE HHA
+1211;N;ETHIOPIC SYLLABLE HHU
+1212;N;ETHIOPIC SYLLABLE HHI
+1213;N;ETHIOPIC SYLLABLE HHAA
+1214;N;ETHIOPIC SYLLABLE HHEE
+1215;N;ETHIOPIC SYLLABLE HHE
+1216;N;ETHIOPIC SYLLABLE HHO
+1217;N;ETHIOPIC SYLLABLE HHWA
+1218;N;ETHIOPIC SYLLABLE MA
+1219;N;ETHIOPIC SYLLABLE MU
+121A;N;ETHIOPIC SYLLABLE MI
+121B;N;ETHIOPIC SYLLABLE MAA
+121C;N;ETHIOPIC SYLLABLE MEE
+121D;N;ETHIOPIC SYLLABLE ME
+121E;N;ETHIOPIC SYLLABLE MO
+121F;N;ETHIOPIC SYLLABLE MWA
+1220;N;ETHIOPIC SYLLABLE SZA
+1221;N;ETHIOPIC SYLLABLE SZU
+1222;N;ETHIOPIC SYLLABLE SZI
+1223;N;ETHIOPIC SYLLABLE SZAA
+1224;N;ETHIOPIC SYLLABLE SZEE
+1225;N;ETHIOPIC SYLLABLE SZE
+1226;N;ETHIOPIC SYLLABLE SZO
+1227;N;ETHIOPIC SYLLABLE SZWA
+1228;N;ETHIOPIC SYLLABLE RA
+1229;N;ETHIOPIC SYLLABLE RU
+122A;N;ETHIOPIC SYLLABLE RI
+122B;N;ETHIOPIC SYLLABLE RAA
+122C;N;ETHIOPIC SYLLABLE REE
+122D;N;ETHIOPIC SYLLABLE RE
+122E;N;ETHIOPIC SYLLABLE RO
+122F;N;ETHIOPIC SYLLABLE RWA
+1230;N;ETHIOPIC SYLLABLE SA
+1231;N;ETHIOPIC SYLLABLE SU
+1232;N;ETHIOPIC SYLLABLE SI
+1233;N;ETHIOPIC SYLLABLE SAA
+1234;N;ETHIOPIC SYLLABLE SEE
+1235;N;ETHIOPIC SYLLABLE SE
+1236;N;ETHIOPIC SYLLABLE SO
+1237;N;ETHIOPIC SYLLABLE SWA
+1238;N;ETHIOPIC SYLLABLE SHA
+1239;N;ETHIOPIC SYLLABLE SHU
+123A;N;ETHIOPIC SYLLABLE SHI
+123B;N;ETHIOPIC SYLLABLE SHAA
+123C;N;ETHIOPIC SYLLABLE SHEE
+123D;N;ETHIOPIC SYLLABLE SHE
+123E;N;ETHIOPIC SYLLABLE SHO
+123F;N;ETHIOPIC SYLLABLE SHWA
+1240;N;ETHIOPIC SYLLABLE QA
+1241;N;ETHIOPIC SYLLABLE QU
+1242;N;ETHIOPIC SYLLABLE QI
+1243;N;ETHIOPIC SYLLABLE QAA
+1244;N;ETHIOPIC SYLLABLE QEE
+1245;N;ETHIOPIC SYLLABLE QE
+1246;N;ETHIOPIC SYLLABLE QO
+1248;N;ETHIOPIC SYLLABLE QWA
+124A;N;ETHIOPIC SYLLABLE QWI
+124B;N;ETHIOPIC SYLLABLE QWAA
+124C;N;ETHIOPIC SYLLABLE QWEE
+124D;N;ETHIOPIC SYLLABLE QWE
+1250;N;ETHIOPIC SYLLABLE QHA
+1251;N;ETHIOPIC SYLLABLE QHU
+1252;N;ETHIOPIC SYLLABLE QHI
+1253;N;ETHIOPIC SYLLABLE QHAA
+1254;N;ETHIOPIC SYLLABLE QHEE
+1255;N;ETHIOPIC SYLLABLE QHE
+1256;N;ETHIOPIC SYLLABLE QHO
+1258;N;ETHIOPIC SYLLABLE QHWA
+125A;N;ETHIOPIC SYLLABLE QHWI
+125B;N;ETHIOPIC SYLLABLE QHWAA
+125C;N;ETHIOPIC SYLLABLE QHWEE
+125D;N;ETHIOPIC SYLLABLE QHWE
+1260;N;ETHIOPIC SYLLABLE BA
+1261;N;ETHIOPIC SYLLABLE BU
+1262;N;ETHIOPIC SYLLABLE BI
+1263;N;ETHIOPIC SYLLABLE BAA
+1264;N;ETHIOPIC SYLLABLE BEE
+1265;N;ETHIOPIC SYLLABLE BE
+1266;N;ETHIOPIC SYLLABLE BO
+1267;N;ETHIOPIC SYLLABLE BWA
+1268;N;ETHIOPIC SYLLABLE VA
+1269;N;ETHIOPIC SYLLABLE VU
+126A;N;ETHIOPIC SYLLABLE VI
+126B;N;ETHIOPIC SYLLABLE VAA
+126C;N;ETHIOPIC SYLLABLE VEE
+126D;N;ETHIOPIC SYLLABLE VE
+126E;N;ETHIOPIC SYLLABLE VO
+126F;N;ETHIOPIC SYLLABLE VWA
+1270;N;ETHIOPIC SYLLABLE TA
+1271;N;ETHIOPIC SYLLABLE TU
+1272;N;ETHIOPIC SYLLABLE TI
+1273;N;ETHIOPIC SYLLABLE TAA
+1274;N;ETHIOPIC SYLLABLE TEE
+1275;N;ETHIOPIC SYLLABLE TE
+1276;N;ETHIOPIC SYLLABLE TO
+1277;N;ETHIOPIC SYLLABLE TWA
+1278;N;ETHIOPIC SYLLABLE CA
+1279;N;ETHIOPIC SYLLABLE CU
+127A;N;ETHIOPIC SYLLABLE CI
+127B;N;ETHIOPIC SYLLABLE CAA
+127C;N;ETHIOPIC SYLLABLE CEE
+127D;N;ETHIOPIC SYLLABLE CE
+127E;N;ETHIOPIC SYLLABLE CO
+127F;N;ETHIOPIC SYLLABLE CWA
+1280;N;ETHIOPIC SYLLABLE XA
+1281;N;ETHIOPIC SYLLABLE XU
+1282;N;ETHIOPIC SYLLABLE XI
+1283;N;ETHIOPIC SYLLABLE XAA
+1284;N;ETHIOPIC SYLLABLE XEE
+1285;N;ETHIOPIC SYLLABLE XE
+1286;N;ETHIOPIC SYLLABLE XO
+1288;N;ETHIOPIC SYLLABLE XWA
+128A;N;ETHIOPIC SYLLABLE XWI
+128B;N;ETHIOPIC SYLLABLE XWAA
+128C;N;ETHIOPIC SYLLABLE XWEE
+128D;N;ETHIOPIC SYLLABLE XWE
+1290;N;ETHIOPIC SYLLABLE NA
+1291;N;ETHIOPIC SYLLABLE NU
+1292;N;ETHIOPIC SYLLABLE NI
+1293;N;ETHIOPIC SYLLABLE NAA
+1294;N;ETHIOPIC SYLLABLE NEE
+1295;N;ETHIOPIC SYLLABLE NE
+1296;N;ETHIOPIC SYLLABLE NO
+1297;N;ETHIOPIC SYLLABLE NWA
+1298;N;ETHIOPIC SYLLABLE NYA
+1299;N;ETHIOPIC SYLLABLE NYU
+129A;N;ETHIOPIC SYLLABLE NYI
+129B;N;ETHIOPIC SYLLABLE NYAA
+129C;N;ETHIOPIC SYLLABLE NYEE
+129D;N;ETHIOPIC SYLLABLE NYE
+129E;N;ETHIOPIC SYLLABLE NYO
+129F;N;ETHIOPIC SYLLABLE NYWA
+12A0;N;ETHIOPIC SYLLABLE GLOTTAL A
+12A1;N;ETHIOPIC SYLLABLE GLOTTAL U
+12A2;N;ETHIOPIC SYLLABLE GLOTTAL I
+12A3;N;ETHIOPIC SYLLABLE GLOTTAL AA
+12A4;N;ETHIOPIC SYLLABLE GLOTTAL EE
+12A5;N;ETHIOPIC SYLLABLE GLOTTAL E
+12A6;N;ETHIOPIC SYLLABLE GLOTTAL O
+12A7;N;ETHIOPIC SYLLABLE GLOTTAL WA
+12A8;N;ETHIOPIC SYLLABLE KA
+12A9;N;ETHIOPIC SYLLABLE KU
+12AA;N;ETHIOPIC SYLLABLE KI
+12AB;N;ETHIOPIC SYLLABLE KAA
+12AC;N;ETHIOPIC SYLLABLE KEE
+12AD;N;ETHIOPIC SYLLABLE KE
+12AE;N;ETHIOPIC SYLLABLE KO
+12B0;N;ETHIOPIC SYLLABLE KWA
+12B2;N;ETHIOPIC SYLLABLE KWI
+12B3;N;ETHIOPIC SYLLABLE KWAA
+12B4;N;ETHIOPIC SYLLABLE KWEE
+12B5;N;ETHIOPIC SYLLABLE KWE
+12B8;N;ETHIOPIC SYLLABLE KXA
+12B9;N;ETHIOPIC SYLLABLE KXU
+12BA;N;ETHIOPIC SYLLABLE KXI
+12BB;N;ETHIOPIC SYLLABLE KXAA
+12BC;N;ETHIOPIC SYLLABLE KXEE
+12BD;N;ETHIOPIC SYLLABLE KXE
+12BE;N;ETHIOPIC SYLLABLE KXO
+12C0;N;ETHIOPIC SYLLABLE KXWA
+12C2;N;ETHIOPIC SYLLABLE KXWI
+12C3;N;ETHIOPIC SYLLABLE KXWAA
+12C4;N;ETHIOPIC SYLLABLE KXWEE
+12C5;N;ETHIOPIC SYLLABLE KXWE
+12C8;N;ETHIOPIC SYLLABLE WA
+12C9;N;ETHIOPIC SYLLABLE WU
+12CA;N;ETHIOPIC SYLLABLE WI
+12CB;N;ETHIOPIC SYLLABLE WAA
+12CC;N;ETHIOPIC SYLLABLE WEE
+12CD;N;ETHIOPIC SYLLABLE WE
+12CE;N;ETHIOPIC SYLLABLE WO
+12D0;N;ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1;N;ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2;N;ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3;N;ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4;N;ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5;N;ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6;N;ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8;N;ETHIOPIC SYLLABLE ZA
+12D9;N;ETHIOPIC SYLLABLE ZU
+12DA;N;ETHIOPIC SYLLABLE ZI
+12DB;N;ETHIOPIC SYLLABLE ZAA
+12DC;N;ETHIOPIC SYLLABLE ZEE
+12DD;N;ETHIOPIC SYLLABLE ZE
+12DE;N;ETHIOPIC SYLLABLE ZO
+12DF;N;ETHIOPIC SYLLABLE ZWA
+12E0;N;ETHIOPIC SYLLABLE ZHA
+12E1;N;ETHIOPIC SYLLABLE ZHU
+12E2;N;ETHIOPIC SYLLABLE ZHI
+12E3;N;ETHIOPIC SYLLABLE ZHAA
+12E4;N;ETHIOPIC SYLLABLE ZHEE
+12E5;N;ETHIOPIC SYLLABLE ZHE
+12E6;N;ETHIOPIC SYLLABLE ZHO
+12E7;N;ETHIOPIC SYLLABLE ZHWA
+12E8;N;ETHIOPIC SYLLABLE YA
+12E9;N;ETHIOPIC SYLLABLE YU
+12EA;N;ETHIOPIC SYLLABLE YI
+12EB;N;ETHIOPIC SYLLABLE YAA
+12EC;N;ETHIOPIC SYLLABLE YEE
+12ED;N;ETHIOPIC SYLLABLE YE
+12EE;N;ETHIOPIC SYLLABLE YO
+12F0;N;ETHIOPIC SYLLABLE DA
+12F1;N;ETHIOPIC SYLLABLE DU
+12F2;N;ETHIOPIC SYLLABLE DI
+12F3;N;ETHIOPIC SYLLABLE DAA
+12F4;N;ETHIOPIC SYLLABLE DEE
+12F5;N;ETHIOPIC SYLLABLE DE
+12F6;N;ETHIOPIC SYLLABLE DO
+12F7;N;ETHIOPIC SYLLABLE DWA
+12F8;N;ETHIOPIC SYLLABLE DDA
+12F9;N;ETHIOPIC SYLLABLE DDU
+12FA;N;ETHIOPIC SYLLABLE DDI
+12FB;N;ETHIOPIC SYLLABLE DDAA
+12FC;N;ETHIOPIC SYLLABLE DDEE
+12FD;N;ETHIOPIC SYLLABLE DDE
+12FE;N;ETHIOPIC SYLLABLE DDO
+12FF;N;ETHIOPIC SYLLABLE DDWA
+1300;N;ETHIOPIC SYLLABLE JA
+1301;N;ETHIOPIC SYLLABLE JU
+1302;N;ETHIOPIC SYLLABLE JI
+1303;N;ETHIOPIC SYLLABLE JAA
+1304;N;ETHIOPIC SYLLABLE JEE
+1305;N;ETHIOPIC SYLLABLE JE
+1306;N;ETHIOPIC SYLLABLE JO
+1307;N;ETHIOPIC SYLLABLE JWA
+1308;N;ETHIOPIC SYLLABLE GA
+1309;N;ETHIOPIC SYLLABLE GU
+130A;N;ETHIOPIC SYLLABLE GI
+130B;N;ETHIOPIC SYLLABLE GAA
+130C;N;ETHIOPIC SYLLABLE GEE
+130D;N;ETHIOPIC SYLLABLE GE
+130E;N;ETHIOPIC SYLLABLE GO
+1310;N;ETHIOPIC SYLLABLE GWA
+1312;N;ETHIOPIC SYLLABLE GWI
+1313;N;ETHIOPIC SYLLABLE GWAA
+1314;N;ETHIOPIC SYLLABLE GWEE
+1315;N;ETHIOPIC SYLLABLE GWE
+1318;N;ETHIOPIC SYLLABLE GGA
+1319;N;ETHIOPIC SYLLABLE GGU
+131A;N;ETHIOPIC SYLLABLE GGI
+131B;N;ETHIOPIC SYLLABLE GGAA
+131C;N;ETHIOPIC SYLLABLE GGEE
+131D;N;ETHIOPIC SYLLABLE GGE
+131E;N;ETHIOPIC SYLLABLE GGO
+1320;N;ETHIOPIC SYLLABLE THA
+1321;N;ETHIOPIC SYLLABLE THU
+1322;N;ETHIOPIC SYLLABLE THI
+1323;N;ETHIOPIC SYLLABLE THAA
+1324;N;ETHIOPIC SYLLABLE THEE
+1325;N;ETHIOPIC SYLLABLE THE
+1326;N;ETHIOPIC SYLLABLE THO
+1327;N;ETHIOPIC SYLLABLE THWA
+1328;N;ETHIOPIC SYLLABLE CHA
+1329;N;ETHIOPIC SYLLABLE CHU
+132A;N;ETHIOPIC SYLLABLE CHI
+132B;N;ETHIOPIC SYLLABLE CHAA
+132C;N;ETHIOPIC SYLLABLE CHEE
+132D;N;ETHIOPIC SYLLABLE CHE
+132E;N;ETHIOPIC SYLLABLE CHO
+132F;N;ETHIOPIC SYLLABLE CHWA
+1330;N;ETHIOPIC SYLLABLE PHA
+1331;N;ETHIOPIC SYLLABLE PHU
+1332;N;ETHIOPIC SYLLABLE PHI
+1333;N;ETHIOPIC SYLLABLE PHAA
+1334;N;ETHIOPIC SYLLABLE PHEE
+1335;N;ETHIOPIC SYLLABLE PHE
+1336;N;ETHIOPIC SYLLABLE PHO
+1337;N;ETHIOPIC SYLLABLE PHWA
+1338;N;ETHIOPIC SYLLABLE TSA
+1339;N;ETHIOPIC SYLLABLE TSU
+133A;N;ETHIOPIC SYLLABLE TSI
+133B;N;ETHIOPIC SYLLABLE TSAA
+133C;N;ETHIOPIC SYLLABLE TSEE
+133D;N;ETHIOPIC SYLLABLE TSE
+133E;N;ETHIOPIC SYLLABLE TSO
+133F;N;ETHIOPIC SYLLABLE TSWA
+1340;N;ETHIOPIC SYLLABLE TZA
+1341;N;ETHIOPIC SYLLABLE TZU
+1342;N;ETHIOPIC SYLLABLE TZI
+1343;N;ETHIOPIC SYLLABLE TZAA
+1344;N;ETHIOPIC SYLLABLE TZEE
+1345;N;ETHIOPIC SYLLABLE TZE
+1346;N;ETHIOPIC SYLLABLE TZO
+1348;N;ETHIOPIC SYLLABLE FA
+1349;N;ETHIOPIC SYLLABLE FU
+134A;N;ETHIOPIC SYLLABLE FI
+134B;N;ETHIOPIC SYLLABLE FAA
+134C;N;ETHIOPIC SYLLABLE FEE
+134D;N;ETHIOPIC SYLLABLE FE
+134E;N;ETHIOPIC SYLLABLE FO
+134F;N;ETHIOPIC SYLLABLE FWA
+1350;N;ETHIOPIC SYLLABLE PA
+1351;N;ETHIOPIC SYLLABLE PU
+1352;N;ETHIOPIC SYLLABLE PI
+1353;N;ETHIOPIC SYLLABLE PAA
+1354;N;ETHIOPIC SYLLABLE PEE
+1355;N;ETHIOPIC SYLLABLE PE
+1356;N;ETHIOPIC SYLLABLE PO
+1357;N;ETHIOPIC SYLLABLE PWA
+1358;N;ETHIOPIC SYLLABLE RYA
+1359;N;ETHIOPIC SYLLABLE MYA
+135A;N;ETHIOPIC SYLLABLE FYA
+1361;N;ETHIOPIC WORDSPACE
+1362;N;ETHIOPIC FULL STOP
+1363;N;ETHIOPIC COMMA
+1364;N;ETHIOPIC SEMICOLON
+1365;N;ETHIOPIC COLON
+1366;N;ETHIOPIC PREFACE COLON
+1367;N;ETHIOPIC QUESTION MARK
+1368;N;ETHIOPIC PARAGRAPH SEPARATOR
+1369;N;ETHIOPIC DIGIT ONE
+136A;N;ETHIOPIC DIGIT TWO
+136B;N;ETHIOPIC DIGIT THREE
+136C;N;ETHIOPIC DIGIT FOUR
+136D;N;ETHIOPIC DIGIT FIVE
+136E;N;ETHIOPIC DIGIT SIX
+136F;N;ETHIOPIC DIGIT SEVEN
+1370;N;ETHIOPIC DIGIT EIGHT
+1371;N;ETHIOPIC DIGIT NINE
+1372;N;ETHIOPIC NUMBER TEN
+1373;N;ETHIOPIC NUMBER TWENTY
+1374;N;ETHIOPIC NUMBER THIRTY
+1375;N;ETHIOPIC NUMBER FORTY
+1376;N;ETHIOPIC NUMBER FIFTY
+1377;N;ETHIOPIC NUMBER SIXTY
+1378;N;ETHIOPIC NUMBER SEVENTY
+1379;N;ETHIOPIC NUMBER EIGHTY
+137A;N;ETHIOPIC NUMBER NINETY
+137B;N;ETHIOPIC NUMBER HUNDRED
+137C;N;ETHIOPIC NUMBER TEN THOUSAND
+13A0;N;CHEROKEE LETTER A
+13A1;N;CHEROKEE LETTER E
+13A2;N;CHEROKEE LETTER I
+13A3;N;CHEROKEE LETTER O
+13A4;N;CHEROKEE LETTER U
+13A5;N;CHEROKEE LETTER V
+13A6;N;CHEROKEE LETTER GA
+13A7;N;CHEROKEE LETTER KA
+13A8;N;CHEROKEE LETTER GE
+13A9;N;CHEROKEE LETTER GI
+13AA;N;CHEROKEE LETTER GO
+13AB;N;CHEROKEE LETTER GU
+13AC;N;CHEROKEE LETTER GV
+13AD;N;CHEROKEE LETTER HA
+13AE;N;CHEROKEE LETTER HE
+13AF;N;CHEROKEE LETTER HI
+13B0;N;CHEROKEE LETTER HO
+13B1;N;CHEROKEE LETTER HU
+13B2;N;CHEROKEE LETTER HV
+13B3;N;CHEROKEE LETTER LA
+13B4;N;CHEROKEE LETTER LE
+13B5;N;CHEROKEE LETTER LI
+13B6;N;CHEROKEE LETTER LO
+13B7;N;CHEROKEE LETTER LU
+13B8;N;CHEROKEE LETTER LV
+13B9;N;CHEROKEE LETTER MA
+13BA;N;CHEROKEE LETTER ME
+13BB;N;CHEROKEE LETTER MI
+13BC;N;CHEROKEE LETTER MO
+13BD;N;CHEROKEE LETTER MU
+13BE;N;CHEROKEE LETTER NA
+13BF;N;CHEROKEE LETTER HNA
+13C0;N;CHEROKEE LETTER NAH
+13C1;N;CHEROKEE LETTER NE
+13C2;N;CHEROKEE LETTER NI
+13C3;N;CHEROKEE LETTER NO
+13C4;N;CHEROKEE LETTER NU
+13C5;N;CHEROKEE LETTER NV
+13C6;N;CHEROKEE LETTER QUA
+13C7;N;CHEROKEE LETTER QUE
+13C8;N;CHEROKEE LETTER QUI
+13C9;N;CHEROKEE LETTER QUO
+13CA;N;CHEROKEE LETTER QUU
+13CB;N;CHEROKEE LETTER QUV
+13CC;N;CHEROKEE LETTER SA
+13CD;N;CHEROKEE LETTER S
+13CE;N;CHEROKEE LETTER SE
+13CF;N;CHEROKEE LETTER SI
+13D0;N;CHEROKEE LETTER SO
+13D1;N;CHEROKEE LETTER SU
+13D2;N;CHEROKEE LETTER SV
+13D3;N;CHEROKEE LETTER DA
+13D4;N;CHEROKEE LETTER TA
+13D5;N;CHEROKEE LETTER DE
+13D6;N;CHEROKEE LETTER TE
+13D7;N;CHEROKEE LETTER DI
+13D8;N;CHEROKEE LETTER TI
+13D9;N;CHEROKEE LETTER DO
+13DA;N;CHEROKEE LETTER DU
+13DB;N;CHEROKEE LETTER DV
+13DC;N;CHEROKEE LETTER DLA
+13DD;N;CHEROKEE LETTER TLA
+13DE;N;CHEROKEE LETTER TLE
+13DF;N;CHEROKEE LETTER TLI
+13E0;N;CHEROKEE LETTER TLO
+13E1;N;CHEROKEE LETTER TLU
+13E2;N;CHEROKEE LETTER TLV
+13E3;N;CHEROKEE LETTER TSA
+13E4;N;CHEROKEE LETTER TSE
+13E5;N;CHEROKEE LETTER TSI
+13E6;N;CHEROKEE LETTER TSO
+13E7;N;CHEROKEE LETTER TSU
+13E8;N;CHEROKEE LETTER TSV
+13E9;N;CHEROKEE LETTER WA
+13EA;N;CHEROKEE LETTER WE
+13EB;N;CHEROKEE LETTER WI
+13EC;N;CHEROKEE LETTER WO
+13ED;N;CHEROKEE LETTER WU
+13EE;N;CHEROKEE LETTER WV
+13EF;N;CHEROKEE LETTER YA
+13F0;N;CHEROKEE LETTER YE
+13F1;N;CHEROKEE LETTER YI
+13F2;N;CHEROKEE LETTER YO
+13F3;N;CHEROKEE LETTER YU
+13F4;N;CHEROKEE LETTER YV
+1401;N;CANADIAN SYLLABICS E
+1402;N;CANADIAN SYLLABICS AAI
+1403;N;CANADIAN SYLLABICS I
+1404;N;CANADIAN SYLLABICS II
+1405;N;CANADIAN SYLLABICS O
+1406;N;CANADIAN SYLLABICS OO
+1407;N;CANADIAN SYLLABICS Y-CREE OO
+1408;N;CANADIAN SYLLABICS CARRIER EE
+1409;N;CANADIAN SYLLABICS CARRIER I
+140A;N;CANADIAN SYLLABICS A
+140B;N;CANADIAN SYLLABICS AA
+140C;N;CANADIAN SYLLABICS WE
+140D;N;CANADIAN SYLLABICS WEST-CREE WE
+140E;N;CANADIAN SYLLABICS WI
+140F;N;CANADIAN SYLLABICS WEST-CREE WI
+1410;N;CANADIAN SYLLABICS WII
+1411;N;CANADIAN SYLLABICS WEST-CREE WII
+1412;N;CANADIAN SYLLABICS WO
+1413;N;CANADIAN SYLLABICS WEST-CREE WO
+1414;N;CANADIAN SYLLABICS WOO
+1415;N;CANADIAN SYLLABICS WEST-CREE WOO
+1416;N;CANADIAN SYLLABICS NASKAPI WOO
+1417;N;CANADIAN SYLLABICS WA
+1418;N;CANADIAN SYLLABICS WEST-CREE WA
+1419;N;CANADIAN SYLLABICS WAA
+141A;N;CANADIAN SYLLABICS WEST-CREE WAA
+141B;N;CANADIAN SYLLABICS NASKAPI WAA
+141C;N;CANADIAN SYLLABICS AI
+141D;N;CANADIAN SYLLABICS Y-CREE W
+141E;N;CANADIAN SYLLABICS GLOTTAL STOP
+141F;N;CANADIAN SYLLABICS FINAL ACUTE
+1420;N;CANADIAN SYLLABICS FINAL GRAVE
+1421;N;CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422;N;CANADIAN SYLLABICS FINAL TOP HALF RING
+1423;N;CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424;N;CANADIAN SYLLABICS FINAL RING
+1425;N;CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426;N;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427;N;CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428;N;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429;N;CANADIAN SYLLABICS FINAL PLUS
+142A;N;CANADIAN SYLLABICS FINAL DOWN TACK
+142B;N;CANADIAN SYLLABICS EN
+142C;N;CANADIAN SYLLABICS IN
+142D;N;CANADIAN SYLLABICS ON
+142E;N;CANADIAN SYLLABICS AN
+142F;N;CANADIAN SYLLABICS PE
+1430;N;CANADIAN SYLLABICS PAAI
+1431;N;CANADIAN SYLLABICS PI
+1432;N;CANADIAN SYLLABICS PII
+1433;N;CANADIAN SYLLABICS PO
+1434;N;CANADIAN SYLLABICS POO
+1435;N;CANADIAN SYLLABICS Y-CREE POO
+1436;N;CANADIAN SYLLABICS CARRIER HEE
+1437;N;CANADIAN SYLLABICS CARRIER HI
+1438;N;CANADIAN SYLLABICS PA
+1439;N;CANADIAN SYLLABICS PAA
+143A;N;CANADIAN SYLLABICS PWE
+143B;N;CANADIAN SYLLABICS WEST-CREE PWE
+143C;N;CANADIAN SYLLABICS PWI
+143D;N;CANADIAN SYLLABICS WEST-CREE PWI
+143E;N;CANADIAN SYLLABICS PWII
+143F;N;CANADIAN SYLLABICS WEST-CREE PWII
+1440;N;CANADIAN SYLLABICS PWO
+1441;N;CANADIAN SYLLABICS WEST-CREE PWO
+1442;N;CANADIAN SYLLABICS PWOO
+1443;N;CANADIAN SYLLABICS WEST-CREE PWOO
+1444;N;CANADIAN SYLLABICS PWA
+1445;N;CANADIAN SYLLABICS WEST-CREE PWA
+1446;N;CANADIAN SYLLABICS PWAA
+1447;N;CANADIAN SYLLABICS WEST-CREE PWAA
+1448;N;CANADIAN SYLLABICS Y-CREE PWAA
+1449;N;CANADIAN SYLLABICS P
+144A;N;CANADIAN SYLLABICS WEST-CREE P
+144B;N;CANADIAN SYLLABICS CARRIER H
+144C;N;CANADIAN SYLLABICS TE
+144D;N;CANADIAN SYLLABICS TAAI
+144E;N;CANADIAN SYLLABICS TI
+144F;N;CANADIAN SYLLABICS TII
+1450;N;CANADIAN SYLLABICS TO
+1451;N;CANADIAN SYLLABICS TOO
+1452;N;CANADIAN SYLLABICS Y-CREE TOO
+1453;N;CANADIAN SYLLABICS CARRIER DEE
+1454;N;CANADIAN SYLLABICS CARRIER DI
+1455;N;CANADIAN SYLLABICS TA
+1456;N;CANADIAN SYLLABICS TAA
+1457;N;CANADIAN SYLLABICS TWE
+1458;N;CANADIAN SYLLABICS WEST-CREE TWE
+1459;N;CANADIAN SYLLABICS TWI
+145A;N;CANADIAN SYLLABICS WEST-CREE TWI
+145B;N;CANADIAN SYLLABICS TWII
+145C;N;CANADIAN SYLLABICS WEST-CREE TWII
+145D;N;CANADIAN SYLLABICS TWO
+145E;N;CANADIAN SYLLABICS WEST-CREE TWO
+145F;N;CANADIAN SYLLABICS TWOO
+1460;N;CANADIAN SYLLABICS WEST-CREE TWOO
+1461;N;CANADIAN SYLLABICS TWA
+1462;N;CANADIAN SYLLABICS WEST-CREE TWA
+1463;N;CANADIAN SYLLABICS TWAA
+1464;N;CANADIAN SYLLABICS WEST-CREE TWAA
+1465;N;CANADIAN SYLLABICS NASKAPI TWAA
+1466;N;CANADIAN SYLLABICS T
+1467;N;CANADIAN SYLLABICS TTE
+1468;N;CANADIAN SYLLABICS TTI
+1469;N;CANADIAN SYLLABICS TTO
+146A;N;CANADIAN SYLLABICS TTA
+146B;N;CANADIAN SYLLABICS KE
+146C;N;CANADIAN SYLLABICS KAAI
+146D;N;CANADIAN SYLLABICS KI
+146E;N;CANADIAN SYLLABICS KII
+146F;N;CANADIAN SYLLABICS KO
+1470;N;CANADIAN SYLLABICS KOO
+1471;N;CANADIAN SYLLABICS Y-CREE KOO
+1472;N;CANADIAN SYLLABICS KA
+1473;N;CANADIAN SYLLABICS KAA
+1474;N;CANADIAN SYLLABICS KWE
+1475;N;CANADIAN SYLLABICS WEST-CREE KWE
+1476;N;CANADIAN SYLLABICS KWI
+1477;N;CANADIAN SYLLABICS WEST-CREE KWI
+1478;N;CANADIAN SYLLABICS KWII
+1479;N;CANADIAN SYLLABICS WEST-CREE KWII
+147A;N;CANADIAN SYLLABICS KWO
+147B;N;CANADIAN SYLLABICS WEST-CREE KWO
+147C;N;CANADIAN SYLLABICS KWOO
+147D;N;CANADIAN SYLLABICS WEST-CREE KWOO
+147E;N;CANADIAN SYLLABICS KWA
+147F;N;CANADIAN SYLLABICS WEST-CREE KWA
+1480;N;CANADIAN SYLLABICS KWAA
+1481;N;CANADIAN SYLLABICS WEST-CREE KWAA
+1482;N;CANADIAN SYLLABICS NASKAPI KWAA
+1483;N;CANADIAN SYLLABICS K
+1484;N;CANADIAN SYLLABICS KW
+1485;N;CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486;N;CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487;N;CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488;N;CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489;N;CANADIAN SYLLABICS CE
+148A;N;CANADIAN SYLLABICS CAAI
+148B;N;CANADIAN SYLLABICS CI
+148C;N;CANADIAN SYLLABICS CII
+148D;N;CANADIAN SYLLABICS CO
+148E;N;CANADIAN SYLLABICS COO
+148F;N;CANADIAN SYLLABICS Y-CREE COO
+1490;N;CANADIAN SYLLABICS CA
+1491;N;CANADIAN SYLLABICS CAA
+1492;N;CANADIAN SYLLABICS CWE
+1493;N;CANADIAN SYLLABICS WEST-CREE CWE
+1494;N;CANADIAN SYLLABICS CWI
+1495;N;CANADIAN SYLLABICS WEST-CREE CWI
+1496;N;CANADIAN SYLLABICS CWII
+1497;N;CANADIAN SYLLABICS WEST-CREE CWII
+1498;N;CANADIAN SYLLABICS CWO
+1499;N;CANADIAN SYLLABICS WEST-CREE CWO
+149A;N;CANADIAN SYLLABICS CWOO
+149B;N;CANADIAN SYLLABICS WEST-CREE CWOO
+149C;N;CANADIAN SYLLABICS CWA
+149D;N;CANADIAN SYLLABICS WEST-CREE CWA
+149E;N;CANADIAN SYLLABICS CWAA
+149F;N;CANADIAN SYLLABICS WEST-CREE CWAA
+14A0;N;CANADIAN SYLLABICS NASKAPI CWAA
+14A1;N;CANADIAN SYLLABICS C
+14A2;N;CANADIAN SYLLABICS SAYISI TH
+14A3;N;CANADIAN SYLLABICS ME
+14A4;N;CANADIAN SYLLABICS MAAI
+14A5;N;CANADIAN SYLLABICS MI
+14A6;N;CANADIAN SYLLABICS MII
+14A7;N;CANADIAN SYLLABICS MO
+14A8;N;CANADIAN SYLLABICS MOO
+14A9;N;CANADIAN SYLLABICS Y-CREE MOO
+14AA;N;CANADIAN SYLLABICS MA
+14AB;N;CANADIAN SYLLABICS MAA
+14AC;N;CANADIAN SYLLABICS MWE
+14AD;N;CANADIAN SYLLABICS WEST-CREE MWE
+14AE;N;CANADIAN SYLLABICS MWI
+14AF;N;CANADIAN SYLLABICS WEST-CREE MWI
+14B0;N;CANADIAN SYLLABICS MWII
+14B1;N;CANADIAN SYLLABICS WEST-CREE MWII
+14B2;N;CANADIAN SYLLABICS MWO
+14B3;N;CANADIAN SYLLABICS WEST-CREE MWO
+14B4;N;CANADIAN SYLLABICS MWOO
+14B5;N;CANADIAN SYLLABICS WEST-CREE MWOO
+14B6;N;CANADIAN SYLLABICS MWA
+14B7;N;CANADIAN SYLLABICS WEST-CREE MWA
+14B8;N;CANADIAN SYLLABICS MWAA
+14B9;N;CANADIAN SYLLABICS WEST-CREE MWAA
+14BA;N;CANADIAN SYLLABICS NASKAPI MWAA
+14BB;N;CANADIAN SYLLABICS M
+14BC;N;CANADIAN SYLLABICS WEST-CREE M
+14BD;N;CANADIAN SYLLABICS MH
+14BE;N;CANADIAN SYLLABICS ATHAPASCAN M
+14BF;N;CANADIAN SYLLABICS SAYISI M
+14C0;N;CANADIAN SYLLABICS NE
+14C1;N;CANADIAN SYLLABICS NAAI
+14C2;N;CANADIAN SYLLABICS NI
+14C3;N;CANADIAN SYLLABICS NII
+14C4;N;CANADIAN SYLLABICS NO
+14C5;N;CANADIAN SYLLABICS NOO
+14C6;N;CANADIAN SYLLABICS Y-CREE NOO
+14C7;N;CANADIAN SYLLABICS NA
+14C8;N;CANADIAN SYLLABICS NAA
+14C9;N;CANADIAN SYLLABICS NWE
+14CA;N;CANADIAN SYLLABICS WEST-CREE NWE
+14CB;N;CANADIAN SYLLABICS NWA
+14CC;N;CANADIAN SYLLABICS WEST-CREE NWA
+14CD;N;CANADIAN SYLLABICS NWAA
+14CE;N;CANADIAN SYLLABICS WEST-CREE NWAA
+14CF;N;CANADIAN SYLLABICS NASKAPI NWAA
+14D0;N;CANADIAN SYLLABICS N
+14D1;N;CANADIAN SYLLABICS CARRIER NG
+14D2;N;CANADIAN SYLLABICS NH
+14D3;N;CANADIAN SYLLABICS LE
+14D4;N;CANADIAN SYLLABICS LAAI
+14D5;N;CANADIAN SYLLABICS LI
+14D6;N;CANADIAN SYLLABICS LII
+14D7;N;CANADIAN SYLLABICS LO
+14D8;N;CANADIAN SYLLABICS LOO
+14D9;N;CANADIAN SYLLABICS Y-CREE LOO
+14DA;N;CANADIAN SYLLABICS LA
+14DB;N;CANADIAN SYLLABICS LAA
+14DC;N;CANADIAN SYLLABICS LWE
+14DD;N;CANADIAN SYLLABICS WEST-CREE LWE
+14DE;N;CANADIAN SYLLABICS LWI
+14DF;N;CANADIAN SYLLABICS WEST-CREE LWI
+14E0;N;CANADIAN SYLLABICS LWII
+14E1;N;CANADIAN SYLLABICS WEST-CREE LWII
+14E2;N;CANADIAN SYLLABICS LWO
+14E3;N;CANADIAN SYLLABICS WEST-CREE LWO
+14E4;N;CANADIAN SYLLABICS LWOO
+14E5;N;CANADIAN SYLLABICS WEST-CREE LWOO
+14E6;N;CANADIAN SYLLABICS LWA
+14E7;N;CANADIAN SYLLABICS WEST-CREE LWA
+14E8;N;CANADIAN SYLLABICS LWAA
+14E9;N;CANADIAN SYLLABICS WEST-CREE LWAA
+14EA;N;CANADIAN SYLLABICS L
+14EB;N;CANADIAN SYLLABICS WEST-CREE L
+14EC;N;CANADIAN SYLLABICS MEDIAL L
+14ED;N;CANADIAN SYLLABICS SE
+14EE;N;CANADIAN SYLLABICS SAAI
+14EF;N;CANADIAN SYLLABICS SI
+14F0;N;CANADIAN SYLLABICS SII
+14F1;N;CANADIAN SYLLABICS SO
+14F2;N;CANADIAN SYLLABICS SOO
+14F3;N;CANADIAN SYLLABICS Y-CREE SOO
+14F4;N;CANADIAN SYLLABICS SA
+14F5;N;CANADIAN SYLLABICS SAA
+14F6;N;CANADIAN SYLLABICS SWE
+14F7;N;CANADIAN SYLLABICS WEST-CREE SWE
+14F8;N;CANADIAN SYLLABICS SWI
+14F9;N;CANADIAN SYLLABICS WEST-CREE SWI
+14FA;N;CANADIAN SYLLABICS SWII
+14FB;N;CANADIAN SYLLABICS WEST-CREE SWII
+14FC;N;CANADIAN SYLLABICS SWO
+14FD;N;CANADIAN SYLLABICS WEST-CREE SWO
+14FE;N;CANADIAN SYLLABICS SWOO
+14FF;N;CANADIAN SYLLABICS WEST-CREE SWOO
+1500;N;CANADIAN SYLLABICS SWA
+1501;N;CANADIAN SYLLABICS WEST-CREE SWA
+1502;N;CANADIAN SYLLABICS SWAA
+1503;N;CANADIAN SYLLABICS WEST-CREE SWAA
+1504;N;CANADIAN SYLLABICS NASKAPI SWAA
+1505;N;CANADIAN SYLLABICS S
+1506;N;CANADIAN SYLLABICS ATHAPASCAN S
+1507;N;CANADIAN SYLLABICS SW
+1508;N;CANADIAN SYLLABICS BLACKFOOT S
+1509;N;CANADIAN SYLLABICS MOOSE-CREE SK
+150A;N;CANADIAN SYLLABICS NASKAPI SKW
+150B;N;CANADIAN SYLLABICS NASKAPI S-W
+150C;N;CANADIAN SYLLABICS NASKAPI SPWA
+150D;N;CANADIAN SYLLABICS NASKAPI STWA
+150E;N;CANADIAN SYLLABICS NASKAPI SKWA
+150F;N;CANADIAN SYLLABICS NASKAPI SCWA
+1510;N;CANADIAN SYLLABICS SHE
+1511;N;CANADIAN SYLLABICS SHI
+1512;N;CANADIAN SYLLABICS SHII
+1513;N;CANADIAN SYLLABICS SHO
+1514;N;CANADIAN SYLLABICS SHOO
+1515;N;CANADIAN SYLLABICS SHA
+1516;N;CANADIAN SYLLABICS SHAA
+1517;N;CANADIAN SYLLABICS SHWE
+1518;N;CANADIAN SYLLABICS WEST-CREE SHWE
+1519;N;CANADIAN SYLLABICS SHWI
+151A;N;CANADIAN SYLLABICS WEST-CREE SHWI
+151B;N;CANADIAN SYLLABICS SHWII
+151C;N;CANADIAN SYLLABICS WEST-CREE SHWII
+151D;N;CANADIAN SYLLABICS SHWO
+151E;N;CANADIAN SYLLABICS WEST-CREE SHWO
+151F;N;CANADIAN SYLLABICS SHWOO
+1520;N;CANADIAN SYLLABICS WEST-CREE SHWOO
+1521;N;CANADIAN SYLLABICS SHWA
+1522;N;CANADIAN SYLLABICS WEST-CREE SHWA
+1523;N;CANADIAN SYLLABICS SHWAA
+1524;N;CANADIAN SYLLABICS WEST-CREE SHWAA
+1525;N;CANADIAN SYLLABICS SH
+1526;N;CANADIAN SYLLABICS YE
+1527;N;CANADIAN SYLLABICS YAAI
+1528;N;CANADIAN SYLLABICS YI
+1529;N;CANADIAN SYLLABICS YII
+152A;N;CANADIAN SYLLABICS YO
+152B;N;CANADIAN SYLLABICS YOO
+152C;N;CANADIAN SYLLABICS Y-CREE YOO
+152D;N;CANADIAN SYLLABICS YA
+152E;N;CANADIAN SYLLABICS YAA
+152F;N;CANADIAN SYLLABICS YWE
+1530;N;CANADIAN SYLLABICS WEST-CREE YWE
+1531;N;CANADIAN SYLLABICS YWI
+1532;N;CANADIAN SYLLABICS WEST-CREE YWI
+1533;N;CANADIAN SYLLABICS YWII
+1534;N;CANADIAN SYLLABICS WEST-CREE YWII
+1535;N;CANADIAN SYLLABICS YWO
+1536;N;CANADIAN SYLLABICS WEST-CREE YWO
+1537;N;CANADIAN SYLLABICS YWOO
+1538;N;CANADIAN SYLLABICS WEST-CREE YWOO
+1539;N;CANADIAN SYLLABICS YWA
+153A;N;CANADIAN SYLLABICS WEST-CREE YWA
+153B;N;CANADIAN SYLLABICS YWAA
+153C;N;CANADIAN SYLLABICS WEST-CREE YWAA
+153D;N;CANADIAN SYLLABICS NASKAPI YWAA
+153E;N;CANADIAN SYLLABICS Y
+153F;N;CANADIAN SYLLABICS BIBLE-CREE Y
+1540;N;CANADIAN SYLLABICS WEST-CREE Y
+1541;N;CANADIAN SYLLABICS SAYISI YI
+1542;N;CANADIAN SYLLABICS RE
+1543;N;CANADIAN SYLLABICS R-CREE RE
+1544;N;CANADIAN SYLLABICS WEST-CREE LE
+1545;N;CANADIAN SYLLABICS RAAI
+1546;N;CANADIAN SYLLABICS RI
+1547;N;CANADIAN SYLLABICS RII
+1548;N;CANADIAN SYLLABICS RO
+1549;N;CANADIAN SYLLABICS ROO
+154A;N;CANADIAN SYLLABICS WEST-CREE LO
+154B;N;CANADIAN SYLLABICS RA
+154C;N;CANADIAN SYLLABICS RAA
+154D;N;CANADIAN SYLLABICS WEST-CREE LA
+154E;N;CANADIAN SYLLABICS RWAA
+154F;N;CANADIAN SYLLABICS WEST-CREE RWAA
+1550;N;CANADIAN SYLLABICS R
+1551;N;CANADIAN SYLLABICS WEST-CREE R
+1552;N;CANADIAN SYLLABICS MEDIAL R
+1553;N;CANADIAN SYLLABICS FE
+1554;N;CANADIAN SYLLABICS FAAI
+1555;N;CANADIAN SYLLABICS FI
+1556;N;CANADIAN SYLLABICS FII
+1557;N;CANADIAN SYLLABICS FO
+1558;N;CANADIAN SYLLABICS FOO
+1559;N;CANADIAN SYLLABICS FA
+155A;N;CANADIAN SYLLABICS FAA
+155B;N;CANADIAN SYLLABICS FWAA
+155C;N;CANADIAN SYLLABICS WEST-CREE FWAA
+155D;N;CANADIAN SYLLABICS F
+155E;N;CANADIAN SYLLABICS THE
+155F;N;CANADIAN SYLLABICS N-CREE THE
+1560;N;CANADIAN SYLLABICS THI
+1561;N;CANADIAN SYLLABICS N-CREE THI
+1562;N;CANADIAN SYLLABICS THII
+1563;N;CANADIAN SYLLABICS N-CREE THII
+1564;N;CANADIAN SYLLABICS THO
+1565;N;CANADIAN SYLLABICS THOO
+1566;N;CANADIAN SYLLABICS THA
+1567;N;CANADIAN SYLLABICS THAA
+1568;N;CANADIAN SYLLABICS THWAA
+1569;N;CANADIAN SYLLABICS WEST-CREE THWAA
+156A;N;CANADIAN SYLLABICS TH
+156B;N;CANADIAN SYLLABICS TTHE
+156C;N;CANADIAN SYLLABICS TTHI
+156D;N;CANADIAN SYLLABICS TTHO
+156E;N;CANADIAN SYLLABICS TTHA
+156F;N;CANADIAN SYLLABICS TTH
+1570;N;CANADIAN SYLLABICS TYE
+1571;N;CANADIAN SYLLABICS TYI
+1572;N;CANADIAN SYLLABICS TYO
+1573;N;CANADIAN SYLLABICS TYA
+1574;N;CANADIAN SYLLABICS NUNAVIK HE
+1575;N;CANADIAN SYLLABICS NUNAVIK HI
+1576;N;CANADIAN SYLLABICS NUNAVIK HII
+1577;N;CANADIAN SYLLABICS NUNAVIK HO
+1578;N;CANADIAN SYLLABICS NUNAVIK HOO
+1579;N;CANADIAN SYLLABICS NUNAVIK HA
+157A;N;CANADIAN SYLLABICS NUNAVIK HAA
+157B;N;CANADIAN SYLLABICS NUNAVIK H
+157C;N;CANADIAN SYLLABICS NUNAVUT H
+157D;N;CANADIAN SYLLABICS HK
+157E;N;CANADIAN SYLLABICS QAAI
+157F;N;CANADIAN SYLLABICS QI
+1580;N;CANADIAN SYLLABICS QII
+1581;N;CANADIAN SYLLABICS QO
+1582;N;CANADIAN SYLLABICS QOO
+1583;N;CANADIAN SYLLABICS QA
+1584;N;CANADIAN SYLLABICS QAA
+1585;N;CANADIAN SYLLABICS Q
+1586;N;CANADIAN SYLLABICS TLHE
+1587;N;CANADIAN SYLLABICS TLHI
+1588;N;CANADIAN SYLLABICS TLHO
+1589;N;CANADIAN SYLLABICS TLHA
+158A;N;CANADIAN SYLLABICS WEST-CREE RE
+158B;N;CANADIAN SYLLABICS WEST-CREE RI
+158C;N;CANADIAN SYLLABICS WEST-CREE RO
+158D;N;CANADIAN SYLLABICS WEST-CREE RA
+158E;N;CANADIAN SYLLABICS NGAAI
+158F;N;CANADIAN SYLLABICS NGI
+1590;N;CANADIAN SYLLABICS NGII
+1591;N;CANADIAN SYLLABICS NGO
+1592;N;CANADIAN SYLLABICS NGOO
+1593;N;CANADIAN SYLLABICS NGA
+1594;N;CANADIAN SYLLABICS NGAA
+1595;N;CANADIAN SYLLABICS NG
+1596;N;CANADIAN SYLLABICS NNG
+1597;N;CANADIAN SYLLABICS SAYISI SHE
+1598;N;CANADIAN SYLLABICS SAYISI SHI
+1599;N;CANADIAN SYLLABICS SAYISI SHO
+159A;N;CANADIAN SYLLABICS SAYISI SHA
+159B;N;CANADIAN SYLLABICS WOODS-CREE THE
+159C;N;CANADIAN SYLLABICS WOODS-CREE THI
+159D;N;CANADIAN SYLLABICS WOODS-CREE THO
+159E;N;CANADIAN SYLLABICS WOODS-CREE THA
+159F;N;CANADIAN SYLLABICS WOODS-CREE TH
+15A0;N;CANADIAN SYLLABICS LHI
+15A1;N;CANADIAN SYLLABICS LHII
+15A2;N;CANADIAN SYLLABICS LHO
+15A3;N;CANADIAN SYLLABICS LHOO
+15A4;N;CANADIAN SYLLABICS LHA
+15A5;N;CANADIAN SYLLABICS LHAA
+15A6;N;CANADIAN SYLLABICS LH
+15A7;N;CANADIAN SYLLABICS TH-CREE THE
+15A8;N;CANADIAN SYLLABICS TH-CREE THI
+15A9;N;CANADIAN SYLLABICS TH-CREE THII
+15AA;N;CANADIAN SYLLABICS TH-CREE THO
+15AB;N;CANADIAN SYLLABICS TH-CREE THOO
+15AC;N;CANADIAN SYLLABICS TH-CREE THA
+15AD;N;CANADIAN SYLLABICS TH-CREE THAA
+15AE;N;CANADIAN SYLLABICS TH-CREE TH
+15AF;N;CANADIAN SYLLABICS AIVILIK B
+15B0;N;CANADIAN SYLLABICS BLACKFOOT E
+15B1;N;CANADIAN SYLLABICS BLACKFOOT I
+15B2;N;CANADIAN SYLLABICS BLACKFOOT O
+15B3;N;CANADIAN SYLLABICS BLACKFOOT A
+15B4;N;CANADIAN SYLLABICS BLACKFOOT WE
+15B5;N;CANADIAN SYLLABICS BLACKFOOT WI
+15B6;N;CANADIAN SYLLABICS BLACKFOOT WO
+15B7;N;CANADIAN SYLLABICS BLACKFOOT WA
+15B8;N;CANADIAN SYLLABICS BLACKFOOT NE
+15B9;N;CANADIAN SYLLABICS BLACKFOOT NI
+15BA;N;CANADIAN SYLLABICS BLACKFOOT NO
+15BB;N;CANADIAN SYLLABICS BLACKFOOT NA
+15BC;N;CANADIAN SYLLABICS BLACKFOOT KE
+15BD;N;CANADIAN SYLLABICS BLACKFOOT KI
+15BE;N;CANADIAN SYLLABICS BLACKFOOT KO
+15BF;N;CANADIAN SYLLABICS BLACKFOOT KA
+15C0;N;CANADIAN SYLLABICS SAYISI HE
+15C1;N;CANADIAN SYLLABICS SAYISI HI
+15C2;N;CANADIAN SYLLABICS SAYISI HO
+15C3;N;CANADIAN SYLLABICS SAYISI HA
+15C4;N;CANADIAN SYLLABICS CARRIER GHU
+15C5;N;CANADIAN SYLLABICS CARRIER GHO
+15C6;N;CANADIAN SYLLABICS CARRIER GHE
+15C7;N;CANADIAN SYLLABICS CARRIER GHEE
+15C8;N;CANADIAN SYLLABICS CARRIER GHI
+15C9;N;CANADIAN SYLLABICS CARRIER GHA
+15CA;N;CANADIAN SYLLABICS CARRIER RU
+15CB;N;CANADIAN SYLLABICS CARRIER RO
+15CC;N;CANADIAN SYLLABICS CARRIER RE
+15CD;N;CANADIAN SYLLABICS CARRIER REE
+15CE;N;CANADIAN SYLLABICS CARRIER RI
+15CF;N;CANADIAN SYLLABICS CARRIER RA
+15D0;N;CANADIAN SYLLABICS CARRIER WU
+15D1;N;CANADIAN SYLLABICS CARRIER WO
+15D2;N;CANADIAN SYLLABICS CARRIER WE
+15D3;N;CANADIAN SYLLABICS CARRIER WEE
+15D4;N;CANADIAN SYLLABICS CARRIER WI
+15D5;N;CANADIAN SYLLABICS CARRIER WA
+15D6;N;CANADIAN SYLLABICS CARRIER HWU
+15D7;N;CANADIAN SYLLABICS CARRIER HWO
+15D8;N;CANADIAN SYLLABICS CARRIER HWE
+15D9;N;CANADIAN SYLLABICS CARRIER HWEE
+15DA;N;CANADIAN SYLLABICS CARRIER HWI
+15DB;N;CANADIAN SYLLABICS CARRIER HWA
+15DC;N;CANADIAN SYLLABICS CARRIER THU
+15DD;N;CANADIAN SYLLABICS CARRIER THO
+15DE;N;CANADIAN SYLLABICS CARRIER THE
+15DF;N;CANADIAN SYLLABICS CARRIER THEE
+15E0;N;CANADIAN SYLLABICS CARRIER THI
+15E1;N;CANADIAN SYLLABICS CARRIER THA
+15E2;N;CANADIAN SYLLABICS CARRIER TTU
+15E3;N;CANADIAN SYLLABICS CARRIER TTO
+15E4;N;CANADIAN SYLLABICS CARRIER TTE
+15E5;N;CANADIAN SYLLABICS CARRIER TTEE
+15E6;N;CANADIAN SYLLABICS CARRIER TTI
+15E7;N;CANADIAN SYLLABICS CARRIER TTA
+15E8;N;CANADIAN SYLLABICS CARRIER PU
+15E9;N;CANADIAN SYLLABICS CARRIER PO
+15EA;N;CANADIAN SYLLABICS CARRIER PE
+15EB;N;CANADIAN SYLLABICS CARRIER PEE
+15EC;N;CANADIAN SYLLABICS CARRIER PI
+15ED;N;CANADIAN SYLLABICS CARRIER PA
+15EE;N;CANADIAN SYLLABICS CARRIER P
+15EF;N;CANADIAN SYLLABICS CARRIER GU
+15F0;N;CANADIAN SYLLABICS CARRIER GO
+15F1;N;CANADIAN SYLLABICS CARRIER GE
+15F2;N;CANADIAN SYLLABICS CARRIER GEE
+15F3;N;CANADIAN SYLLABICS CARRIER GI
+15F4;N;CANADIAN SYLLABICS CARRIER GA
+15F5;N;CANADIAN SYLLABICS CARRIER KHU
+15F6;N;CANADIAN SYLLABICS CARRIER KHO
+15F7;N;CANADIAN SYLLABICS CARRIER KHE
+15F8;N;CANADIAN SYLLABICS CARRIER KHEE
+15F9;N;CANADIAN SYLLABICS CARRIER KHI
+15FA;N;CANADIAN SYLLABICS CARRIER KHA
+15FB;N;CANADIAN SYLLABICS CARRIER KKU
+15FC;N;CANADIAN SYLLABICS CARRIER KKO
+15FD;N;CANADIAN SYLLABICS CARRIER KKE
+15FE;N;CANADIAN SYLLABICS CARRIER KKEE
+15FF;N;CANADIAN SYLLABICS CARRIER KKI
+1600;N;CANADIAN SYLLABICS CARRIER KKA
+1601;N;CANADIAN SYLLABICS CARRIER KK
+1602;N;CANADIAN SYLLABICS CARRIER NU
+1603;N;CANADIAN SYLLABICS CARRIER NO
+1604;N;CANADIAN SYLLABICS CARRIER NE
+1605;N;CANADIAN SYLLABICS CARRIER NEE
+1606;N;CANADIAN SYLLABICS CARRIER NI
+1607;N;CANADIAN SYLLABICS CARRIER NA
+1608;N;CANADIAN SYLLABICS CARRIER MU
+1609;N;CANADIAN SYLLABICS CARRIER MO
+160A;N;CANADIAN SYLLABICS CARRIER ME
+160B;N;CANADIAN SYLLABICS CARRIER MEE
+160C;N;CANADIAN SYLLABICS CARRIER MI
+160D;N;CANADIAN SYLLABICS CARRIER MA
+160E;N;CANADIAN SYLLABICS CARRIER YU
+160F;N;CANADIAN SYLLABICS CARRIER YO
+1610;N;CANADIAN SYLLABICS CARRIER YE
+1611;N;CANADIAN SYLLABICS CARRIER YEE
+1612;N;CANADIAN SYLLABICS CARRIER YI
+1613;N;CANADIAN SYLLABICS CARRIER YA
+1614;N;CANADIAN SYLLABICS CARRIER JU
+1615;N;CANADIAN SYLLABICS SAYISI JU
+1616;N;CANADIAN SYLLABICS CARRIER JO
+1617;N;CANADIAN SYLLABICS CARRIER JE
+1618;N;CANADIAN SYLLABICS CARRIER JEE
+1619;N;CANADIAN SYLLABICS CARRIER JI
+161A;N;CANADIAN SYLLABICS SAYISI JI
+161B;N;CANADIAN SYLLABICS CARRIER JA
+161C;N;CANADIAN SYLLABICS CARRIER JJU
+161D;N;CANADIAN SYLLABICS CARRIER JJO
+161E;N;CANADIAN SYLLABICS CARRIER JJE
+161F;N;CANADIAN SYLLABICS CARRIER JJEE
+1620;N;CANADIAN SYLLABICS CARRIER JJI
+1621;N;CANADIAN SYLLABICS CARRIER JJA
+1622;N;CANADIAN SYLLABICS CARRIER LU
+1623;N;CANADIAN SYLLABICS CARRIER LO
+1624;N;CANADIAN SYLLABICS CARRIER LE
+1625;N;CANADIAN SYLLABICS CARRIER LEE
+1626;N;CANADIAN SYLLABICS CARRIER LI
+1627;N;CANADIAN SYLLABICS CARRIER LA
+1628;N;CANADIAN SYLLABICS CARRIER DLU
+1629;N;CANADIAN SYLLABICS CARRIER DLO
+162A;N;CANADIAN SYLLABICS CARRIER DLE
+162B;N;CANADIAN SYLLABICS CARRIER DLEE
+162C;N;CANADIAN SYLLABICS CARRIER DLI
+162D;N;CANADIAN SYLLABICS CARRIER DLA
+162E;N;CANADIAN SYLLABICS CARRIER LHU
+162F;N;CANADIAN SYLLABICS CARRIER LHO
+1630;N;CANADIAN SYLLABICS CARRIER LHE
+1631;N;CANADIAN SYLLABICS CARRIER LHEE
+1632;N;CANADIAN SYLLABICS CARRIER LHI
+1633;N;CANADIAN SYLLABICS CARRIER LHA
+1634;N;CANADIAN SYLLABICS CARRIER TLHU
+1635;N;CANADIAN SYLLABICS CARRIER TLHO
+1636;N;CANADIAN SYLLABICS CARRIER TLHE
+1637;N;CANADIAN SYLLABICS CARRIER TLHEE
+1638;N;CANADIAN SYLLABICS CARRIER TLHI
+1639;N;CANADIAN SYLLABICS CARRIER TLHA
+163A;N;CANADIAN SYLLABICS CARRIER TLU
+163B;N;CANADIAN SYLLABICS CARRIER TLO
+163C;N;CANADIAN SYLLABICS CARRIER TLE
+163D;N;CANADIAN SYLLABICS CARRIER TLEE
+163E;N;CANADIAN SYLLABICS CARRIER TLI
+163F;N;CANADIAN SYLLABICS CARRIER TLA
+1640;N;CANADIAN SYLLABICS CARRIER ZU
+1641;N;CANADIAN SYLLABICS CARRIER ZO
+1642;N;CANADIAN SYLLABICS CARRIER ZE
+1643;N;CANADIAN SYLLABICS CARRIER ZEE
+1644;N;CANADIAN SYLLABICS CARRIER ZI
+1645;N;CANADIAN SYLLABICS CARRIER ZA
+1646;N;CANADIAN SYLLABICS CARRIER Z
+1647;N;CANADIAN SYLLABICS CARRIER INITIAL Z
+1648;N;CANADIAN SYLLABICS CARRIER DZU
+1649;N;CANADIAN SYLLABICS CARRIER DZO
+164A;N;CANADIAN SYLLABICS CARRIER DZE
+164B;N;CANADIAN SYLLABICS CARRIER DZEE
+164C;N;CANADIAN SYLLABICS CARRIER DZI
+164D;N;CANADIAN SYLLABICS CARRIER DZA
+164E;N;CANADIAN SYLLABICS CARRIER SU
+164F;N;CANADIAN SYLLABICS CARRIER SO
+1650;N;CANADIAN SYLLABICS CARRIER SE
+1651;N;CANADIAN SYLLABICS CARRIER SEE
+1652;N;CANADIAN SYLLABICS CARRIER SI
+1653;N;CANADIAN SYLLABICS CARRIER SA
+1654;N;CANADIAN SYLLABICS CARRIER SHU
+1655;N;CANADIAN SYLLABICS CARRIER SHO
+1656;N;CANADIAN SYLLABICS CARRIER SHE
+1657;N;CANADIAN SYLLABICS CARRIER SHEE
+1658;N;CANADIAN SYLLABICS CARRIER SHI
+1659;N;CANADIAN SYLLABICS CARRIER SHA
+165A;N;CANADIAN SYLLABICS CARRIER SH
+165B;N;CANADIAN SYLLABICS CARRIER TSU
+165C;N;CANADIAN SYLLABICS CARRIER TSO
+165D;N;CANADIAN SYLLABICS CARRIER TSE
+165E;N;CANADIAN SYLLABICS CARRIER TSEE
+165F;N;CANADIAN SYLLABICS CARRIER TSI
+1660;N;CANADIAN SYLLABICS CARRIER TSA
+1661;N;CANADIAN SYLLABICS CARRIER CHU
+1662;N;CANADIAN SYLLABICS CARRIER CHO
+1663;N;CANADIAN SYLLABICS CARRIER CHE
+1664;N;CANADIAN SYLLABICS CARRIER CHEE
+1665;N;CANADIAN SYLLABICS CARRIER CHI
+1666;N;CANADIAN SYLLABICS CARRIER CHA
+1667;N;CANADIAN SYLLABICS CARRIER TTSU
+1668;N;CANADIAN SYLLABICS CARRIER TTSO
+1669;N;CANADIAN SYLLABICS CARRIER TTSE
+166A;N;CANADIAN SYLLABICS CARRIER TTSEE
+166B;N;CANADIAN SYLLABICS CARRIER TTSI
+166C;N;CANADIAN SYLLABICS CARRIER TTSA
+166D;N;CANADIAN SYLLABICS CHI SIGN
+166E;N;CANADIAN SYLLABICS FULL STOP
+166F;N;CANADIAN SYLLABICS QAI
+1670;N;CANADIAN SYLLABICS NGAI
+1671;N;CANADIAN SYLLABICS NNGI
+1672;N;CANADIAN SYLLABICS NNGII
+1673;N;CANADIAN SYLLABICS NNGO
+1674;N;CANADIAN SYLLABICS NNGOO
+1675;N;CANADIAN SYLLABICS NNGA
+1676;N;CANADIAN SYLLABICS NNGAA
+1680;N;OGHAM SPACE MARK
+1681;N;OGHAM LETTER BEITH
+1682;N;OGHAM LETTER LUIS
+1683;N;OGHAM LETTER FEARN
+1684;N;OGHAM LETTER SAIL
+1685;N;OGHAM LETTER NION
+1686;N;OGHAM LETTER UATH
+1687;N;OGHAM LETTER DAIR
+1688;N;OGHAM LETTER TINNE
+1689;N;OGHAM LETTER COLL
+168A;N;OGHAM LETTER CEIRT
+168B;N;OGHAM LETTER MUIN
+168C;N;OGHAM LETTER GORT
+168D;N;OGHAM LETTER NGEADAL
+168E;N;OGHAM LETTER STRAIF
+168F;N;OGHAM LETTER RUIS
+1690;N;OGHAM LETTER AILM
+1691;N;OGHAM LETTER ONN
+1692;N;OGHAM LETTER UR
+1693;N;OGHAM LETTER EADHADH
+1694;N;OGHAM LETTER IODHADH
+1695;N;OGHAM LETTER EABHADH
+1696;N;OGHAM LETTER OR
+1697;N;OGHAM LETTER UILLEANN
+1698;N;OGHAM LETTER IFIN
+1699;N;OGHAM LETTER EAMHANCHOLL
+169A;N;OGHAM LETTER PEITH
+169B;N;OGHAM FEATHER MARK
+169C;N;OGHAM REVERSED FEATHER MARK
+16A0;N;RUNIC LETTER FEHU FEOH FE F
+16A1;N;RUNIC LETTER V
+16A2;N;RUNIC LETTER URUZ UR U
+16A3;N;RUNIC LETTER YR
+16A4;N;RUNIC LETTER Y
+16A5;N;RUNIC LETTER W
+16A6;N;RUNIC LETTER THURISAZ THURS THORN
+16A7;N;RUNIC LETTER ETH
+16A8;N;RUNIC LETTER ANSUZ A
+16A9;N;RUNIC LETTER OS O
+16AA;N;RUNIC LETTER AC A
+16AB;N;RUNIC LETTER AESC
+16AC;N;RUNIC LETTER LONG-BRANCH-OSS O
+16AD;N;RUNIC LETTER SHORT-TWIG-OSS O
+16AE;N;RUNIC LETTER O
+16AF;N;RUNIC LETTER OE
+16B0;N;RUNIC LETTER ON
+16B1;N;RUNIC LETTER RAIDO RAD REID R
+16B2;N;RUNIC LETTER KAUNA
+16B3;N;RUNIC LETTER CEN
+16B4;N;RUNIC LETTER KAUN K
+16B5;N;RUNIC LETTER G
+16B6;N;RUNIC LETTER ENG
+16B7;N;RUNIC LETTER GEBO GYFU G
+16B8;N;RUNIC LETTER GAR
+16B9;N;RUNIC LETTER WUNJO WYNN W
+16BA;N;RUNIC LETTER HAGLAZ H
+16BB;N;RUNIC LETTER HAEGL H
+16BC;N;RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD;N;RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE;N;RUNIC LETTER NAUDIZ NYD NAUD N
+16BF;N;RUNIC LETTER SHORT-TWIG-NAUD N
+16C0;N;RUNIC LETTER DOTTED-N
+16C1;N;RUNIC LETTER ISAZ IS ISS I
+16C2;N;RUNIC LETTER E
+16C3;N;RUNIC LETTER JERAN J
+16C4;N;RUNIC LETTER GER
+16C5;N;RUNIC LETTER LONG-BRANCH-AR AE
+16C6;N;RUNIC LETTER SHORT-TWIG-AR A
+16C7;N;RUNIC LETTER IWAZ EOH
+16C8;N;RUNIC LETTER PERTHO PEORTH P
+16C9;N;RUNIC LETTER ALGIZ EOLHX
+16CA;N;RUNIC LETTER SOWILO S
+16CB;N;RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16CC;N;RUNIC LETTER SHORT-TWIG-SOL S
+16CD;N;RUNIC LETTER C
+16CE;N;RUNIC LETTER Z
+16CF;N;RUNIC LETTER TIWAZ TIR TYR T
+16D0;N;RUNIC LETTER SHORT-TWIG-TYR T
+16D1;N;RUNIC LETTER D
+16D2;N;RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3;N;RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4;N;RUNIC LETTER DOTTED-P
+16D5;N;RUNIC LETTER OPEN-P
+16D6;N;RUNIC LETTER EHWAZ EH E
+16D7;N;RUNIC LETTER MANNAZ MAN M
+16D8;N;RUNIC LETTER LONG-BRANCH-MADR M
+16D9;N;RUNIC LETTER SHORT-TWIG-MADR M
+16DA;N;RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB;N;RUNIC LETTER DOTTED-L
+16DC;N;RUNIC LETTER INGWAZ
+16DD;N;RUNIC LETTER ING
+16DE;N;RUNIC LETTER DAGAZ DAEG D
+16DF;N;RUNIC LETTER OTHALAN ETHEL O
+16E0;N;RUNIC LETTER EAR
+16E1;N;RUNIC LETTER IOR
+16E2;N;RUNIC LETTER CWEORTH
+16E3;N;RUNIC LETTER CALC
+16E4;N;RUNIC LETTER CEALC
+16E5;N;RUNIC LETTER STAN
+16E6;N;RUNIC LETTER LONG-BRANCH-YR
+16E7;N;RUNIC LETTER SHORT-TWIG-YR
+16E8;N;RUNIC LETTER ICELANDIC-YR
+16E9;N;RUNIC LETTER Q
+16EA;N;RUNIC LETTER X
+16EB;N;RUNIC SINGLE PUNCTUATION
+16EC;N;RUNIC MULTIPLE PUNCTUATION
+16ED;N;RUNIC CROSS PUNCTUATION
+16EE;N;RUNIC ARLAUG SYMBOL
+16EF;N;RUNIC TVIMADUR SYMBOL
+16F0;N;RUNIC BELGTHOR SYMBOL
+1780;N;KHMER LETTER KA
+1781;N;KHMER LETTER KHA
+1782;N;KHMER LETTER KO
+1783;N;KHMER LETTER KHO
+1784;N;KHMER LETTER NGO
+1785;N;KHMER LETTER CA
+1786;N;KHMER LETTER CHA
+1787;N;KHMER LETTER CO
+1788;N;KHMER LETTER CHO
+1789;N;KHMER LETTER NYO
+178A;N;KHMER LETTER DA
+178B;N;KHMER LETTER TTHA
+178C;N;KHMER LETTER DO
+178D;N;KHMER LETTER TTHO
+178E;N;KHMER LETTER NNO
+178F;N;KHMER LETTER TA
+1790;N;KHMER LETTER THA
+1791;N;KHMER LETTER TO
+1792;N;KHMER LETTER THO
+1793;N;KHMER LETTER NO
+1794;N;KHMER LETTER BA
+1795;N;KHMER LETTER PHA
+1796;N;KHMER LETTER PO
+1797;N;KHMER LETTER PHO
+1798;N;KHMER LETTER MO
+1799;N;KHMER LETTER YO
+179A;N;KHMER LETTER RO
+179B;N;KHMER LETTER LO
+179C;N;KHMER LETTER VO
+179D;N;KHMER LETTER SHA
+179E;N;KHMER LETTER SSO
+179F;N;KHMER LETTER SA
+17A0;N;KHMER LETTER HA
+17A1;N;KHMER LETTER LA
+17A2;N;KHMER LETTER QA
+17A3;N;KHMER INDEPENDENT VOWEL QAQ
+17A4;N;KHMER INDEPENDENT VOWEL QAA
+17A5;N;KHMER INDEPENDENT VOWEL QI
+17A6;N;KHMER INDEPENDENT VOWEL QII
+17A7;N;KHMER INDEPENDENT VOWEL QU
+17A8;N;KHMER INDEPENDENT VOWEL QUK
+17A9;N;KHMER INDEPENDENT VOWEL QUU
+17AA;N;KHMER INDEPENDENT VOWEL QUUV
+17AB;N;KHMER INDEPENDENT VOWEL RY
+17AC;N;KHMER INDEPENDENT VOWEL RYY
+17AD;N;KHMER INDEPENDENT VOWEL LY
+17AE;N;KHMER INDEPENDENT VOWEL LYY
+17AF;N;KHMER INDEPENDENT VOWEL QE
+17B0;N;KHMER INDEPENDENT VOWEL QAI
+17B1;N;KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2;N;KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3;N;KHMER INDEPENDENT VOWEL QAU
+17B4;N;KHMER VOWEL INHERENT AQ
+17B5;N;KHMER VOWEL INHERENT AA
+17B6;N;KHMER VOWEL SIGN AA
+17B7;N;KHMER VOWEL SIGN I
+17B8;N;KHMER VOWEL SIGN II
+17B9;N;KHMER VOWEL SIGN Y
+17BA;N;KHMER VOWEL SIGN YY
+17BB;N;KHMER VOWEL SIGN U
+17BC;N;KHMER VOWEL SIGN UU
+17BD;N;KHMER VOWEL SIGN UA
+17BE;N;KHMER VOWEL SIGN OE
+17BF;N;KHMER VOWEL SIGN YA
+17C0;N;KHMER VOWEL SIGN IE
+17C1;N;KHMER VOWEL SIGN E
+17C2;N;KHMER VOWEL SIGN AE
+17C3;N;KHMER VOWEL SIGN AI
+17C4;N;KHMER VOWEL SIGN OO
+17C5;N;KHMER VOWEL SIGN AU
+17C6;N;KHMER SIGN NIKAHIT
+17C7;N;KHMER SIGN REAHMUK
+17C8;N;KHMER SIGN YUUKALEAPINTU
+17C9;N;KHMER SIGN MUUSIKATOAN
+17CA;N;KHMER SIGN TRIISAP
+17CB;N;KHMER SIGN BANTOC
+17CC;N;KHMER SIGN ROBAT
+17CD;N;KHMER SIGN TOANDAKHIAT
+17CE;N;KHMER SIGN KAKABAT
+17CF;N;KHMER SIGN AHSDA
+17D0;N;KHMER SIGN SAMYOK SANNYA
+17D1;N;KHMER SIGN VIRIAM
+17D2;N;KHMER SIGN COENG
+17D3;N;KHMER SIGN BATHAMASAT
+17D4;N;KHMER SIGN KHAN
+17D5;N;KHMER SIGN BARIYOOSAN
+17D6;N;KHMER SIGN CAMNUC PII KUUH
+17D7;N;KHMER SIGN LEK TOO
+17D8;N;KHMER SIGN BEYYAL
+17D9;N;KHMER SIGN PHNAEK MUAN
+17DA;N;KHMER SIGN KOOMUUT
+17DB;N;KHMER CURRENCY SYMBOL RIEL
+17DC;N;KHMER SIGN AVAKRAHASANYA
+17E0;N;KHMER DIGIT ZERO
+17E1;N;KHMER DIGIT ONE
+17E2;N;KHMER DIGIT TWO
+17E3;N;KHMER DIGIT THREE
+17E4;N;KHMER DIGIT FOUR
+17E5;N;KHMER DIGIT FIVE
+17E6;N;KHMER DIGIT SIX
+17E7;N;KHMER DIGIT SEVEN
+17E8;N;KHMER DIGIT EIGHT
+17E9;N;KHMER DIGIT NINE
+1800;N;MONGOLIAN BIRGA
+1801;N;MONGOLIAN ELLIPSIS
+1802;N;MONGOLIAN COMMA
+1803;N;MONGOLIAN FULL STOP
+1804;N;MONGOLIAN COLON
+1805;N;MONGOLIAN FOUR DOTS
+1806;N;MONGOLIAN TODO SOFT HYPHEN
+1807;N;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808;N;MONGOLIAN MANCHU COMMA
+1809;N;MONGOLIAN MANCHU FULL STOP
+180A;N;MONGOLIAN NIRUGU
+180B;N;MONGOLIAN FREE VARIATION SELECTOR ONE
+180C;N;MONGOLIAN FREE VARIATION SELECTOR TWO
+180D;N;MONGOLIAN FREE VARIATION SELECTOR THREE
+180E;N;MONGOLIAN VOWEL SEPARATOR
+1810;N;MONGOLIAN DIGIT ZERO
+1811;N;MONGOLIAN DIGIT ONE
+1812;N;MONGOLIAN DIGIT TWO
+1813;N;MONGOLIAN DIGIT THREE
+1814;N;MONGOLIAN DIGIT FOUR
+1815;N;MONGOLIAN DIGIT FIVE
+1816;N;MONGOLIAN DIGIT SIX
+1817;N;MONGOLIAN DIGIT SEVEN
+1818;N;MONGOLIAN DIGIT EIGHT
+1819;N;MONGOLIAN DIGIT NINE
+1820;N;MONGOLIAN LETTER A
+1821;N;MONGOLIAN LETTER E
+1822;N;MONGOLIAN LETTER I
+1823;N;MONGOLIAN LETTER O
+1824;N;MONGOLIAN LETTER U
+1825;N;MONGOLIAN LETTER OE
+1826;N;MONGOLIAN LETTER UE
+1827;N;MONGOLIAN LETTER EE
+1828;N;MONGOLIAN LETTER NA
+1829;N;MONGOLIAN LETTER ANG
+182A;N;MONGOLIAN LETTER BA
+182B;N;MONGOLIAN LETTER PA
+182C;N;MONGOLIAN LETTER QA
+182D;N;MONGOLIAN LETTER GA
+182E;N;MONGOLIAN LETTER MA
+182F;N;MONGOLIAN LETTER LA
+1830;N;MONGOLIAN LETTER SA
+1831;N;MONGOLIAN LETTER SHA
+1832;N;MONGOLIAN LETTER TA
+1833;N;MONGOLIAN LETTER DA
+1834;N;MONGOLIAN LETTER CHA
+1835;N;MONGOLIAN LETTER JA
+1836;N;MONGOLIAN LETTER YA
+1837;N;MONGOLIAN LETTER RA
+1838;N;MONGOLIAN LETTER WA
+1839;N;MONGOLIAN LETTER FA
+183A;N;MONGOLIAN LETTER KA
+183B;N;MONGOLIAN LETTER KHA
+183C;N;MONGOLIAN LETTER TSA
+183D;N;MONGOLIAN LETTER ZA
+183E;N;MONGOLIAN LETTER HAA
+183F;N;MONGOLIAN LETTER ZRA
+1840;N;MONGOLIAN LETTER LHA
+1841;N;MONGOLIAN LETTER ZHI
+1842;N;MONGOLIAN LETTER CHI
+1843;N;MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844;N;MONGOLIAN LETTER TODO E
+1845;N;MONGOLIAN LETTER TODO I
+1846;N;MONGOLIAN LETTER TODO O
+1847;N;MONGOLIAN LETTER TODO U
+1848;N;MONGOLIAN LETTER TODO OE
+1849;N;MONGOLIAN LETTER TODO UE
+184A;N;MONGOLIAN LETTER TODO ANG
+184B;N;MONGOLIAN LETTER TODO BA
+184C;N;MONGOLIAN LETTER TODO PA
+184D;N;MONGOLIAN LETTER TODO QA
+184E;N;MONGOLIAN LETTER TODO GA
+184F;N;MONGOLIAN LETTER TODO MA
+1850;N;MONGOLIAN LETTER TODO TA
+1851;N;MONGOLIAN LETTER TODO DA
+1852;N;MONGOLIAN LETTER TODO CHA
+1853;N;MONGOLIAN LETTER TODO JA
+1854;N;MONGOLIAN LETTER TODO TSA
+1855;N;MONGOLIAN LETTER TODO YA
+1856;N;MONGOLIAN LETTER TODO WA
+1857;N;MONGOLIAN LETTER TODO KA
+1858;N;MONGOLIAN LETTER TODO GAA
+1859;N;MONGOLIAN LETTER TODO HAA
+185A;N;MONGOLIAN LETTER TODO JIA
+185B;N;MONGOLIAN LETTER TODO NIA
+185C;N;MONGOLIAN LETTER TODO DZA
+185D;N;MONGOLIAN LETTER SIBE E
+185E;N;MONGOLIAN LETTER SIBE I
+185F;N;MONGOLIAN LETTER SIBE IY
+1860;N;MONGOLIAN LETTER SIBE UE
+1861;N;MONGOLIAN LETTER SIBE U
+1862;N;MONGOLIAN LETTER SIBE ANG
+1863;N;MONGOLIAN LETTER SIBE KA
+1864;N;MONGOLIAN LETTER SIBE GA
+1865;N;MONGOLIAN LETTER SIBE HA
+1866;N;MONGOLIAN LETTER SIBE PA
+1867;N;MONGOLIAN LETTER SIBE SHA
+1868;N;MONGOLIAN LETTER SIBE TA
+1869;N;MONGOLIAN LETTER SIBE DA
+186A;N;MONGOLIAN LETTER SIBE JA
+186B;N;MONGOLIAN LETTER SIBE FA
+186C;N;MONGOLIAN LETTER SIBE GAA
+186D;N;MONGOLIAN LETTER SIBE HAA
+186E;N;MONGOLIAN LETTER SIBE TSA
+186F;N;MONGOLIAN LETTER SIBE ZA
+1870;N;MONGOLIAN LETTER SIBE RAA
+1871;N;MONGOLIAN LETTER SIBE CHA
+1872;N;MONGOLIAN LETTER SIBE ZHA
+1873;N;MONGOLIAN LETTER MANCHU I
+1874;N;MONGOLIAN LETTER MANCHU KA
+1875;N;MONGOLIAN LETTER MANCHU RA
+1876;N;MONGOLIAN LETTER MANCHU FA
+1877;N;MONGOLIAN LETTER MANCHU ZHA
+1880;N;MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881;N;MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882;N;MONGOLIAN LETTER ALI GALI DAMARU
+1883;N;MONGOLIAN LETTER ALI GALI UBADAMA
+1884;N;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885;N;MONGOLIAN LETTER ALI GALI BALUDA
+1886;N;MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887;N;MONGOLIAN LETTER ALI GALI A
+1888;N;MONGOLIAN LETTER ALI GALI I
+1889;N;MONGOLIAN LETTER ALI GALI KA
+188A;N;MONGOLIAN LETTER ALI GALI NGA
+188B;N;MONGOLIAN LETTER ALI GALI CA
+188C;N;MONGOLIAN LETTER ALI GALI TTA
+188D;N;MONGOLIAN LETTER ALI GALI TTHA
+188E;N;MONGOLIAN LETTER ALI GALI DDA
+188F;N;MONGOLIAN LETTER ALI GALI NNA
+1890;N;MONGOLIAN LETTER ALI GALI TA
+1891;N;MONGOLIAN LETTER ALI GALI DA
+1892;N;MONGOLIAN LETTER ALI GALI PA
+1893;N;MONGOLIAN LETTER ALI GALI PHA
+1894;N;MONGOLIAN LETTER ALI GALI SSA
+1895;N;MONGOLIAN LETTER ALI GALI ZHA
+1896;N;MONGOLIAN LETTER ALI GALI ZA
+1897;N;MONGOLIAN LETTER ALI GALI AH
+1898;N;MONGOLIAN LETTER TODO ALI GALI TA
+1899;N;MONGOLIAN LETTER TODO ALI GALI ZHA
+189A;N;MONGOLIAN LETTER MANCHU ALI GALI GHA
+189B;N;MONGOLIAN LETTER MANCHU ALI GALI NGA
+189C;N;MONGOLIAN LETTER MANCHU ALI GALI CA
+189D;N;MONGOLIAN LETTER MANCHU ALI GALI JHA
+189E;N;MONGOLIAN LETTER MANCHU ALI GALI TTA
+189F;N;MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18A0;N;MONGOLIAN LETTER MANCHU ALI GALI TA
+18A1;N;MONGOLIAN LETTER MANCHU ALI GALI DHA
+18A2;N;MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A3;N;MONGOLIAN LETTER MANCHU ALI GALI CYA
+18A4;N;MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5;N;MONGOLIAN LETTER MANCHU ALI GALI ZA
+18A6;N;MONGOLIAN LETTER ALI GALI HALF U
+18A7;N;MONGOLIAN LETTER ALI GALI HALF YA
+18A8;N;MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9;N;MONGOLIAN LETTER ALI GALI DAGALGA
+1E00;N;LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;N;LATIN SMALL LETTER A WITH RING BELOW
+1E02;N;LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;N;LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;N;LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;N;LATIN SMALL LETTER B WITH DOT BELOW
+1E06;N;LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;N;LATIN SMALL LETTER B WITH LINE BELOW
+1E08;N;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;N;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;N;LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;N;LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;N;LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;N;LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;N;LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;N;LATIN SMALL LETTER D WITH LINE BELOW
+1E10;N;LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;N;LATIN SMALL LETTER D WITH CEDILLA
+1E12;N;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;N;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;N;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;N;LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;N;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;N;LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;N;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;N;LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;N;LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;N;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;N;LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;N;LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;N;LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;N;LATIN CAPITAL LETTER G WITH MACRON
+1E21;N;LATIN SMALL LETTER G WITH MACRON
+1E22;N;LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;N;LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;N;LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;N;LATIN SMALL LETTER H WITH DOT BELOW
+1E26;N;LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;N;LATIN SMALL LETTER H WITH DIAERESIS
+1E28;N;LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;N;LATIN SMALL LETTER H WITH CEDILLA
+1E2A;N;LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;N;LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;N;LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;N;LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;N;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;N;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;N;LATIN CAPITAL LETTER K WITH ACUTE
+1E31;N;LATIN SMALL LETTER K WITH ACUTE
+1E32;N;LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;N;LATIN SMALL LETTER K WITH DOT BELOW
+1E34;N;LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;N;LATIN SMALL LETTER K WITH LINE BELOW
+1E36;N;LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;N;LATIN SMALL LETTER L WITH DOT BELOW
+1E38;N;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;N;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;N;LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;N;LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;N;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;N;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;N;LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;N;LATIN SMALL LETTER M WITH ACUTE
+1E40;N;LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;N;LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;N;LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;N;LATIN SMALL LETTER M WITH DOT BELOW
+1E44;N;LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;N;LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;N;LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;N;LATIN SMALL LETTER N WITH DOT BELOW
+1E48;N;LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;N;LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;N;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;N;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;N;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;N;LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;N;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;N;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;N;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;N;LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;N;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;N;LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;N;LATIN CAPITAL LETTER P WITH ACUTE
+1E55;N;LATIN SMALL LETTER P WITH ACUTE
+1E56;N;LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;N;LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;N;LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;N;LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;N;LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;N;LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;N;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;N;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;N;LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;N;LATIN SMALL LETTER R WITH LINE BELOW
+1E60;N;LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;N;LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;N;LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;N;LATIN SMALL LETTER S WITH DOT BELOW
+1E64;N;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;N;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;N;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;N;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;N;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;N;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;N;LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;N;LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;N;LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;N;LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;N;LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;N;LATIN SMALL LETTER T WITH LINE BELOW
+1E70;N;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;N;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;N;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;N;LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;N;LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;N;LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;N;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;N;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;N;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;N;LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;N;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;N;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;N;LATIN CAPITAL LETTER V WITH TILDE
+1E7D;N;LATIN SMALL LETTER V WITH TILDE
+1E7E;N;LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;N;LATIN SMALL LETTER V WITH DOT BELOW
+1E80;N;LATIN CAPITAL LETTER W WITH GRAVE
+1E81;N;LATIN SMALL LETTER W WITH GRAVE
+1E82;N;LATIN CAPITAL LETTER W WITH ACUTE
+1E83;N;LATIN SMALL LETTER W WITH ACUTE
+1E84;N;LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;N;LATIN SMALL LETTER W WITH DIAERESIS
+1E86;N;LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;N;LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;N;LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;N;LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;N;LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;N;LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;N;LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;N;LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;N;LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;N;LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;N;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;N;LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;N;LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;N;LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;N;LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;N;LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;N;LATIN SMALL LETTER H WITH LINE BELOW
+1E97;N;LATIN SMALL LETTER T WITH DIAERESIS
+1E98;N;LATIN SMALL LETTER W WITH RING ABOVE
+1E99;N;LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;N;LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;N;LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;N;LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;N;LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;N;LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;N;LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;N;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;N;LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;N;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;N;LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;N;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;N;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;N;LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;N;LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;N;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;N;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;N;LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;N;LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;N;LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;N;LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;N;LATIN CAPITAL LETTER E WITH TILDE
+1EBD;N;LATIN SMALL LETTER E WITH TILDE
+1EBE;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;N;LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;N;LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;N;LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;N;LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;N;LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;N;LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;N;LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;N;LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;N;LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;N;LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;N;LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;N;LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;N;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;N;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;N;LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;N;LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;N;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;N;LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;N;LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;N;LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;N;LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;N;LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;N;LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;N;LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;N;LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;N;LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;N;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;N;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;N;LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;N;LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;N;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;N;LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;N;LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;N;LATIN SMALL LETTER Y WITH GRAVE
+1EF4;N;LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;N;LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;N;LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;N;LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;N;LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;N;LATIN SMALL LETTER Y WITH TILDE
+1F00;N;GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;N;GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;N;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;N;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;N;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;N;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;N;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;N;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;N;GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;N;GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;N;GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;N;GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;N;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;N;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;N;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;N;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;N;GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;N;GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;N;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;N;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;N;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;N;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;N;GREEK SMALL LETTER ETA WITH PSILI
+1F21;N;GREEK SMALL LETTER ETA WITH DASIA
+1F22;N;GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;N;GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;N;GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;N;GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;N;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;N;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;N;GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;N;GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;N;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;N;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;N;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;N;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;N;GREEK SMALL LETTER IOTA WITH PSILI
+1F31;N;GREEK SMALL LETTER IOTA WITH DASIA
+1F32;N;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;N;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;N;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;N;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;N;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;N;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;N;GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;N;GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;N;GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;N;GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;N;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;N;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;N;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;N;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;N;GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;N;GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;N;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;N;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;N;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;N;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;N;GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;N;GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;N;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;N;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;N;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;N;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;N;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;N;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;N;GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;N;GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;N;GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;N;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;N;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;N;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;N;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;N;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;N;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;N;GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;N;GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;N;GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;N;GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;N;GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;N;GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;N;GREEK SMALL LETTER ETA WITH VARIA
+1F75;N;GREEK SMALL LETTER ETA WITH OXIA
+1F76;N;GREEK SMALL LETTER IOTA WITH VARIA
+1F77;N;GREEK SMALL LETTER IOTA WITH OXIA
+1F78;N;GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;N;GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;N;GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;N;GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;N;GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;N;GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;N;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;N;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;N;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;N;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;N;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;N;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;N;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;N;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;N;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;N;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;N;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;N;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;N;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;N;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;N;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;N;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;N;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;N;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;N;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;N;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;N;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;N;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;N;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;N;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;N;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;N;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;N;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;N;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;N;GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;N;GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;N;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;N;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;N;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;N;GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;N;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;N;GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;N;GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;N;GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;N;GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;N;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;N;GREEK KORONIS
+1FBE;N;GREEK PROSGEGRAMMENI
+1FBF;N;GREEK PSILI
+1FC0;N;GREEK PERISPOMENI
+1FC1;N;GREEK DIALYTIKA AND PERISPOMENI
+1FC2;N;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;N;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;N;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;N;GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;N;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;N;GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;N;GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;N;GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;N;GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;N;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;N;GREEK PSILI AND VARIA
+1FCE;N;GREEK PSILI AND OXIA
+1FCF;N;GREEK PSILI AND PERISPOMENI
+1FD0;N;GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;N;GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;N;GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;N;GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;N;GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;N;GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;N;GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;N;GREEK DASIA AND VARIA
+1FDE;N;GREEK DASIA AND OXIA
+1FDF;N;GREEK DASIA AND PERISPOMENI
+1FE0;N;GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;N;GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;N;GREEK SMALL LETTER RHO WITH PSILI
+1FE5;N;GREEK SMALL LETTER RHO WITH DASIA
+1FE6;N;GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;N;GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;N;GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;N;GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;N;GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;N;GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;N;GREEK DIALYTIKA AND VARIA
+1FEE;N;GREEK DIALYTIKA AND OXIA
+1FEF;N;GREEK VARIA
+1FF2;N;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;N;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;N;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;N;GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;N;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;N;GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;N;GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;N;GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;N;GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;N;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;N;GREEK OXIA
+1FFE;N;GREEK DASIA
+2000;N;EN QUAD
+2001;N;EM QUAD
+2002;N;EN SPACE
+2003;N;EM SPACE
+2004;N;THREE-PER-EM SPACE
+2005;N;FOUR-PER-EM SPACE
+2006;N;SIX-PER-EM SPACE
+2007;N;FIGURE SPACE
+2008;N;PUNCTUATION SPACE
+2009;N;THIN SPACE
+200A;N;HAIR SPACE
+200B;N;ZERO WIDTH SPACE
+200C;N;ZERO WIDTH NON-JOINER
+200D;N;ZERO WIDTH JOINER
+200E;N;LEFT-TO-RIGHT MARK
+200F;N;RIGHT-TO-LEFT MARK
+2010;A;HYPHEN
+2011;N;NON-BREAKING HYPHEN
+2012;N;FIGURE DASH
+2013;A;EN DASH
+2014;A;EM DASH
+2015;A;HORIZONTAL BAR
+2016;A;DOUBLE VERTICAL LINE
+2017;N;DOUBLE LOW LINE
+2018;A;LEFT SINGLE QUOTATION MARK
+2019;A;RIGHT SINGLE QUOTATION MARK
+201A;N;SINGLE LOW-9 QUOTATION MARK
+201B;N;SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C;A;LEFT DOUBLE QUOTATION MARK
+201D;A;RIGHT DOUBLE QUOTATION MARK
+201E;N;DOUBLE LOW-9 QUOTATION MARK
+201F;N;DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020;A;DAGGER
+2021;A;DOUBLE DAGGER
+2022;N;BULLET
+2023;N;TRIANGULAR BULLET
+2024;N;ONE DOT LEADER
+2025;A;TWO DOT LEADER
+2026;A;HORIZONTAL ELLIPSIS
+2027;A;HYPHENATION POINT
+2028;N;LINE SEPARATOR
+2029;N;PARAGRAPH SEPARATOR
+202A;N;LEFT-TO-RIGHT EMBEDDING
+202B;N;RIGHT-TO-LEFT EMBEDDING
+202C;N;POP DIRECTIONAL FORMATTING
+202D;N;LEFT-TO-RIGHT OVERRIDE
+202E;N;RIGHT-TO-LEFT OVERRIDE
+202F;N;NARROW NO-BREAK SPACE
+2030;A;PER MILLE SIGN
+2031;N;PER TEN THOUSAND SIGN
+2032;A;PRIME
+2033;A;DOUBLE PRIME
+2034;N;TRIPLE PRIME
+2035;A;REVERSED PRIME
+2036;N;REVERSED DOUBLE PRIME
+2037;N;REVERSED TRIPLE PRIME
+2038;N;CARET
+2039;N;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;N;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B;A;REFERENCE MARK
+203C;N;DOUBLE EXCLAMATION MARK
+203D;N;INTERROBANG
+203E;N;OVERLINE
+203F;N;UNDERTIE
+2040;N;CHARACTER TIE
+2041;N;CARET INSERTION POINT
+2042;N;ASTERISM
+2043;N;HYPHEN BULLET
+2044;N;FRACTION SLASH
+2045;N;LEFT SQUARE BRACKET WITH QUILL
+2046;N;RIGHT SQUARE BRACKET WITH QUILL
+2048;N;QUESTION EXCLAMATION MARK
+2049;N;EXCLAMATION QUESTION MARK
+204A;N;TIRONIAN SIGN ET
+204B;N;REVERSED PILCROW SIGN
+204C;N;BLACK LEFTWARDS BULLET
+204D;N;BLACK RIGHTWARDS BULLET
+206A;N;INHIBIT SYMMETRIC SWAPPING
+206B;N;ACTIVATE SYMMETRIC SWAPPING
+206C;N;INHIBIT ARABIC FORM SHAPING
+206D;N;ACTIVATE ARABIC FORM SHAPING
+206E;N;NATIONAL DIGIT SHAPES
+206F;N;NOMINAL DIGIT SHAPES
+2070;N;SUPERSCRIPT ZERO
+2074;A;SUPERSCRIPT FOUR
+2075;N;SUPERSCRIPT FIVE
+2076;N;SUPERSCRIPT SIX
+2077;N;SUPERSCRIPT SEVEN
+2078;N;SUPERSCRIPT EIGHT
+2079;N;SUPERSCRIPT NINE
+207A;N;SUPERSCRIPT PLUS SIGN
+207B;N;SUPERSCRIPT MINUS
+207C;N;SUPERSCRIPT EQUALS SIGN
+207D;N;SUPERSCRIPT LEFT PARENTHESIS
+207E;N;SUPERSCRIPT RIGHT PARENTHESIS
+207F;A;SUPERSCRIPT LATIN SMALL LETTER N
+2080;N;SUBSCRIPT ZERO
+2081;A;SUBSCRIPT ONE
+2082;A;SUBSCRIPT TWO
+2083;A;SUBSCRIPT THREE
+2084;A;SUBSCRIPT FOUR
+2085;N;SUBSCRIPT FIVE
+2086;N;SUBSCRIPT SIX
+2087;N;SUBSCRIPT SEVEN
+2088;N;SUBSCRIPT EIGHT
+2089;N;SUBSCRIPT NINE
+208A;N;SUBSCRIPT PLUS SIGN
+208B;N;SUBSCRIPT MINUS
+208C;N;SUBSCRIPT EQUALS SIGN
+208D;N;SUBSCRIPT LEFT PARENTHESIS
+208E;N;SUBSCRIPT RIGHT PARENTHESIS
+20A0;N;EURO-CURRENCY SIGN
+20A1;N;COLON SIGN
+20A2;N;CRUZEIRO SIGN
+20A3;N;FRENCH FRANC SIGN
+20A4;N;LIRA SIGN
+20A5;N;MILL SIGN
+20A6;N;NAIRA SIGN
+20A7;N;PESETA SIGN
+20A8;N;RUPEE SIGN
+20A9;H;WON SIGN
+20AA;N;NEW SHEQEL SIGN
+20AB;N;DONG SIGN
+20AC;A;EURO SIGN
+20AD;N;KIP SIGN
+20AE;N;TUGRIK SIGN
+20AF;N;DRACHMA SIGN
+20D0;N;COMBINING LEFT HARPOON ABOVE
+20D1;N;COMBINING RIGHT HARPOON ABOVE
+20D2;N;COMBINING LONG VERTICAL LINE OVERLAY
+20D3;N;COMBINING SHORT VERTICAL LINE OVERLAY
+20D4;N;COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5;N;COMBINING CLOCKWISE ARROW ABOVE
+20D6;N;COMBINING LEFT ARROW ABOVE
+20D7;N;COMBINING RIGHT ARROW ABOVE
+20D8;N;COMBINING RING OVERLAY
+20D9;N;COMBINING CLOCKWISE RING OVERLAY
+20DA;N;COMBINING ANTICLOCKWISE RING OVERLAY
+20DB;N;COMBINING THREE DOTS ABOVE
+20DC;N;COMBINING FOUR DOTS ABOVE
+20DD;N;COMBINING ENCLOSING CIRCLE
+20DE;N;COMBINING ENCLOSING SQUARE
+20DF;N;COMBINING ENCLOSING DIAMOND
+20E0;N;COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1;N;COMBINING LEFT RIGHT ARROW ABOVE
+20E2;N;COMBINING ENCLOSING SCREEN
+20E3;N;COMBINING ENCLOSING KEYCAP
+2100;N;ACCOUNT OF
+2101;N;ADDRESSED TO THE SUBJECT
+2102;N;DOUBLE-STRUCK CAPITAL C
+2103;A;DEGREE CELSIUS
+2104;N;CENTRE LINE SYMBOL
+2105;A;CARE OF
+2106;N;CADA UNA
+2107;N;EULER CONSTANT
+2108;N;SCRUPLE
+2109;A;DEGREE FAHRENHEIT
+210A;N;SCRIPT SMALL G
+210B;N;SCRIPT CAPITAL H
+210C;N;BLACK-LETTER CAPITAL H
+210D;N;DOUBLE-STRUCK CAPITAL H
+210E;N;PLANCK CONSTANT
+210F;N;PLANCK CONSTANT OVER TWO PI
+2110;N;SCRIPT CAPITAL I
+2111;N;BLACK-LETTER CAPITAL I
+2112;N;SCRIPT CAPITAL L
+2113;A;SCRIPT SMALL L
+2114;N;L B BAR SYMBOL
+2115;N;DOUBLE-STRUCK CAPITAL N
+2116;N;NUMERO SIGN
+2117;N;SOUND RECORDING COPYRIGHT
+2118;N;SCRIPT CAPITAL P
+2119;N;DOUBLE-STRUCK CAPITAL P
+211A;N;DOUBLE-STRUCK CAPITAL Q
+211B;N;SCRIPT CAPITAL R
+211C;N;BLACK-LETTER CAPITAL R
+211D;N;DOUBLE-STRUCK CAPITAL R
+211E;N;PRESCRIPTION TAKE
+211F;N;RESPONSE
+2120;N;SERVICE MARK
+2121;A;TELEPHONE SIGN
+2122;A;TRADE MARK SIGN
+2123;N;VERSICLE
+2124;N;DOUBLE-STRUCK CAPITAL Z
+2125;N;OUNCE SIGN
+2126;A;OHM SIGN
+2127;N;INVERTED OHM SIGN
+2128;N;BLACK-LETTER CAPITAL Z
+2129;N;TURNED GREEK SMALL LETTER IOTA
+212A;N;KELVIN SIGN
+212B;A;ANGSTROM SIGN
+212C;N;SCRIPT CAPITAL B
+212D;N;BLACK-LETTER CAPITAL C
+212E;N;ESTIMATED SYMBOL
+212F;N;SCRIPT SMALL E
+2130;N;SCRIPT CAPITAL E
+2131;N;SCRIPT CAPITAL F
+2132;N;TURNED CAPITAL F
+2133;N;SCRIPT CAPITAL M
+2134;N;SCRIPT SMALL O
+2135;N;ALEF SYMBOL
+2136;N;BET SYMBOL
+2137;N;GIMEL SYMBOL
+2138;N;DALET SYMBOL
+2139;N;INFORMATION SOURCE
+213A;N;ROTATED CAPITAL Q
+2153;N;VULGAR FRACTION ONE THIRD
+2154;A;VULGAR FRACTION TWO THIRDS
+2155;A;VULGAR FRACTION ONE FIFTH
+2156;N;VULGAR FRACTION TWO FIFTHS
+2157;N;VULGAR FRACTION THREE FIFTHS
+2158;N;VULGAR FRACTION FOUR FIFTHS
+2159;N;VULGAR FRACTION ONE SIXTH
+215A;N;VULGAR FRACTION FIVE SIXTHS
+215B;A;VULGAR FRACTION ONE EIGHTH
+215C;N;VULGAR FRACTION THREE EIGHTHS
+215D;N;VULGAR FRACTION FIVE EIGHTHS
+215E;A;VULGAR FRACTION SEVEN EIGHTHS
+215F;N;FRACTION NUMERATOR ONE
+2160;A;ROMAN NUMERAL ONE
+2161;A;ROMAN NUMERAL TWO
+2162;A;ROMAN NUMERAL THREE
+2163;A;ROMAN NUMERAL FOUR
+2164;A;ROMAN NUMERAL FIVE
+2165;A;ROMAN NUMERAL SIX
+2166;A;ROMAN NUMERAL SEVEN
+2167;A;ROMAN NUMERAL EIGHT
+2168;A;ROMAN NUMERAL NINE
+2169;A;ROMAN NUMERAL TEN
+216A;A;ROMAN NUMERAL ELEVEN
+216B;A;ROMAN NUMERAL TWELVE
+216C;N;ROMAN NUMERAL FIFTY
+216D;N;ROMAN NUMERAL ONE HUNDRED
+216E;N;ROMAN NUMERAL FIVE HUNDRED
+216F;N;ROMAN NUMERAL ONE THOUSAND
+2170;A;SMALL ROMAN NUMERAL ONE
+2171;A;SMALL ROMAN NUMERAL TWO
+2172;A;SMALL ROMAN NUMERAL THREE
+2173;A;SMALL ROMAN NUMERAL FOUR
+2174;A;SMALL ROMAN NUMERAL FIVE
+2175;A;SMALL ROMAN NUMERAL SIX
+2176;A;SMALL ROMAN NUMERAL SEVEN
+2177;A;SMALL ROMAN NUMERAL EIGHT
+2178;A;SMALL ROMAN NUMERAL NINE
+2179;A;SMALL ROMAN NUMERAL TEN
+217A;N;SMALL ROMAN NUMERAL ELEVEN
+217B;N;SMALL ROMAN NUMERAL TWELVE
+217C;N;SMALL ROMAN NUMERAL FIFTY
+217D;N;SMALL ROMAN NUMERAL ONE HUNDRED
+217E;N;SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;N;SMALL ROMAN NUMERAL ONE THOUSAND
+2180;N;ROMAN NUMERAL ONE THOUSAND C D
+2181;N;ROMAN NUMERAL FIVE THOUSAND
+2182;N;ROMAN NUMERAL TEN THOUSAND
+2183;N;ROMAN NUMERAL REVERSED ONE HUNDRED
+2190;A;LEFTWARDS ARROW
+2191;A;UPWARDS ARROW
+2192;A;RIGHTWARDS ARROW
+2193;A;DOWNWARDS ARROW
+2194;A;LEFT RIGHT ARROW
+2195;A;UP DOWN ARROW
+2196;A;NORTH WEST ARROW
+2197;A;NORTH EAST ARROW
+2198;A;SOUTH EAST ARROW
+2199;A;SOUTH WEST ARROW
+219A;N;LEFTWARDS ARROW WITH STROKE
+219B;N;RIGHTWARDS ARROW WITH STROKE
+219C;N;LEFTWARDS WAVE ARROW
+219D;N;RIGHTWARDS WAVE ARROW
+219E;N;LEFTWARDS TWO HEADED ARROW
+219F;N;UPWARDS TWO HEADED ARROW
+21A0;N;RIGHTWARDS TWO HEADED ARROW
+21A1;N;DOWNWARDS TWO HEADED ARROW
+21A2;N;LEFTWARDS ARROW WITH TAIL
+21A3;N;RIGHTWARDS ARROW WITH TAIL
+21A4;N;LEFTWARDS ARROW FROM BAR
+21A5;N;UPWARDS ARROW FROM BAR
+21A6;N;RIGHTWARDS ARROW FROM BAR
+21A7;N;DOWNWARDS ARROW FROM BAR
+21A8;N;UP DOWN ARROW WITH BASE
+21A9;N;LEFTWARDS ARROW WITH HOOK
+21AA;N;RIGHTWARDS ARROW WITH HOOK
+21AB;N;LEFTWARDS ARROW WITH LOOP
+21AC;N;RIGHTWARDS ARROW WITH LOOP
+21AD;N;LEFT RIGHT WAVE ARROW
+21AE;N;LEFT RIGHT ARROW WITH STROKE
+21AF;N;DOWNWARDS ZIGZAG ARROW
+21B0;N;UPWARDS ARROW WITH TIP LEFTWARDS
+21B1;N;UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2;N;DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3;N;DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4;N;RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5;N;DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6;N;ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7;N;CLOCKWISE TOP SEMICIRCLE ARROW
+21B8;N;NORTH WEST ARROW TO LONG BAR
+21B9;N;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA;N;ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB;N;CLOCKWISE OPEN CIRCLE ARROW
+21BC;N;LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD;N;LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE;N;UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF;N;UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0;N;RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1;N;RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2;N;DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3;N;DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4;N;RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5;N;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6;N;LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7;N;LEFTWARDS PAIRED ARROWS
+21C8;N;UPWARDS PAIRED ARROWS
+21C9;N;RIGHTWARDS PAIRED ARROWS
+21CA;N;DOWNWARDS PAIRED ARROWS
+21CB;N;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC;N;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD;N;LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;N;LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;N;RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0;N;LEFTWARDS DOUBLE ARROW
+21D1;N;UPWARDS DOUBLE ARROW
+21D2;A;RIGHTWARDS DOUBLE ARROW
+21D3;N;DOWNWARDS DOUBLE ARROW
+21D4;A;LEFT RIGHT DOUBLE ARROW
+21D5;N;UP DOWN DOUBLE ARROW
+21D6;N;NORTH WEST DOUBLE ARROW
+21D7;N;NORTH EAST DOUBLE ARROW
+21D8;N;SOUTH EAST DOUBLE ARROW
+21D9;N;SOUTH WEST DOUBLE ARROW
+21DA;N;LEFTWARDS TRIPLE ARROW
+21DB;N;RIGHTWARDS TRIPLE ARROW
+21DC;N;LEFTWARDS SQUIGGLE ARROW
+21DD;N;RIGHTWARDS SQUIGGLE ARROW
+21DE;N;UPWARDS ARROW WITH DOUBLE STROKE
+21DF;N;DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0;N;LEFTWARDS DASHED ARROW
+21E1;N;UPWARDS DASHED ARROW
+21E2;N;RIGHTWARDS DASHED ARROW
+21E3;N;DOWNWARDS DASHED ARROW
+21E4;N;LEFTWARDS ARROW TO BAR
+21E5;N;RIGHTWARDS ARROW TO BAR
+21E6;N;LEFTWARDS WHITE ARROW
+21E7;N;UPWARDS WHITE ARROW
+21E8;N;RIGHTWARDS WHITE ARROW
+21E9;N;DOWNWARDS WHITE ARROW
+21EA;N;UPWARDS WHITE ARROW FROM BAR
+21EB;N;UPWARDS WHITE ARROW ON PEDESTAL
+21EC;N;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED;N;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE;N;UPWARDS WHITE DOUBLE ARROW
+21EF;N;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0;N;RIGHTWARDS WHITE ARROW FROM WALL
+21F1;N;NORTH WEST ARROW TO CORNER
+21F2;N;SOUTH EAST ARROW TO CORNER
+21F3;N;UP DOWN WHITE ARROW
+2200;A;FOR ALL
+2201;N;COMPLEMENT
+2202;A;PARTIAL DIFFERENTIAL
+2203;A;THERE EXISTS
+2204;N;THERE DOES NOT EXIST
+2205;N;EMPTY SET
+2206;N;INCREMENT
+2207;A;NABLA
+2208;A;ELEMENT OF
+2209;N;NOT AN ELEMENT OF
+220A;N;SMALL ELEMENT OF
+220B;A;CONTAINS AS MEMBER
+220C;N;DOES NOT CONTAIN AS MEMBER
+220D;N;SMALL CONTAINS AS MEMBER
+220E;N;END OF PROOF
+220F;A;N-ARY PRODUCT
+2210;N;N-ARY COPRODUCT
+2211;A;N-ARY SUMMATION
+2212;N;MINUS SIGN
+2213;N;MINUS-OR-PLUS SIGN
+2214;N;DOT PLUS
+2215;A;DIVISION SLASH
+2216;N;SET MINUS
+2217;N;ASTERISK OPERATOR
+2218;N;RING OPERATOR
+2219;N;BULLET OPERATOR
+221A;A;SQUARE ROOT
+221B;N;CUBE ROOT
+221C;N;FOURTH ROOT
+221D;A;PROPORTIONAL TO
+221E;A;INFINITY
+221F;A;RIGHT ANGLE
+2220;A;ANGLE
+2221;N;MEASURED ANGLE
+2222;N;SPHERICAL ANGLE
+2223;A;DIVIDES
+2224;N;DOES NOT DIVIDE
+2225;A;PARALLEL TO
+2226;N;NOT PARALLEL TO
+2227;A;LOGICAL AND
+2228;A;LOGICAL OR
+2229;A;INTERSECTION
+222A;A;UNION
+222B;A;INTEGRAL
+222C;A;DOUBLE INTEGRAL
+222D;N;TRIPLE INTEGRAL
+222E;A;CONTOUR INTEGRAL
+222F;N;SURFACE INTEGRAL
+2230;N;VOLUME INTEGRAL
+2231;N;CLOCKWISE INTEGRAL
+2232;N;CLOCKWISE CONTOUR INTEGRAL
+2233;N;ANTICLOCKWISE CONTOUR INTEGRAL
+2234;A;THEREFORE
+2235;A;BECAUSE
+2236;A;RATIO
+2237;A;PROPORTION
+2238;N;DOT MINUS
+2239;N;EXCESS
+223A;N;GEOMETRIC PROPORTION
+223B;N;HOMOTHETIC
+223C;A;TILDE OPERATOR
+223D;A;REVERSED TILDE
+223E;N;INVERTED LAZY S
+223F;N;SINE WAVE
+2240;N;WREATH PRODUCT
+2241;N;NOT TILDE
+2242;N;MINUS TILDE
+2243;N;ASYMPTOTICALLY EQUAL TO
+2244;N;NOT ASYMPTOTICALLY EQUAL TO
+2245;N;APPROXIMATELY EQUAL TO
+2246;N;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247;N;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248;A;ALMOST EQUAL TO
+2249;N;NOT ALMOST EQUAL TO
+224A;N;ALMOST EQUAL OR EQUAL TO
+224B;N;TRIPLE TILDE
+224C;A;ALL EQUAL TO
+224D;N;EQUIVALENT TO
+224E;N;GEOMETRICALLY EQUIVALENT TO
+224F;N;DIFFERENCE BETWEEN
+2250;N;APPROACHES THE LIMIT
+2251;N;GEOMETRICALLY EQUAL TO
+2252;A;APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253;N;IMAGE OF OR APPROXIMATELY EQUAL TO
+2254;N;COLON EQUALS
+2255;N;EQUALS COLON
+2256;N;RING IN EQUAL TO
+2257;N;RING EQUAL TO
+2258;N;CORRESPONDS TO
+2259;N;ESTIMATES
+225A;N;EQUIANGULAR TO
+225B;N;STAR EQUALS
+225C;N;DELTA EQUAL TO
+225D;N;EQUAL TO BY DEFINITION
+225E;N;MEASURED BY
+225F;N;QUESTIONED EQUAL TO
+2260;A;NOT EQUAL TO
+2261;A;IDENTICAL TO
+2262;N;NOT IDENTICAL TO
+2263;N;STRICTLY EQUIVALENT TO
+2264;A;LESS-THAN OR EQUAL TO
+2265;A;GREATER-THAN OR EQUAL TO
+2266;A;LESS-THAN OVER EQUAL TO
+2267;A;GREATER-THAN OVER EQUAL TO
+2268;N;LESS-THAN BUT NOT EQUAL TO
+2269;N;GREATER-THAN BUT NOT EQUAL TO
+226A;A;MUCH LESS-THAN
+226B;A;MUCH GREATER-THAN
+226C;N;BETWEEN
+226D;N;NOT EQUIVALENT TO
+226E;A;NOT LESS-THAN
+226F;A;NOT GREATER-THAN
+2270;N;NEITHER LESS-THAN NOR EQUAL TO
+2271;N;NEITHER GREATER-THAN NOR EQUAL TO
+2272;N;LESS-THAN OR EQUIVALENT TO
+2273;N;GREATER-THAN OR EQUIVALENT TO
+2274;N;NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;N;NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276;N;LESS-THAN OR GREATER-THAN
+2277;N;GREATER-THAN OR LESS-THAN
+2278;N;NEITHER LESS-THAN NOR GREATER-THAN
+2279;N;NEITHER GREATER-THAN NOR LESS-THAN
+227A;N;PRECEDES
+227B;N;SUCCEEDS
+227C;N;PRECEDES OR EQUAL TO
+227D;N;SUCCEEDS OR EQUAL TO
+227E;N;PRECEDES OR EQUIVALENT TO
+227F;N;SUCCEEDS OR EQUIVALENT TO
+2280;N;DOES NOT PRECEDE
+2281;N;DOES NOT SUCCEED
+2282;A;SUBSET OF
+2283;A;SUPERSET OF
+2284;N;NOT A SUBSET OF
+2285;N;NOT A SUPERSET OF
+2286;A;SUBSET OF OR EQUAL TO
+2287;A;SUPERSET OF OR EQUAL TO
+2288;N;NEITHER A SUBSET OF NOR EQUAL TO
+2289;N;NEITHER A SUPERSET OF NOR EQUAL TO
+228A;N;SUBSET OF WITH NOT EQUAL TO
+228B;N;SUPERSET OF WITH NOT EQUAL TO
+228C;N;MULTISET
+228D;N;MULTISET MULTIPLICATION
+228E;N;MULTISET UNION
+228F;N;SQUARE IMAGE OF
+2290;N;SQUARE ORIGINAL OF
+2291;N;SQUARE IMAGE OF OR EQUAL TO
+2292;N;SQUARE ORIGINAL OF OR EQUAL TO
+2293;N;SQUARE CAP
+2294;N;SQUARE CUP
+2295;A;CIRCLED PLUS
+2296;N;CIRCLED MINUS
+2297;N;CIRCLED TIMES
+2298;N;CIRCLED DIVISION SLASH
+2299;A;CIRCLED DOT OPERATOR
+229A;N;CIRCLED RING OPERATOR
+229B;N;CIRCLED ASTERISK OPERATOR
+229C;N;CIRCLED EQUALS
+229D;N;CIRCLED DASH
+229E;N;SQUARED PLUS
+229F;N;SQUARED MINUS
+22A0;N;SQUARED TIMES
+22A1;N;SQUARED DOT OPERATOR
+22A2;N;RIGHT TACK
+22A3;N;LEFT TACK
+22A4;N;DOWN TACK
+22A5;A;UP TACK
+22A6;N;ASSERTION
+22A7;N;MODELS
+22A8;N;TRUE
+22A9;N;FORCES
+22AA;N;TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB;N;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC;N;DOES NOT PROVE
+22AD;N;NOT TRUE
+22AE;N;DOES NOT FORCE
+22AF;N;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0;N;PRECEDES UNDER RELATION
+22B1;N;SUCCEEDS UNDER RELATION
+22B2;N;NORMAL SUBGROUP OF
+22B3;N;CONTAINS AS NORMAL SUBGROUP
+22B4;N;NORMAL SUBGROUP OF OR EQUAL TO
+22B5;N;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6;N;ORIGINAL OF
+22B7;N;IMAGE OF
+22B8;N;MULTIMAP
+22B9;N;HERMITIAN CONJUGATE MATRIX
+22BA;N;INTERCALATE
+22BB;N;XOR
+22BC;N;NAND
+22BD;N;NOR
+22BE;N;RIGHT ANGLE WITH ARC
+22BF;A;RIGHT TRIANGLE
+22C0;N;N-ARY LOGICAL AND
+22C1;N;N-ARY LOGICAL OR
+22C2;N;N-ARY INTERSECTION
+22C3;N;N-ARY UNION
+22C4;N;DIAMOND OPERATOR
+22C5;N;DOT OPERATOR
+22C6;N;STAR OPERATOR
+22C7;N;DIVISION TIMES
+22C8;N;BOWTIE
+22C9;N;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA;N;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB;N;LEFT SEMIDIRECT PRODUCT
+22CC;N;RIGHT SEMIDIRECT PRODUCT
+22CD;N;REVERSED TILDE EQUALS
+22CE;N;CURLY LOGICAL OR
+22CF;N;CURLY LOGICAL AND
+22D0;N;DOUBLE SUBSET
+22D1;N;DOUBLE SUPERSET
+22D2;N;DOUBLE INTERSECTION
+22D3;N;DOUBLE UNION
+22D4;N;PITCHFORK
+22D5;N;EQUAL AND PARALLEL TO
+22D6;N;LESS-THAN WITH DOT
+22D7;N;GREATER-THAN WITH DOT
+22D8;N;VERY MUCH LESS-THAN
+22D9;N;VERY MUCH GREATER-THAN
+22DA;N;LESS-THAN EQUAL TO OR GREATER-THAN
+22DB;N;GREATER-THAN EQUAL TO OR LESS-THAN
+22DC;N;EQUAL TO OR LESS-THAN
+22DD;N;EQUAL TO OR GREATER-THAN
+22DE;N;EQUAL TO OR PRECEDES
+22DF;N;EQUAL TO OR SUCCEEDS
+22E0;N;DOES NOT PRECEDE OR EQUAL
+22E1;N;DOES NOT SUCCEED OR EQUAL
+22E2;N;NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;N;NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4;N;SQUARE IMAGE OF OR NOT EQUAL TO
+22E5;N;SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6;N;LESS-THAN BUT NOT EQUIVALENT TO
+22E7;N;GREATER-THAN BUT NOT EQUIVALENT TO
+22E8;N;PRECEDES BUT NOT EQUIVALENT TO
+22E9;N;SUCCEEDS BUT NOT EQUIVALENT TO
+22EA;N;NOT NORMAL SUBGROUP OF
+22EB;N;DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;N;NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;N;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE;N;VERTICAL ELLIPSIS
+22EF;N;MIDLINE HORIZONTAL ELLIPSIS
+22F0;N;UP RIGHT DIAGONAL ELLIPSIS
+22F1;N;DOWN RIGHT DIAGONAL ELLIPSIS
+2300;N;DIAMETER SIGN
+2301;N;ELECTRIC ARROW
+2302;N;HOUSE
+2303;N;UP ARROWHEAD
+2304;N;DOWN ARROWHEAD
+2305;N;PROJECTIVE
+2306;N;PERSPECTIVE
+2307;N;WAVY LINE
+2308;N;LEFT CEILING
+2309;N;RIGHT CEILING
+230A;N;LEFT FLOOR
+230B;N;RIGHT FLOOR
+230C;N;BOTTOM RIGHT CROP
+230D;N;BOTTOM LEFT CROP
+230E;N;TOP RIGHT CROP
+230F;N;TOP LEFT CROP
+2310;N;REVERSED NOT SIGN
+2311;N;SQUARE LOZENGE
+2312;A;ARC
+2313;N;SEGMENT
+2314;N;SECTOR
+2315;N;TELEPHONE RECORDER
+2316;N;POSITION INDICATOR
+2317;N;VIEWDATA SQUARE
+2318;N;PLACE OF INTEREST SIGN
+2319;N;TURNED NOT SIGN
+231A;N;WATCH
+231B;N;HOURGLASS
+231C;N;TOP LEFT CORNER
+231D;N;TOP RIGHT CORNER
+231E;N;BOTTOM LEFT CORNER
+231F;N;BOTTOM RIGHT CORNER
+2320;N;TOP HALF INTEGRAL
+2321;N;BOTTOM HALF INTEGRAL
+2322;N;FROWN
+2323;N;SMILE
+2324;N;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325;N;OPTION KEY
+2326;N;ERASE TO THE RIGHT
+2327;N;X IN A RECTANGLE BOX
+2328;N;KEYBOARD
+2329;N;LEFT-POINTING ANGLE BRACKET
+232A;N;RIGHT-POINTING ANGLE BRACKET
+232B;N;ERASE TO THE LEFT
+232C;N;BENZENE RING
+232D;N;CYLINDRICITY
+232E;N;ALL AROUND-PROFILE
+232F;N;SYMMETRY
+2330;N;TOTAL RUNOUT
+2331;N;DIMENSION ORIGIN
+2332;N;CONICAL TAPER
+2333;N;SLOPE
+2334;N;COUNTERBORE
+2335;N;COUNTERSINK
+2336;N;APL FUNCTIONAL SYMBOL I-BEAM
+2337;N;APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338;N;APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339;N;APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A;N;APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B;N;APL FUNCTIONAL SYMBOL QUAD JOT
+233C;N;APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D;N;APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E;N;APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F;N;APL FUNCTIONAL SYMBOL SLASH BAR
+2340;N;APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341;N;APL FUNCTIONAL SYMBOL QUAD SLASH
+2342;N;APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343;N;APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344;N;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345;N;APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346;N;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347;N;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348;N;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349;N;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A;N;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B;N;APL FUNCTIONAL SYMBOL DELTA STILE
+234C;N;APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D;N;APL FUNCTIONAL SYMBOL QUAD DELTA
+234E;N;APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F;N;APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350;N;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351;N;APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352;N;APL FUNCTIONAL SYMBOL DEL STILE
+2353;N;APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354;N;APL FUNCTIONAL SYMBOL QUAD DEL
+2355;N;APL FUNCTIONAL SYMBOL UP TACK JOT
+2356;N;APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357;N;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358;N;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359;N;APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A;N;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B;N;APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C;N;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D;N;APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E;N;APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F;N;APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360;N;APL FUNCTIONAL SYMBOL QUAD COLON
+2361;N;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362;N;APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363;N;APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364;N;APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365;N;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366;N;APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367;N;APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368;N;APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369;N;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A;N;APL FUNCTIONAL SYMBOL COMMA BAR
+236B;N;APL FUNCTIONAL SYMBOL DEL TILDE
+236C;N;APL FUNCTIONAL SYMBOL ZILDE
+236D;N;APL FUNCTIONAL SYMBOL STILE TILDE
+236E;N;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F;N;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370;N;APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371;N;APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372;N;APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373;N;APL FUNCTIONAL SYMBOL IOTA
+2374;N;APL FUNCTIONAL SYMBOL RHO
+2375;N;APL FUNCTIONAL SYMBOL OMEGA
+2376;N;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377;N;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378;N;APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379;N;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A;N;APL FUNCTIONAL SYMBOL ALPHA
+237B;N;NOT CHECK MARK
+237D;N;SHOULDERED OPEN BOX
+237E;N;BELL SYMBOL
+237F;N;VERTICAL LINE WITH MIDDLE DOT
+2380;N;INSERTION SYMBOL
+2381;N;CONTINUOUS UNDERLINE SYMBOL
+2382;N;DISCONTINUOUS UNDERLINE SYMBOL
+2383;N;EMPHASIS SYMBOL
+2384;N;COMPOSITION SYMBOL
+2385;N;WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386;N;ENTER SYMBOL
+2387;N;ALTERNATIVE KEY SYMBOL
+2388;N;HELM SYMBOL
+2389;N;CIRCLED HORIZONTAL BAR WITH NOTCH
+238A;N;CIRCLED TRIANGLE DOWN
+238B;N;BROKEN CIRCLE WITH NORTHWEST ARROW
+238C;N;UNDO SYMBOL
+238D;N;MONOSTABLE SYMBOL
+238E;N;HYSTERESIS SYMBOL
+238F;N;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390;N;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391;N;PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392;N;PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393;N;DIRECT CURRENT SYMBOL FORM TWO
+2394;N;SOFTWARE-FUNCTION SYMBOL
+2395;N;APL FUNCTIONAL SYMBOL QUAD
+2396;N;DECIMAL SEPARATOR KEY SYMBOL
+2397;N;PREVIOUS PAGE
+2398;N;NEXT PAGE
+2399;N;PRINT SCREEN SYMBOL
+239A;N;CLEAR SCREEN SYMBOL
+2400;N;SYMBOL FOR NULL
+2401;N;SYMBOL FOR START OF HEADING
+2402;N;SYMBOL FOR START OF TEXT
+2403;N;SYMBOL FOR END OF TEXT
+2404;N;SYMBOL FOR END OF TRANSMISSION
+2405;N;SYMBOL FOR ENQUIRY
+2406;N;SYMBOL FOR ACKNOWLEDGE
+2407;N;SYMBOL FOR BELL
+2408;N;SYMBOL FOR BACKSPACE
+2409;N;SYMBOL FOR HORIZONTAL TABULATION
+240A;N;SYMBOL FOR LINE FEED
+240B;N;SYMBOL FOR VERTICAL TABULATION
+240C;N;SYMBOL FOR FORM FEED
+240D;N;SYMBOL FOR CARRIAGE RETURN
+240E;N;SYMBOL FOR SHIFT OUT
+240F;N;SYMBOL FOR SHIFT IN
+2410;N;SYMBOL FOR DATA LINK ESCAPE
+2411;N;SYMBOL FOR DEVICE CONTROL ONE
+2412;N;SYMBOL FOR DEVICE CONTROL TWO
+2413;N;SYMBOL FOR DEVICE CONTROL THREE
+2414;N;SYMBOL FOR DEVICE CONTROL FOUR
+2415;N;SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416;N;SYMBOL FOR SYNCHRONOUS IDLE
+2417;N;SYMBOL FOR END OF TRANSMISSION BLOCK
+2418;N;SYMBOL FOR CANCEL
+2419;N;SYMBOL FOR END OF MEDIUM
+241A;N;SYMBOL FOR SUBSTITUTE
+241B;N;SYMBOL FOR ESCAPE
+241C;N;SYMBOL FOR FILE SEPARATOR
+241D;N;SYMBOL FOR GROUP SEPARATOR
+241E;N;SYMBOL FOR RECORD SEPARATOR
+241F;N;SYMBOL FOR UNIT SEPARATOR
+2420;N;SYMBOL FOR SPACE
+2421;N;SYMBOL FOR DELETE
+2422;N;BLANK SYMBOL
+2423;N;OPEN BOX
+2424;N;SYMBOL FOR NEWLINE
+2425;N;SYMBOL FOR DELETE FORM TWO
+2426;N;SYMBOL FOR SUBSTITUTE FORM TWO
+2440;N;OCR HOOK
+2441;N;OCR CHAIR
+2442;N;OCR FORK
+2443;N;OCR INVERTED FORK
+2444;N;OCR BELT BUCKLE
+2445;N;OCR BOW TIE
+2446;N;OCR BRANCH BANK IDENTIFICATION
+2447;N;OCR AMOUNT OF CHECK
+2448;N;OCR DASH
+2449;N;OCR CUSTOMER ACCOUNT NUMBER
+244A;N;OCR DOUBLE BACKSLASH
+2460;A;CIRCLED DIGIT ONE
+2461;A;CIRCLED DIGIT TWO
+2462;A;CIRCLED DIGIT THREE
+2463;A;CIRCLED DIGIT FOUR
+2464;A;CIRCLED DIGIT FIVE
+2465;A;CIRCLED DIGIT SIX
+2466;A;CIRCLED DIGIT SEVEN
+2467;A;CIRCLED DIGIT EIGHT
+2468;A;CIRCLED DIGIT NINE
+2469;A;CIRCLED NUMBER TEN
+246A;A;CIRCLED NUMBER ELEVEN
+246B;A;CIRCLED NUMBER TWELVE
+246C;A;CIRCLED NUMBER THIRTEEN
+246D;A;CIRCLED NUMBER FOURTEEN
+246E;A;CIRCLED NUMBER FIFTEEN
+246F;A;CIRCLED NUMBER SIXTEEN
+2470;A;CIRCLED NUMBER SEVENTEEN
+2471;A;CIRCLED NUMBER EIGHTEEN
+2472;A;CIRCLED NUMBER NINETEEN
+2473;A;CIRCLED NUMBER TWENTY
+2474;A;PARENTHESIZED DIGIT ONE
+2475;A;PARENTHESIZED DIGIT TWO
+2476;A;PARENTHESIZED DIGIT THREE
+2477;A;PARENTHESIZED DIGIT FOUR
+2478;A;PARENTHESIZED DIGIT FIVE
+2479;A;PARENTHESIZED DIGIT SIX
+247A;A;PARENTHESIZED DIGIT SEVEN
+247B;A;PARENTHESIZED DIGIT EIGHT
+247C;A;PARENTHESIZED DIGIT NINE
+247D;A;PARENTHESIZED NUMBER TEN
+247E;A;PARENTHESIZED NUMBER ELEVEN
+247F;A;PARENTHESIZED NUMBER TWELVE
+2480;A;PARENTHESIZED NUMBER THIRTEEN
+2481;A;PARENTHESIZED NUMBER FOURTEEN
+2482;A;PARENTHESIZED NUMBER FIFTEEN
+2483;A;PARENTHESIZED NUMBER SIXTEEN
+2484;A;PARENTHESIZED NUMBER SEVENTEEN
+2485;A;PARENTHESIZED NUMBER EIGHTEEN
+2486;A;PARENTHESIZED NUMBER NINETEEN
+2487;A;PARENTHESIZED NUMBER TWENTY
+2488;A;DIGIT ONE FULL STOP
+2489;A;DIGIT TWO FULL STOP
+248A;A;DIGIT THREE FULL STOP
+248B;A;DIGIT FOUR FULL STOP
+248C;A;DIGIT FIVE FULL STOP
+248D;A;DIGIT SIX FULL STOP
+248E;A;DIGIT SEVEN FULL STOP
+248F;A;DIGIT EIGHT FULL STOP
+2490;A;DIGIT NINE FULL STOP
+2491;A;NUMBER TEN FULL STOP
+2492;A;NUMBER ELEVEN FULL STOP
+2493;A;NUMBER TWELVE FULL STOP
+2494;A;NUMBER THIRTEEN FULL STOP
+2495;A;NUMBER FOURTEEN FULL STOP
+2496;A;NUMBER FIFTEEN FULL STOP
+2497;A;NUMBER SIXTEEN FULL STOP
+2498;A;NUMBER SEVENTEEN FULL STOP
+2499;A;NUMBER EIGHTEEN FULL STOP
+249A;A;NUMBER NINETEEN FULL STOP
+249B;A;NUMBER TWENTY FULL STOP
+249C;A;PARENTHESIZED LATIN SMALL LETTER A
+249D;A;PARENTHESIZED LATIN SMALL LETTER B
+249E;A;PARENTHESIZED LATIN SMALL LETTER C
+249F;A;PARENTHESIZED LATIN SMALL LETTER D
+24A0;A;PARENTHESIZED LATIN SMALL LETTER E
+24A1;A;PARENTHESIZED LATIN SMALL LETTER F
+24A2;A;PARENTHESIZED LATIN SMALL LETTER G
+24A3;A;PARENTHESIZED LATIN SMALL LETTER H
+24A4;A;PARENTHESIZED LATIN SMALL LETTER I
+24A5;A;PARENTHESIZED LATIN SMALL LETTER J
+24A6;A;PARENTHESIZED LATIN SMALL LETTER K
+24A7;A;PARENTHESIZED LATIN SMALL LETTER L
+24A8;A;PARENTHESIZED LATIN SMALL LETTER M
+24A9;A;PARENTHESIZED LATIN SMALL LETTER N
+24AA;A;PARENTHESIZED LATIN SMALL LETTER O
+24AB;A;PARENTHESIZED LATIN SMALL LETTER P
+24AC;A;PARENTHESIZED LATIN SMALL LETTER Q
+24AD;A;PARENTHESIZED LATIN SMALL LETTER R
+24AE;A;PARENTHESIZED LATIN SMALL LETTER S
+24AF;A;PARENTHESIZED LATIN SMALL LETTER T
+24B0;A;PARENTHESIZED LATIN SMALL LETTER U
+24B1;A;PARENTHESIZED LATIN SMALL LETTER V
+24B2;A;PARENTHESIZED LATIN SMALL LETTER W
+24B3;A;PARENTHESIZED LATIN SMALL LETTER X
+24B4;A;PARENTHESIZED LATIN SMALL LETTER Y
+24B5;A;PARENTHESIZED LATIN SMALL LETTER Z
+24B6;A;CIRCLED LATIN CAPITAL LETTER A
+24B7;A;CIRCLED LATIN CAPITAL LETTER B
+24B8;A;CIRCLED LATIN CAPITAL LETTER C
+24B9;A;CIRCLED LATIN CAPITAL LETTER D
+24BA;A;CIRCLED LATIN CAPITAL LETTER E
+24BB;A;CIRCLED LATIN CAPITAL LETTER F
+24BC;A;CIRCLED LATIN CAPITAL LETTER G
+24BD;A;CIRCLED LATIN CAPITAL LETTER H
+24BE;A;CIRCLED LATIN CAPITAL LETTER I
+24BF;A;CIRCLED LATIN CAPITAL LETTER J
+24C0;N;CIRCLED LATIN CAPITAL LETTER K
+24C1;N;CIRCLED LATIN CAPITAL LETTER L
+24C2;N;CIRCLED LATIN CAPITAL LETTER M
+24C3;N;CIRCLED LATIN CAPITAL LETTER N
+24C4;N;CIRCLED LATIN CAPITAL LETTER O
+24C5;N;CIRCLED LATIN CAPITAL LETTER P
+24C6;N;CIRCLED LATIN CAPITAL LETTER Q
+24C7;N;CIRCLED LATIN CAPITAL LETTER R
+24C8;N;CIRCLED LATIN CAPITAL LETTER S
+24C9;N;CIRCLED LATIN CAPITAL LETTER T
+24CA;N;CIRCLED LATIN CAPITAL LETTER U
+24CB;N;CIRCLED LATIN CAPITAL LETTER V
+24CC;N;CIRCLED LATIN CAPITAL LETTER W
+24CD;N;CIRCLED LATIN CAPITAL LETTER X
+24CE;N;CIRCLED LATIN CAPITAL LETTER Y
+24CF;N;CIRCLED LATIN CAPITAL LETTER Z
+24D0;A;CIRCLED LATIN SMALL LETTER A
+24D1;A;CIRCLED LATIN SMALL LETTER B
+24D2;A;CIRCLED LATIN SMALL LETTER C
+24D3;A;CIRCLED LATIN SMALL LETTER D
+24D4;A;CIRCLED LATIN SMALL LETTER E
+24D5;A;CIRCLED LATIN SMALL LETTER F
+24D6;A;CIRCLED LATIN SMALL LETTER G
+24D7;A;CIRCLED LATIN SMALL LETTER H
+24D8;A;CIRCLED LATIN SMALL LETTER I
+24D9;A;CIRCLED LATIN SMALL LETTER J
+24DA;A;CIRCLED LATIN SMALL LETTER K
+24DB;A;CIRCLED LATIN SMALL LETTER L
+24DC;A;CIRCLED LATIN SMALL LETTER M
+24DD;A;CIRCLED LATIN SMALL LETTER N
+24DE;A;CIRCLED LATIN SMALL LETTER O
+24DF;A;CIRCLED LATIN SMALL LETTER P
+24E0;A;CIRCLED LATIN SMALL LETTER Q
+24E1;A;CIRCLED LATIN SMALL LETTER R
+24E2;A;CIRCLED LATIN SMALL LETTER S
+24E3;A;CIRCLED LATIN SMALL LETTER T
+24E4;A;CIRCLED LATIN SMALL LETTER U
+24E5;A;CIRCLED LATIN SMALL LETTER V
+24E6;A;CIRCLED LATIN SMALL LETTER W
+24E7;A;CIRCLED LATIN SMALL LETTER X
+24E8;A;CIRCLED LATIN SMALL LETTER Y
+24E9;A;CIRCLED LATIN SMALL LETTER Z
+24EA;N;CIRCLED DIGIT ZERO
+2500;A;BOX DRAWINGS LIGHT HORIZONTAL
+2501;A;BOX DRAWINGS HEAVY HORIZONTAL
+2502;A;BOX DRAWINGS LIGHT VERTICAL
+2503;A;BOX DRAWINGS HEAVY VERTICAL
+2504;A;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505;A;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506;A;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507;A;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508;A;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509;A;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A;A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B;A;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C;A;BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D;A;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E;A;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F;A;BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510;A;BOX DRAWINGS LIGHT DOWN AND LEFT
+2511;A;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512;A;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513;A;BOX DRAWINGS HEAVY DOWN AND LEFT
+2514;A;BOX DRAWINGS LIGHT UP AND RIGHT
+2515;A;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516;A;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517;A;BOX DRAWINGS HEAVY UP AND RIGHT
+2518;A;BOX DRAWINGS LIGHT UP AND LEFT
+2519;A;BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A;A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B;A;BOX DRAWINGS HEAVY UP AND LEFT
+251C;A;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D;A;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E;A;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F;A;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520;A;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521;A;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522;A;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523;A;BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524;A;BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525;A;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526;A;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527;A;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528;A;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529;A;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A;A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B;A;BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C;A;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D;A;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E;A;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F;A;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530;A;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531;A;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532;A;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533;A;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534;A;BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535;A;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536;A;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537;A;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538;A;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539;A;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A;A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B;A;BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C;A;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D;A;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E;A;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F;A;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540;A;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541;A;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542;A;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543;A;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544;A;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545;A;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546;A;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547;A;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548;A;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549;A;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A;A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B;A;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C;N;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D;N;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E;N;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F;N;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550;A;BOX DRAWINGS DOUBLE HORIZONTAL
+2551;A;BOX DRAWINGS DOUBLE VERTICAL
+2552;A;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;A;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554;A;BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555;A;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556;A;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557;A;BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558;A;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559;A;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A;A;BOX DRAWINGS DOUBLE UP AND RIGHT
+255B;A;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C;A;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D;A;BOX DRAWINGS DOUBLE UP AND LEFT
+255E;A;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;A;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560;A;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561;A;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;A;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563;A;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564;A;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;A;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566;A;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567;A;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;A;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569;A;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A;A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B;A;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C;A;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D;A;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E;A;BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F;A;BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570;A;BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571;A;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572;A;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573;A;BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574;A;BOX DRAWINGS LIGHT LEFT
+2575;N;BOX DRAWINGS LIGHT UP
+2576;N;BOX DRAWINGS LIGHT RIGHT
+2577;N;BOX DRAWINGS LIGHT DOWN
+2578;N;BOX DRAWINGS HEAVY LEFT
+2579;N;BOX DRAWINGS HEAVY UP
+257A;N;BOX DRAWINGS HEAVY RIGHT
+257B;N;BOX DRAWINGS HEAVY DOWN
+257C;N;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D;N;BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E;N;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F;N;BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580;A;UPPER HALF BLOCK
+2581;A;LOWER ONE EIGHTH BLOCK
+2582;A;LOWER ONE QUARTER BLOCK
+2583;A;LOWER THREE EIGHTHS BLOCK
+2584;A;LOWER HALF BLOCK
+2585;A;LOWER FIVE EIGHTHS BLOCK
+2586;A;LOWER THREE QUARTERS BLOCK
+2587;A;LOWER SEVEN EIGHTHS BLOCK
+2588;A;FULL BLOCK
+2589;A;LEFT SEVEN EIGHTHS BLOCK
+258A;A;LEFT THREE QUARTERS BLOCK
+258B;A;LEFT FIVE EIGHTHS BLOCK
+258C;A;LEFT HALF BLOCK
+258D;A;LEFT THREE EIGHTHS BLOCK
+258E;A;LEFT ONE QUARTER BLOCK
+258F;A;LEFT ONE EIGHTH BLOCK
+2590;N;RIGHT HALF BLOCK
+2591;N;LIGHT SHADE
+2592;A;MEDIUM SHADE
+2593;A;DARK SHADE
+2594;A;UPPER ONE EIGHTH BLOCK
+2595;A;RIGHT ONE EIGHTH BLOCK
+25A0;A;BLACK SQUARE
+25A1;A;WHITE SQUARE
+25A2;N;WHITE SQUARE WITH ROUNDED CORNERS
+25A3;A;WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4;A;SQUARE WITH HORIZONTAL FILL
+25A5;A;SQUARE WITH VERTICAL FILL
+25A6;A;SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7;A;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8;A;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9;A;SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA;N;BLACK SMALL SQUARE
+25AB;N;WHITE SMALL SQUARE
+25AC;N;BLACK RECTANGLE
+25AD;N;WHITE RECTANGLE
+25AE;N;BLACK VERTICAL RECTANGLE
+25AF;N;WHITE VERTICAL RECTANGLE
+25B0;N;BLACK PARALLELOGRAM
+25B1;N;WHITE PARALLELOGRAM
+25B2;A;BLACK UP-POINTING TRIANGLE
+25B3;A;WHITE UP-POINTING TRIANGLE
+25B4;N;BLACK UP-POINTING SMALL TRIANGLE
+25B5;N;WHITE UP-POINTING SMALL TRIANGLE
+25B6;A;BLACK RIGHT-POINTING TRIANGLE
+25B7;A;WHITE RIGHT-POINTING TRIANGLE
+25B8;N;BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9;N;WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA;N;BLACK RIGHT-POINTING POINTER
+25BB;N;WHITE RIGHT-POINTING POINTER
+25BC;A;BLACK DOWN-POINTING TRIANGLE
+25BD;A;WHITE DOWN-POINTING TRIANGLE
+25BE;N;BLACK DOWN-POINTING SMALL TRIANGLE
+25BF;N;WHITE DOWN-POINTING SMALL TRIANGLE
+25C0;A;BLACK LEFT-POINTING TRIANGLE
+25C1;A;WHITE LEFT-POINTING TRIANGLE
+25C2;N;BLACK LEFT-POINTING SMALL TRIANGLE
+25C3;N;WHITE LEFT-POINTING SMALL TRIANGLE
+25C4;N;BLACK LEFT-POINTING POINTER
+25C5;N;WHITE LEFT-POINTING POINTER
+25C6;A;BLACK DIAMOND
+25C7;A;WHITE DIAMOND
+25C8;A;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9;N;FISHEYE
+25CA;N;LOZENGE
+25CB;A;WHITE CIRCLE
+25CC;N;DOTTED CIRCLE
+25CD;N;CIRCLE WITH VERTICAL FILL
+25CE;A;BULLSEYE
+25CF;A;BLACK CIRCLE
+25D0;A;CIRCLE WITH LEFT HALF BLACK
+25D1;A;CIRCLE WITH RIGHT HALF BLACK
+25D2;N;CIRCLE WITH LOWER HALF BLACK
+25D3;N;CIRCLE WITH UPPER HALF BLACK
+25D4;N;CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5;N;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6;N;LEFT HALF BLACK CIRCLE
+25D7;N;RIGHT HALF BLACK CIRCLE
+25D8;N;INVERSE BULLET
+25D9;N;INVERSE WHITE CIRCLE
+25DA;N;UPPER HALF INVERSE WHITE CIRCLE
+25DB;N;LOWER HALF INVERSE WHITE CIRCLE
+25DC;N;UPPER LEFT QUADRANT CIRCULAR ARC
+25DD;N;UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE;N;LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF;N;LOWER LEFT QUADRANT CIRCULAR ARC
+25E0;N;UPPER HALF CIRCLE
+25E1;N;LOWER HALF CIRCLE
+25E2;A;BLACK LOWER RIGHT TRIANGLE
+25E3;A;BLACK LOWER LEFT TRIANGLE
+25E4;A;BLACK UPPER LEFT TRIANGLE
+25E5;A;BLACK UPPER RIGHT TRIANGLE
+25E6;N;WHITE BULLET
+25E7;N;SQUARE WITH LEFT HALF BLACK
+25E8;N;SQUARE WITH RIGHT HALF BLACK
+25E9;N;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA;N;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB;N;WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC;N;WHITE UP-POINTING TRIANGLE WITH DOT
+25ED;N;UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE;N;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF;A;LARGE CIRCLE
+25F0;N;WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1;N;WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2;N;WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3;N;WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4;N;WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5;N;WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6;N;WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7;N;WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600;N;BLACK SUN WITH RAYS
+2601;N;CLOUD
+2602;N;UMBRELLA
+2603;N;SNOWMAN
+2604;N;COMET
+2605;A;BLACK STAR
+2606;A;WHITE STAR
+2607;N;LIGHTNING
+2608;N;THUNDERSTORM
+2609;A;SUN
+260A;N;ASCENDING NODE
+260B;N;DESCENDING NODE
+260C;N;CONJUNCTION
+260D;N;OPPOSITION
+260E;A;BLACK TELEPHONE
+260F;A;WHITE TELEPHONE
+2610;N;BALLOT BOX
+2611;N;BALLOT BOX WITH CHECK
+2612;N;BALLOT BOX WITH X
+2613;N;SALTIRE
+2619;N;REVERSED ROTATED FLORAL HEART BULLET
+261A;N;BLACK LEFT POINTING INDEX
+261B;N;BLACK RIGHT POINTING INDEX
+261C;A;WHITE LEFT POINTING INDEX
+261D;N;WHITE UP POINTING INDEX
+261E;A;WHITE RIGHT POINTING INDEX
+261F;N;WHITE DOWN POINTING INDEX
+2620;N;SKULL AND CROSSBONES
+2621;N;CAUTION SIGN
+2622;N;RADIOACTIVE SIGN
+2623;N;BIOHAZARD SIGN
+2624;N;CADUCEUS
+2625;N;ANKH
+2626;N;ORTHODOX CROSS
+2627;N;CHI RHO
+2628;N;CROSS OF LORRAINE
+2629;N;CROSS OF JERUSALEM
+262A;N;STAR AND CRESCENT
+262B;N;FARSI SYMBOL
+262C;N;ADI SHAKTI
+262D;N;HAMMER AND SICKLE
+262E;N;PEACE SYMBOL
+262F;N;YIN YANG
+2630;N;TRIGRAM FOR HEAVEN
+2631;N;TRIGRAM FOR LAKE
+2632;N;TRIGRAM FOR FIRE
+2633;N;TRIGRAM FOR THUNDER
+2634;N;TRIGRAM FOR WIND
+2635;N;TRIGRAM FOR WATER
+2636;N;TRIGRAM FOR MOUNTAIN
+2637;N;TRIGRAM FOR EARTH
+2638;N;WHEEL OF DHARMA
+2639;N;WHITE FROWNING FACE
+263A;N;WHITE SMILING FACE
+263B;N;BLACK SMILING FACE
+263C;N;WHITE SUN WITH RAYS
+263D;N;FIRST QUARTER MOON
+263E;N;LAST QUARTER MOON
+263F;N;MERCURY
+2640;A;FEMALE SIGN
+2641;N;EARTH
+2642;A;MALE SIGN
+2643;N;JUPITER
+2644;N;SATURN
+2645;N;URANUS
+2646;N;NEPTUNE
+2647;N;PLUTO
+2648;N;ARIES
+2649;N;TAURUS
+264A;N;GEMINI
+264B;N;CANCER
+264C;N;LEO
+264D;N;VIRGO
+264E;N;LIBRA
+264F;N;SCORPIUS
+2650;N;SAGITTARIUS
+2651;N;CAPRICORN
+2652;N;AQUARIUS
+2653;N;PISCES
+2654;N;WHITE CHESS KING
+2655;N;WHITE CHESS QUEEN
+2656;N;WHITE CHESS ROOK
+2657;N;WHITE CHESS BISHOP
+2658;N;WHITE CHESS KNIGHT
+2659;N;WHITE CHESS PAWN
+265A;N;BLACK CHESS KING
+265B;N;BLACK CHESS QUEEN
+265C;N;BLACK CHESS ROOK
+265D;N;BLACK CHESS BISHOP
+265E;N;BLACK CHESS KNIGHT
+265F;N;BLACK CHESS PAWN
+2660;A;BLACK SPADE SUIT
+2661;A;WHITE HEART SUIT
+2662;N;WHITE DIAMOND SUIT
+2663;A;BLACK CLUB SUIT
+2664;A;WHITE SPADE SUIT
+2665;A;BLACK HEART SUIT
+2666;N;BLACK DIAMOND SUIT
+2667;A;WHITE CLUB SUIT
+2668;A;HOT SPRINGS
+2669;A;QUARTER NOTE
+266A;A;EIGHTH NOTE
+266B;N;BEAMED EIGHTH NOTES
+266C;A;BEAMED SIXTEENTH NOTES
+266D;A;MUSIC FLAT SIGN
+266E;N;MUSIC NATURAL SIGN
+266F;A;MUSIC SHARP SIGN
+2670;N;WEST SYRIAC CROSS
+2671;N;EAST SYRIAC CROSS
+2701;N;UPPER BLADE SCISSORS
+2702;N;BLACK SCISSORS
+2703;N;LOWER BLADE SCISSORS
+2704;N;WHITE SCISSORS
+2706;N;TELEPHONE LOCATION SIGN
+2707;N;TAPE DRIVE
+2708;N;AIRPLANE
+2709;N;ENVELOPE
+270C;N;VICTORY HAND
+270D;N;WRITING HAND
+270E;N;LOWER RIGHT PENCIL
+270F;N;PENCIL
+2710;N;UPPER RIGHT PENCIL
+2711;N;WHITE NIB
+2712;N;BLACK NIB
+2713;N;CHECK MARK
+2714;N;HEAVY CHECK MARK
+2715;N;MULTIPLICATION X
+2716;N;HEAVY MULTIPLICATION X
+2717;N;BALLOT X
+2718;N;HEAVY BALLOT X
+2719;N;OUTLINED GREEK CROSS
+271A;N;HEAVY GREEK CROSS
+271B;N;OPEN CENTRE CROSS
+271C;N;HEAVY OPEN CENTRE CROSS
+271D;N;LATIN CROSS
+271E;N;SHADOWED WHITE LATIN CROSS
+271F;N;OUTLINED LATIN CROSS
+2720;N;MALTESE CROSS
+2721;N;STAR OF DAVID
+2722;N;FOUR TEARDROP-SPOKED ASTERISK
+2723;N;FOUR BALLOON-SPOKED ASTERISK
+2724;N;HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725;N;FOUR CLUB-SPOKED ASTERISK
+2726;N;BLACK FOUR POINTED STAR
+2727;N;WHITE FOUR POINTED STAR
+2729;N;STRESS OUTLINED WHITE STAR
+272A;N;CIRCLED WHITE STAR
+272B;N;OPEN CENTRE BLACK STAR
+272C;N;BLACK CENTRE WHITE STAR
+272D;N;OUTLINED BLACK STAR
+272E;N;HEAVY OUTLINED BLACK STAR
+272F;N;PINWHEEL STAR
+2730;N;SHADOWED WHITE STAR
+2731;N;HEAVY ASTERISK
+2732;N;OPEN CENTRE ASTERISK
+2733;N;EIGHT SPOKED ASTERISK
+2734;N;EIGHT POINTED BLACK STAR
+2735;N;EIGHT POINTED PINWHEEL STAR
+2736;N;SIX POINTED BLACK STAR
+2737;N;EIGHT POINTED RECTILINEAR BLACK STAR
+2738;N;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739;N;TWELVE POINTED BLACK STAR
+273A;N;SIXTEEN POINTED ASTERISK
+273B;N;TEARDROP-SPOKED ASTERISK
+273C;N;OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D;N;HEAVY TEARDROP-SPOKED ASTERISK
+273E;N;SIX PETALLED BLACK AND WHITE FLORETTE
+273F;N;BLACK FLORETTE
+2740;N;WHITE FLORETTE
+2741;N;EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742;N;CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743;N;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744;N;SNOWFLAKE
+2745;N;TIGHT TRIFOLIATE SNOWFLAKE
+2746;N;HEAVY CHEVRON SNOWFLAKE
+2747;N;SPARKLE
+2748;N;HEAVY SPARKLE
+2749;N;BALLOON-SPOKED ASTERISK
+274A;N;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B;N;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D;N;SHADOWED WHITE CIRCLE
+274F;N;LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750;N;UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751;N;LOWER RIGHT SHADOWED WHITE SQUARE
+2752;N;UPPER RIGHT SHADOWED WHITE SQUARE
+2756;N;BLACK DIAMOND MINUS WHITE X
+2758;N;LIGHT VERTICAL BAR
+2759;N;MEDIUM VERTICAL BAR
+275A;N;HEAVY VERTICAL BAR
+275B;N;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C;N;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D;N;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E;N;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761;N;CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762;N;HEAVY EXCLAMATION MARK ORNAMENT
+2763;N;HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764;N;HEAVY BLACK HEART
+2765;N;ROTATED HEAVY BLACK HEART BULLET
+2766;N;FLORAL HEART
+2767;N;ROTATED FLORAL HEART BULLET
+2776;N;DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777;N;DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778;N;DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779;N;DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277A;N;DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277B;N;DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277C;N;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277D;N;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277E;N;DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277F;N;DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780;N;DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781;N;DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782;N;DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783;N;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784;N;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785;N;DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786;N;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787;N;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788;N;DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789;N;DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278A;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278B;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278C;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278D;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278E;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278F;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794;N;HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798;N;HEAVY SOUTH EAST ARROW
+2799;N;HEAVY RIGHTWARDS ARROW
+279A;N;HEAVY NORTH EAST ARROW
+279B;N;DRAFTING POINT RIGHTWARDS ARROW
+279C;N;HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D;N;TRIANGLE-HEADED RIGHTWARDS ARROW
+279E;N;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F;N;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0;N;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1;N;BLACK RIGHTWARDS ARROW
+27A2;N;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3;N;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4;N;BLACK RIGHTWARDS ARROWHEAD
+27A5;N;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6;N;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7;N;SQUAT BLACK RIGHTWARDS ARROW
+27A8;N;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9;N;RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA;N;LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB;N;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC;N;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2;N;CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3;N;WHITE-FEATHERED RIGHTWARDS ARROW
+27B4;N;BLACK-FEATHERED SOUTH EAST ARROW
+27B5;N;BLACK-FEATHERED RIGHTWARDS ARROW
+27B6;N;BLACK-FEATHERED NORTH EAST ARROW
+27B7;N;HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8;N;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9;N;HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA;N;TEARDROP-BARBED RIGHTWARDS ARROW
+27BB;N;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC;N;WEDGE-TAILED RIGHTWARDS ARROW
+27BD;N;HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE;N;OPEN-OUTLINED RIGHTWARDS ARROW
+2800;N;BRAILLE PATTERN BLANK
+2801;N;BRAILLE PATTERN DOTS-1
+2802;N;BRAILLE PATTERN DOTS-2
+2803;N;BRAILLE PATTERN DOTS-12
+2804;N;BRAILLE PATTERN DOTS-3
+2805;N;BRAILLE PATTERN DOTS-13
+2806;N;BRAILLE PATTERN DOTS-23
+2807;N;BRAILLE PATTERN DOTS-123
+2808;N;BRAILLE PATTERN DOTS-4
+2809;N;BRAILLE PATTERN DOTS-14
+280A;N;BRAILLE PATTERN DOTS-24
+280B;N;BRAILLE PATTERN DOTS-124
+280C;N;BRAILLE PATTERN DOTS-34
+280D;N;BRAILLE PATTERN DOTS-134
+280E;N;BRAILLE PATTERN DOTS-234
+280F;N;BRAILLE PATTERN DOTS-1234
+2810;N;BRAILLE PATTERN DOTS-5
+2811;N;BRAILLE PATTERN DOTS-15
+2812;N;BRAILLE PATTERN DOTS-25
+2813;N;BRAILLE PATTERN DOTS-125
+2814;N;BRAILLE PATTERN DOTS-35
+2815;N;BRAILLE PATTERN DOTS-135
+2816;N;BRAILLE PATTERN DOTS-235
+2817;N;BRAILLE PATTERN DOTS-1235
+2818;N;BRAILLE PATTERN DOTS-45
+2819;N;BRAILLE PATTERN DOTS-145
+281A;N;BRAILLE PATTERN DOTS-245
+281B;N;BRAILLE PATTERN DOTS-1245
+281C;N;BRAILLE PATTERN DOTS-345
+281D;N;BRAILLE PATTERN DOTS-1345
+281E;N;BRAILLE PATTERN DOTS-2345
+281F;N;BRAILLE PATTERN DOTS-12345
+2820;N;BRAILLE PATTERN DOTS-6
+2821;N;BRAILLE PATTERN DOTS-16
+2822;N;BRAILLE PATTERN DOTS-26
+2823;N;BRAILLE PATTERN DOTS-126
+2824;N;BRAILLE PATTERN DOTS-36
+2825;N;BRAILLE PATTERN DOTS-136
+2826;N;BRAILLE PATTERN DOTS-236
+2827;N;BRAILLE PATTERN DOTS-1236
+2828;N;BRAILLE PATTERN DOTS-46
+2829;N;BRAILLE PATTERN DOTS-146
+282A;N;BRAILLE PATTERN DOTS-246
+282B;N;BRAILLE PATTERN DOTS-1246
+282C;N;BRAILLE PATTERN DOTS-346
+282D;N;BRAILLE PATTERN DOTS-1346
+282E;N;BRAILLE PATTERN DOTS-2346
+282F;N;BRAILLE PATTERN DOTS-12346
+2830;N;BRAILLE PATTERN DOTS-56
+2831;N;BRAILLE PATTERN DOTS-156
+2832;N;BRAILLE PATTERN DOTS-256
+2833;N;BRAILLE PATTERN DOTS-1256
+2834;N;BRAILLE PATTERN DOTS-356
+2835;N;BRAILLE PATTERN DOTS-1356
+2836;N;BRAILLE PATTERN DOTS-2356
+2837;N;BRAILLE PATTERN DOTS-12356
+2838;N;BRAILLE PATTERN DOTS-456
+2839;N;BRAILLE PATTERN DOTS-1456
+283A;N;BRAILLE PATTERN DOTS-2456
+283B;N;BRAILLE PATTERN DOTS-12456
+283C;N;BRAILLE PATTERN DOTS-3456
+283D;N;BRAILLE PATTERN DOTS-13456
+283E;N;BRAILLE PATTERN DOTS-23456
+283F;N;BRAILLE PATTERN DOTS-123456
+2840;N;BRAILLE PATTERN DOTS-7
+2841;N;BRAILLE PATTERN DOTS-17
+2842;N;BRAILLE PATTERN DOTS-27
+2843;N;BRAILLE PATTERN DOTS-127
+2844;N;BRAILLE PATTERN DOTS-37
+2845;N;BRAILLE PATTERN DOTS-137
+2846;N;BRAILLE PATTERN DOTS-237
+2847;N;BRAILLE PATTERN DOTS-1237
+2848;N;BRAILLE PATTERN DOTS-47
+2849;N;BRAILLE PATTERN DOTS-147
+284A;N;BRAILLE PATTERN DOTS-247
+284B;N;BRAILLE PATTERN DOTS-1247
+284C;N;BRAILLE PATTERN DOTS-347
+284D;N;BRAILLE PATTERN DOTS-1347
+284E;N;BRAILLE PATTERN DOTS-2347
+284F;N;BRAILLE PATTERN DOTS-12347
+2850;N;BRAILLE PATTERN DOTS-57
+2851;N;BRAILLE PATTERN DOTS-157
+2852;N;BRAILLE PATTERN DOTS-257
+2853;N;BRAILLE PATTERN DOTS-1257
+2854;N;BRAILLE PATTERN DOTS-357
+2855;N;BRAILLE PATTERN DOTS-1357
+2856;N;BRAILLE PATTERN DOTS-2357
+2857;N;BRAILLE PATTERN DOTS-12357
+2858;N;BRAILLE PATTERN DOTS-457
+2859;N;BRAILLE PATTERN DOTS-1457
+285A;N;BRAILLE PATTERN DOTS-2457
+285B;N;BRAILLE PATTERN DOTS-12457
+285C;N;BRAILLE PATTERN DOTS-3457
+285D;N;BRAILLE PATTERN DOTS-13457
+285E;N;BRAILLE PATTERN DOTS-23457
+285F;N;BRAILLE PATTERN DOTS-123457
+2860;N;BRAILLE PATTERN DOTS-67
+2861;N;BRAILLE PATTERN DOTS-167
+2862;N;BRAILLE PATTERN DOTS-267
+2863;N;BRAILLE PATTERN DOTS-1267
+2864;N;BRAILLE PATTERN DOTS-367
+2865;N;BRAILLE PATTERN DOTS-1367
+2866;N;BRAILLE PATTERN DOTS-2367
+2867;N;BRAILLE PATTERN DOTS-12367
+2868;N;BRAILLE PATTERN DOTS-467
+2869;N;BRAILLE PATTERN DOTS-1467
+286A;N;BRAILLE PATTERN DOTS-2467
+286B;N;BRAILLE PATTERN DOTS-12467
+286C;N;BRAILLE PATTERN DOTS-3467
+286D;N;BRAILLE PATTERN DOTS-13467
+286E;N;BRAILLE PATTERN DOTS-23467
+286F;N;BRAILLE PATTERN DOTS-123467
+2870;N;BRAILLE PATTERN DOTS-567
+2871;N;BRAILLE PATTERN DOTS-1567
+2872;N;BRAILLE PATTERN DOTS-2567
+2873;N;BRAILLE PATTERN DOTS-12567
+2874;N;BRAILLE PATTERN DOTS-3567
+2875;N;BRAILLE PATTERN DOTS-13567
+2876;N;BRAILLE PATTERN DOTS-23567
+2877;N;BRAILLE PATTERN DOTS-123567
+2878;N;BRAILLE PATTERN DOTS-4567
+2879;N;BRAILLE PATTERN DOTS-14567
+287A;N;BRAILLE PATTERN DOTS-24567
+287B;N;BRAILLE PATTERN DOTS-124567
+287C;N;BRAILLE PATTERN DOTS-34567
+287D;N;BRAILLE PATTERN DOTS-134567
+287E;N;BRAILLE PATTERN DOTS-234567
+287F;N;BRAILLE PATTERN DOTS-1234567
+2880;N;BRAILLE PATTERN DOTS-8
+2881;N;BRAILLE PATTERN DOTS-18
+2882;N;BRAILLE PATTERN DOTS-28
+2883;N;BRAILLE PATTERN DOTS-128
+2884;N;BRAILLE PATTERN DOTS-38
+2885;N;BRAILLE PATTERN DOTS-138
+2886;N;BRAILLE PATTERN DOTS-238
+2887;N;BRAILLE PATTERN DOTS-1238
+2888;N;BRAILLE PATTERN DOTS-48
+2889;N;BRAILLE PATTERN DOTS-148
+288A;N;BRAILLE PATTERN DOTS-248
+288B;N;BRAILLE PATTERN DOTS-1248
+288C;N;BRAILLE PATTERN DOTS-348
+288D;N;BRAILLE PATTERN DOTS-1348
+288E;N;BRAILLE PATTERN DOTS-2348
+288F;N;BRAILLE PATTERN DOTS-12348
+2890;N;BRAILLE PATTERN DOTS-58
+2891;N;BRAILLE PATTERN DOTS-158
+2892;N;BRAILLE PATTERN DOTS-258
+2893;N;BRAILLE PATTERN DOTS-1258
+2894;N;BRAILLE PATTERN DOTS-358
+2895;N;BRAILLE PATTERN DOTS-1358
+2896;N;BRAILLE PATTERN DOTS-2358
+2897;N;BRAILLE PATTERN DOTS-12358
+2898;N;BRAILLE PATTERN DOTS-458
+2899;N;BRAILLE PATTERN DOTS-1458
+289A;N;BRAILLE PATTERN DOTS-2458
+289B;N;BRAILLE PATTERN DOTS-12458
+289C;N;BRAILLE PATTERN DOTS-3458
+289D;N;BRAILLE PATTERN DOTS-13458
+289E;N;BRAILLE PATTERN DOTS-23458
+289F;N;BRAILLE PATTERN DOTS-123458
+28A0;N;BRAILLE PATTERN DOTS-68
+28A1;N;BRAILLE PATTERN DOTS-168
+28A2;N;BRAILLE PATTERN DOTS-268
+28A3;N;BRAILLE PATTERN DOTS-1268
+28A4;N;BRAILLE PATTERN DOTS-368
+28A5;N;BRAILLE PATTERN DOTS-1368
+28A6;N;BRAILLE PATTERN DOTS-2368
+28A7;N;BRAILLE PATTERN DOTS-12368
+28A8;N;BRAILLE PATTERN DOTS-468
+28A9;N;BRAILLE PATTERN DOTS-1468
+28AA;N;BRAILLE PATTERN DOTS-2468
+28AB;N;BRAILLE PATTERN DOTS-12468
+28AC;N;BRAILLE PATTERN DOTS-3468
+28AD;N;BRAILLE PATTERN DOTS-13468
+28AE;N;BRAILLE PATTERN DOTS-23468
+28AF;N;BRAILLE PATTERN DOTS-123468
+28B0;N;BRAILLE PATTERN DOTS-568
+28B1;N;BRAILLE PATTERN DOTS-1568
+28B2;N;BRAILLE PATTERN DOTS-2568
+28B3;N;BRAILLE PATTERN DOTS-12568
+28B4;N;BRAILLE PATTERN DOTS-3568
+28B5;N;BRAILLE PATTERN DOTS-13568
+28B6;N;BRAILLE PATTERN DOTS-23568
+28B7;N;BRAILLE PATTERN DOTS-123568
+28B8;N;BRAILLE PATTERN DOTS-4568
+28B9;N;BRAILLE PATTERN DOTS-14568
+28BA;N;BRAILLE PATTERN DOTS-24568
+28BB;N;BRAILLE PATTERN DOTS-124568
+28BC;N;BRAILLE PATTERN DOTS-34568
+28BD;N;BRAILLE PATTERN DOTS-134568
+28BE;N;BRAILLE PATTERN DOTS-234568
+28BF;N;BRAILLE PATTERN DOTS-1234568
+28C0;N;BRAILLE PATTERN DOTS-78
+28C1;N;BRAILLE PATTERN DOTS-178
+28C2;N;BRAILLE PATTERN DOTS-278
+28C3;N;BRAILLE PATTERN DOTS-1278
+28C4;N;BRAILLE PATTERN DOTS-378
+28C5;N;BRAILLE PATTERN DOTS-1378
+28C6;N;BRAILLE PATTERN DOTS-2378
+28C7;N;BRAILLE PATTERN DOTS-12378
+28C8;N;BRAILLE PATTERN DOTS-478
+28C9;N;BRAILLE PATTERN DOTS-1478
+28CA;N;BRAILLE PATTERN DOTS-2478
+28CB;N;BRAILLE PATTERN DOTS-12478
+28CC;N;BRAILLE PATTERN DOTS-3478
+28CD;N;BRAILLE PATTERN DOTS-13478
+28CE;N;BRAILLE PATTERN DOTS-23478
+28CF;N;BRAILLE PATTERN DOTS-123478
+28D0;N;BRAILLE PATTERN DOTS-578
+28D1;N;BRAILLE PATTERN DOTS-1578
+28D2;N;BRAILLE PATTERN DOTS-2578
+28D3;N;BRAILLE PATTERN DOTS-12578
+28D4;N;BRAILLE PATTERN DOTS-3578
+28D5;N;BRAILLE PATTERN DOTS-13578
+28D6;N;BRAILLE PATTERN DOTS-23578
+28D7;N;BRAILLE PATTERN DOTS-123578
+28D8;N;BRAILLE PATTERN DOTS-4578
+28D9;N;BRAILLE PATTERN DOTS-14578
+28DA;N;BRAILLE PATTERN DOTS-24578
+28DB;N;BRAILLE PATTERN DOTS-124578
+28DC;N;BRAILLE PATTERN DOTS-34578
+28DD;N;BRAILLE PATTERN DOTS-134578
+28DE;N;BRAILLE PATTERN DOTS-234578
+28DF;N;BRAILLE PATTERN DOTS-1234578
+28E0;N;BRAILLE PATTERN DOTS-678
+28E1;N;BRAILLE PATTERN DOTS-1678
+28E2;N;BRAILLE PATTERN DOTS-2678
+28E3;N;BRAILLE PATTERN DOTS-12678
+28E4;N;BRAILLE PATTERN DOTS-3678
+28E5;N;BRAILLE PATTERN DOTS-13678
+28E6;N;BRAILLE PATTERN DOTS-23678
+28E7;N;BRAILLE PATTERN DOTS-123678
+28E8;N;BRAILLE PATTERN DOTS-4678
+28E9;N;BRAILLE PATTERN DOTS-14678
+28EA;N;BRAILLE PATTERN DOTS-24678
+28EB;N;BRAILLE PATTERN DOTS-124678
+28EC;N;BRAILLE PATTERN DOTS-34678
+28ED;N;BRAILLE PATTERN DOTS-134678
+28EE;N;BRAILLE PATTERN DOTS-234678
+28EF;N;BRAILLE PATTERN DOTS-1234678
+28F0;N;BRAILLE PATTERN DOTS-5678
+28F1;N;BRAILLE PATTERN DOTS-15678
+28F2;N;BRAILLE PATTERN DOTS-25678
+28F3;N;BRAILLE PATTERN DOTS-125678
+28F4;N;BRAILLE PATTERN DOTS-35678
+28F5;N;BRAILLE PATTERN DOTS-135678
+28F6;N;BRAILLE PATTERN DOTS-235678
+28F7;N;BRAILLE PATTERN DOTS-1235678
+28F8;N;BRAILLE PATTERN DOTS-45678
+28F9;N;BRAILLE PATTERN DOTS-145678
+28FA;N;BRAILLE PATTERN DOTS-245678
+28FB;N;BRAILLE PATTERN DOTS-1245678
+28FC;N;BRAILLE PATTERN DOTS-345678
+28FD;N;BRAILLE PATTERN DOTS-1345678
+28FE;N;BRAILLE PATTERN DOTS-2345678
+28FF;N;BRAILLE PATTERN DOTS-12345678
+2E80;W;CJK RADICAL REPEAT
+2E81;W;CJK RADICAL CLIFF
+2E82;W;CJK RADICAL SECOND ONE
+2E83;W;CJK RADICAL SECOND TWO
+2E84;W;CJK RADICAL SECOND THREE
+2E85;W;CJK RADICAL PERSON
+2E86;W;CJK RADICAL BOX
+2E87;W;CJK RADICAL TABLE
+2E88;W;CJK RADICAL KNIFE ONE
+2E89;W;CJK RADICAL KNIFE TWO
+2E8A;W;CJK RADICAL DIVINATION
+2E8B;W;CJK RADICAL SEAL
+2E8C;W;CJK RADICAL SMALL ONE
+2E8D;W;CJK RADICAL SMALL TWO
+2E8E;W;CJK RADICAL LAME ONE
+2E8F;W;CJK RADICAL LAME TWO
+2E90;W;CJK RADICAL LAME THREE
+2E91;W;CJK RADICAL LAME FOUR
+2E92;W;CJK RADICAL SNAKE
+2E93;W;CJK RADICAL THREAD
+2E94;W;CJK RADICAL SNOUT ONE
+2E95;W;CJK RADICAL SNOUT TWO
+2E96;W;CJK RADICAL HEART ONE
+2E97;W;CJK RADICAL HEART TWO
+2E98;W;CJK RADICAL HAND
+2E99;W;CJK RADICAL RAP
+2E9B;W;CJK RADICAL CHOKE
+2E9C;W;CJK RADICAL SUN
+2E9D;W;CJK RADICAL MOON
+2E9E;W;CJK RADICAL DEATH
+2E9F;W;CJK RADICAL MOTHER
+2EA0;W;CJK RADICAL CIVILIAN
+2EA1;W;CJK RADICAL WATER ONE
+2EA2;W;CJK RADICAL WATER TWO
+2EA3;W;CJK RADICAL FIRE
+2EA4;W;CJK RADICAL PAW ONE
+2EA5;W;CJK RADICAL PAW TWO
+2EA6;W;CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2EA7;W;CJK RADICAL COW
+2EA8;W;CJK RADICAL DOG
+2EA9;W;CJK RADICAL JADE
+2EAA;W;CJK RADICAL BOLT OF CLOTH
+2EAB;W;CJK RADICAL EYE
+2EAC;W;CJK RADICAL SPIRIT ONE
+2EAD;W;CJK RADICAL SPIRIT TWO
+2EAE;W;CJK RADICAL BAMBOO
+2EAF;W;CJK RADICAL SILK
+2EB0;W;CJK RADICAL C-SIMPLIFIED SILK
+2EB1;W;CJK RADICAL NET ONE
+2EB2;W;CJK RADICAL NET TWO
+2EB3;W;CJK RADICAL NET THREE
+2EB4;W;CJK RADICAL NET FOUR
+2EB5;W;CJK RADICAL MESH
+2EB6;W;CJK RADICAL SHEEP
+2EB7;W;CJK RADICAL RAM
+2EB8;W;CJK RADICAL EWE
+2EB9;W;CJK RADICAL OLD
+2EBA;W;CJK RADICAL BRUSH ONE
+2EBB;W;CJK RADICAL BRUSH TWO
+2EBC;W;CJK RADICAL MEAT
+2EBD;W;CJK RADICAL MORTAR
+2EBE;W;CJK RADICAL GRASS ONE
+2EBF;W;CJK RADICAL GRASS TWO
+2EC0;W;CJK RADICAL GRASS THREE
+2EC1;W;CJK RADICAL TIGER
+2EC2;W;CJK RADICAL CLOTHES
+2EC3;W;CJK RADICAL WEST ONE
+2EC4;W;CJK RADICAL WEST TWO
+2EC5;W;CJK RADICAL C-SIMPLIFIED SEE
+2EC6;W;CJK RADICAL SIMPLIFIED HORN
+2EC7;W;CJK RADICAL HORN
+2EC8;W;CJK RADICAL C-SIMPLIFIED SPEECH
+2EC9;W;CJK RADICAL C-SIMPLIFIED SHELL
+2ECA;W;CJK RADICAL FOOT
+2ECB;W;CJK RADICAL C-SIMPLIFIED CART
+2ECC;W;CJK RADICAL SIMPLIFIED WALK
+2ECD;W;CJK RADICAL WALK ONE
+2ECE;W;CJK RADICAL WALK TWO
+2ECF;W;CJK RADICAL CITY
+2ED0;W;CJK RADICAL C-SIMPLIFIED GOLD
+2ED1;W;CJK RADICAL LONG ONE
+2ED2;W;CJK RADICAL LONG TWO
+2ED3;W;CJK RADICAL C-SIMPLIFIED LONG
+2ED4;W;CJK RADICAL C-SIMPLIFIED GATE
+2ED5;W;CJK RADICAL MOUND ONE
+2ED6;W;CJK RADICAL MOUND TWO
+2ED7;W;CJK RADICAL RAIN
+2ED8;W;CJK RADICAL BLUE
+2ED9;W;CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2EDA;W;CJK RADICAL C-SIMPLIFIED LEAF
+2EDB;W;CJK RADICAL C-SIMPLIFIED WIND
+2EDC;W;CJK RADICAL C-SIMPLIFIED FLY
+2EDD;W;CJK RADICAL EAT ONE
+2EDE;W;CJK RADICAL EAT TWO
+2EDF;W;CJK RADICAL EAT THREE
+2EE0;W;CJK RADICAL C-SIMPLIFIED EAT
+2EE1;W;CJK RADICAL HEAD
+2EE2;W;CJK RADICAL C-SIMPLIFIED HORSE
+2EE3;W;CJK RADICAL BONE
+2EE4;W;CJK RADICAL GHOST
+2EE5;W;CJK RADICAL C-SIMPLIFIED FISH
+2EE6;W;CJK RADICAL C-SIMPLIFIED BIRD
+2EE7;W;CJK RADICAL C-SIMPLIFIED SALT
+2EE8;W;CJK RADICAL SIMPLIFIED WHEAT
+2EE9;W;CJK RADICAL SIMPLIFIED YELLOW
+2EEA;W;CJK RADICAL C-SIMPLIFIED FROG
+2EEB;W;CJK RADICAL J-SIMPLIFIED EVEN
+2EEC;W;CJK RADICAL C-SIMPLIFIED EVEN
+2EED;W;CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE;W;CJK RADICAL C-SIMPLIFIED TOOTH
+2EEF;W;CJK RADICAL J-SIMPLIFIED DRAGON
+2EF0;W;CJK RADICAL C-SIMPLIFIED DRAGON
+2EF1;W;CJK RADICAL TURTLE
+2EF2;W;CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3;W;CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;W;KANGXI RADICAL ONE
+2F01;W;KANGXI RADICAL LINE
+2F02;W;KANGXI RADICAL DOT
+2F03;W;KANGXI RADICAL SLASH
+2F04;W;KANGXI RADICAL SECOND
+2F05;W;KANGXI RADICAL HOOK
+2F06;W;KANGXI RADICAL TWO
+2F07;W;KANGXI RADICAL LID
+2F08;W;KANGXI RADICAL MAN
+2F09;W;KANGXI RADICAL LEGS
+2F0A;W;KANGXI RADICAL ENTER
+2F0B;W;KANGXI RADICAL EIGHT
+2F0C;W;KANGXI RADICAL DOWN BOX
+2F0D;W;KANGXI RADICAL COVER
+2F0E;W;KANGXI RADICAL ICE
+2F0F;W;KANGXI RADICAL TABLE
+2F10;W;KANGXI RADICAL OPEN BOX
+2F11;W;KANGXI RADICAL KNIFE
+2F12;W;KANGXI RADICAL POWER
+2F13;W;KANGXI RADICAL WRAP
+2F14;W;KANGXI RADICAL SPOON
+2F15;W;KANGXI RADICAL RIGHT OPEN BOX
+2F16;W;KANGXI RADICAL HIDING ENCLOSURE
+2F17;W;KANGXI RADICAL TEN
+2F18;W;KANGXI RADICAL DIVINATION
+2F19;W;KANGXI RADICAL SEAL
+2F1A;W;KANGXI RADICAL CLIFF
+2F1B;W;KANGXI RADICAL PRIVATE
+2F1C;W;KANGXI RADICAL AGAIN
+2F1D;W;KANGXI RADICAL MOUTH
+2F1E;W;KANGXI RADICAL ENCLOSURE
+2F1F;W;KANGXI RADICAL EARTH
+2F20;W;KANGXI RADICAL SCHOLAR
+2F21;W;KANGXI RADICAL GO
+2F22;W;KANGXI RADICAL GO SLOWLY
+2F23;W;KANGXI RADICAL EVENING
+2F24;W;KANGXI RADICAL BIG
+2F25;W;KANGXI RADICAL WOMAN
+2F26;W;KANGXI RADICAL CHILD
+2F27;W;KANGXI RADICAL ROOF
+2F28;W;KANGXI RADICAL INCH
+2F29;W;KANGXI RADICAL SMALL
+2F2A;W;KANGXI RADICAL LAME
+2F2B;W;KANGXI RADICAL CORPSE
+2F2C;W;KANGXI RADICAL SPROUT
+2F2D;W;KANGXI RADICAL MOUNTAIN
+2F2E;W;KANGXI RADICAL RIVER
+2F2F;W;KANGXI RADICAL WORK
+2F30;W;KANGXI RADICAL ONESELF
+2F31;W;KANGXI RADICAL TURBAN
+2F32;W;KANGXI RADICAL DRY
+2F33;W;KANGXI RADICAL SHORT THREAD
+2F34;W;KANGXI RADICAL DOTTED CLIFF
+2F35;W;KANGXI RADICAL LONG STRIDE
+2F36;W;KANGXI RADICAL TWO HANDS
+2F37;W;KANGXI RADICAL SHOOT
+2F38;W;KANGXI RADICAL BOW
+2F39;W;KANGXI RADICAL SNOUT
+2F3A;W;KANGXI RADICAL BRISTLE
+2F3B;W;KANGXI RADICAL STEP
+2F3C;W;KANGXI RADICAL HEART
+2F3D;W;KANGXI RADICAL HALBERD
+2F3E;W;KANGXI RADICAL DOOR
+2F3F;W;KANGXI RADICAL HAND
+2F40;W;KANGXI RADICAL BRANCH
+2F41;W;KANGXI RADICAL RAP
+2F42;W;KANGXI RADICAL SCRIPT
+2F43;W;KANGXI RADICAL DIPPER
+2F44;W;KANGXI RADICAL AXE
+2F45;W;KANGXI RADICAL SQUARE
+2F46;W;KANGXI RADICAL NOT
+2F47;W;KANGXI RADICAL SUN
+2F48;W;KANGXI RADICAL SAY
+2F49;W;KANGXI RADICAL MOON
+2F4A;W;KANGXI RADICAL TREE
+2F4B;W;KANGXI RADICAL LACK
+2F4C;W;KANGXI RADICAL STOP
+2F4D;W;KANGXI RADICAL DEATH
+2F4E;W;KANGXI RADICAL WEAPON
+2F4F;W;KANGXI RADICAL DO NOT
+2F50;W;KANGXI RADICAL COMPARE
+2F51;W;KANGXI RADICAL FUR
+2F52;W;KANGXI RADICAL CLAN
+2F53;W;KANGXI RADICAL STEAM
+2F54;W;KANGXI RADICAL WATER
+2F55;W;KANGXI RADICAL FIRE
+2F56;W;KANGXI RADICAL CLAW
+2F57;W;KANGXI RADICAL FATHER
+2F58;W;KANGXI RADICAL DOUBLE X
+2F59;W;KANGXI RADICAL HALF TREE TRUNK
+2F5A;W;KANGXI RADICAL SLICE
+2F5B;W;KANGXI RADICAL FANG
+2F5C;W;KANGXI RADICAL COW
+2F5D;W;KANGXI RADICAL DOG
+2F5E;W;KANGXI RADICAL PROFOUND
+2F5F;W;KANGXI RADICAL JADE
+2F60;W;KANGXI RADICAL MELON
+2F61;W;KANGXI RADICAL TILE
+2F62;W;KANGXI RADICAL SWEET
+2F63;W;KANGXI RADICAL LIFE
+2F64;W;KANGXI RADICAL USE
+2F65;W;KANGXI RADICAL FIELD
+2F66;W;KANGXI RADICAL BOLT OF CLOTH
+2F67;W;KANGXI RADICAL SICKNESS
+2F68;W;KANGXI RADICAL DOTTED TENT
+2F69;W;KANGXI RADICAL WHITE
+2F6A;W;KANGXI RADICAL SKIN
+2F6B;W;KANGXI RADICAL DISH
+2F6C;W;KANGXI RADICAL EYE
+2F6D;W;KANGXI RADICAL SPEAR
+2F6E;W;KANGXI RADICAL ARROW
+2F6F;W;KANGXI RADICAL STONE
+2F70;W;KANGXI RADICAL SPIRIT
+2F71;W;KANGXI RADICAL TRACK
+2F72;W;KANGXI RADICAL GRAIN
+2F73;W;KANGXI RADICAL CAVE
+2F74;W;KANGXI RADICAL STAND
+2F75;W;KANGXI RADICAL BAMBOO
+2F76;W;KANGXI RADICAL RICE
+2F77;W;KANGXI RADICAL SILK
+2F78;W;KANGXI RADICAL JAR
+2F79;W;KANGXI RADICAL NET
+2F7A;W;KANGXI RADICAL SHEEP
+2F7B;W;KANGXI RADICAL FEATHER
+2F7C;W;KANGXI RADICAL OLD
+2F7D;W;KANGXI RADICAL AND
+2F7E;W;KANGXI RADICAL PLOW
+2F7F;W;KANGXI RADICAL EAR
+2F80;W;KANGXI RADICAL BRUSH
+2F81;W;KANGXI RADICAL MEAT
+2F82;W;KANGXI RADICAL MINISTER
+2F83;W;KANGXI RADICAL SELF
+2F84;W;KANGXI RADICAL ARRIVE
+2F85;W;KANGXI RADICAL MORTAR
+2F86;W;KANGXI RADICAL TONGUE
+2F87;W;KANGXI RADICAL OPPOSE
+2F88;W;KANGXI RADICAL BOAT
+2F89;W;KANGXI RADICAL STOPPING
+2F8A;W;KANGXI RADICAL COLOR
+2F8B;W;KANGXI RADICAL GRASS
+2F8C;W;KANGXI RADICAL TIGER
+2F8D;W;KANGXI RADICAL INSECT
+2F8E;W;KANGXI RADICAL BLOOD
+2F8F;W;KANGXI RADICAL WALK ENCLOSURE
+2F90;W;KANGXI RADICAL CLOTHES
+2F91;W;KANGXI RADICAL WEST
+2F92;W;KANGXI RADICAL SEE
+2F93;W;KANGXI RADICAL HORN
+2F94;W;KANGXI RADICAL SPEECH
+2F95;W;KANGXI RADICAL VALLEY
+2F96;W;KANGXI RADICAL BEAN
+2F97;W;KANGXI RADICAL PIG
+2F98;W;KANGXI RADICAL BADGER
+2F99;W;KANGXI RADICAL SHELL
+2F9A;W;KANGXI RADICAL RED
+2F9B;W;KANGXI RADICAL RUN
+2F9C;W;KANGXI RADICAL FOOT
+2F9D;W;KANGXI RADICAL BODY
+2F9E;W;KANGXI RADICAL CART
+2F9F;W;KANGXI RADICAL BITTER
+2FA0;W;KANGXI RADICAL MORNING
+2FA1;W;KANGXI RADICAL WALK
+2FA2;W;KANGXI RADICAL CITY
+2FA3;W;KANGXI RADICAL WINE
+2FA4;W;KANGXI RADICAL DISTINGUISH
+2FA5;W;KANGXI RADICAL VILLAGE
+2FA6;W;KANGXI RADICAL GOLD
+2FA7;W;KANGXI RADICAL LONG
+2FA8;W;KANGXI RADICAL GATE
+2FA9;W;KANGXI RADICAL MOUND
+2FAA;W;KANGXI RADICAL SLAVE
+2FAB;W;KANGXI RADICAL SHORT TAILED BIRD
+2FAC;W;KANGXI RADICAL RAIN
+2FAD;W;KANGXI RADICAL BLUE
+2FAE;W;KANGXI RADICAL WRONG
+2FAF;W;KANGXI RADICAL FACE
+2FB0;W;KANGXI RADICAL LEATHER
+2FB1;W;KANGXI RADICAL TANNED LEATHER
+2FB2;W;KANGXI RADICAL LEEK
+2FB3;W;KANGXI RADICAL SOUND
+2FB4;W;KANGXI RADICAL LEAF
+2FB5;W;KANGXI RADICAL WIND
+2FB6;W;KANGXI RADICAL FLY
+2FB7;W;KANGXI RADICAL EAT
+2FB8;W;KANGXI RADICAL HEAD
+2FB9;W;KANGXI RADICAL FRAGRANT
+2FBA;W;KANGXI RADICAL HORSE
+2FBB;W;KANGXI RADICAL BONE
+2FBC;W;KANGXI RADICAL TALL
+2FBD;W;KANGXI RADICAL HAIR
+2FBE;W;KANGXI RADICAL FIGHT
+2FBF;W;KANGXI RADICAL SACRIFICIAL WINE
+2FC0;W;KANGXI RADICAL CAULDRON
+2FC1;W;KANGXI RADICAL GHOST
+2FC2;W;KANGXI RADICAL FISH
+2FC3;W;KANGXI RADICAL BIRD
+2FC4;W;KANGXI RADICAL SALT
+2FC5;W;KANGXI RADICAL DEER
+2FC6;W;KANGXI RADICAL WHEAT
+2FC7;W;KANGXI RADICAL HEMP
+2FC8;W;KANGXI RADICAL YELLOW
+2FC9;W;KANGXI RADICAL MILLET
+2FCA;W;KANGXI RADICAL BLACK
+2FCB;W;KANGXI RADICAL EMBROIDERY
+2FCC;W;KANGXI RADICAL FROG
+2FCD;W;KANGXI RADICAL TRIPOD
+2FCE;W;KANGXI RADICAL DRUM
+2FCF;W;KANGXI RADICAL RAT
+2FD0;W;KANGXI RADICAL NOSE
+2FD1;W;KANGXI RADICAL EVEN
+2FD2;W;KANGXI RADICAL TOOTH
+2FD3;W;KANGXI RADICAL DRAGON
+2FD4;W;KANGXI RADICAL TURTLE
+2FD5;W;KANGXI RADICAL FLUTE
+2FF0;W;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1;W;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2;W;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3;W;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4;W;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB;W;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000;W;IDEOGRAPHIC SPACE
+3001;W;IDEOGRAPHIC COMMA
+3002;W;IDEOGRAPHIC FULL STOP
+3003;W;DITTO MARK
+3004;W;JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005;W;IDEOGRAPHIC ITERATION MARK
+3006;W;IDEOGRAPHIC CLOSING MARK
+3007;W;IDEOGRAPHIC NUMBER ZERO
+3008;W;LEFT ANGLE BRACKET
+3009;W;RIGHT ANGLE BRACKET
+300A;A;LEFT DOUBLE ANGLE BRACKET
+300B;A;RIGHT DOUBLE ANGLE BRACKET
+300C;W;LEFT CORNER BRACKET
+300D;W;RIGHT CORNER BRACKET
+300E;W;LEFT WHITE CORNER BRACKET
+300F;W;RIGHT WHITE CORNER BRACKET
+3010;W;LEFT BLACK LENTICULAR BRACKET
+3011;W;RIGHT BLACK LENTICULAR BRACKET
+3012;W;POSTAL MARK
+3013;W;GETA MARK
+3014;W;LEFT TORTOISE SHELL BRACKET
+3015;W;RIGHT TORTOISE SHELL BRACKET
+3016;W;LEFT WHITE LENTICULAR BRACKET
+3017;W;RIGHT WHITE LENTICULAR BRACKET
+3018;W;LEFT WHITE TORTOISE SHELL BRACKET
+3019;W;RIGHT WHITE TORTOISE SHELL BRACKET
+301A;A;LEFT WHITE SQUARE BRACKET
+301B;A;RIGHT WHITE SQUARE BRACKET
+301C;W;WAVE DASH
+301D;W;REVERSED DOUBLE PRIME QUOTATION MARK
+301E;W;DOUBLE PRIME QUOTATION MARK
+301F;W;LOW DOUBLE PRIME QUOTATION MARK
+3020;W;POSTAL MARK FACE
+3021;W;HANGZHOU NUMERAL ONE
+3022;W;HANGZHOU NUMERAL TWO
+3023;W;HANGZHOU NUMERAL THREE
+3024;W;HANGZHOU NUMERAL FOUR
+3025;W;HANGZHOU NUMERAL FIVE
+3026;W;HANGZHOU NUMERAL SIX
+3027;W;HANGZHOU NUMERAL SEVEN
+3028;W;HANGZHOU NUMERAL EIGHT
+3029;W;HANGZHOU NUMERAL NINE
+302A;W;IDEOGRAPHIC LEVEL TONE MARK
+302B;W;IDEOGRAPHIC RISING TONE MARK
+302C;W;IDEOGRAPHIC DEPARTING TONE MARK
+302D;W;IDEOGRAPHIC ENTERING TONE MARK
+302E;W;HANGUL SINGLE DOT TONE MARK
+302F;W;HANGUL DOUBLE DOT TONE MARK
+3030;W;WAVY DASH
+3031;W;VERTICAL KANA REPEAT MARK
+3032;W;VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033;W;VERTICAL KANA REPEAT MARK UPPER HALF
+3034;W;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035;W;VERTICAL KANA REPEAT MARK LOWER HALF
+3036;W;CIRCLED POSTAL MARK
+3037;W;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038;W;HANGZHOU NUMERAL TEN
+3039;W;HANGZHOU NUMERAL TWENTY
+303A;W;HANGZHOU NUMERAL THIRTY
+303E;W;IDEOGRAPHIC VARIATION INDICATOR
+303F;N;IDEOGRAPHIC HALF FILL SPACE
+3041;W;HIRAGANA LETTER SMALL A
+3042;W;HIRAGANA LETTER A
+3043;W;HIRAGANA LETTER SMALL I
+3044;W;HIRAGANA LETTER I
+3045;W;HIRAGANA LETTER SMALL U
+3046;W;HIRAGANA LETTER U
+3047;W;HIRAGANA LETTER SMALL E
+3048;W;HIRAGANA LETTER E
+3049;W;HIRAGANA LETTER SMALL O
+304A;W;HIRAGANA LETTER O
+304B;W;HIRAGANA LETTER KA
+304C;W;HIRAGANA LETTER GA
+304D;W;HIRAGANA LETTER KI
+304E;W;HIRAGANA LETTER GI
+304F;W;HIRAGANA LETTER KU
+3050;W;HIRAGANA LETTER GU
+3051;W;HIRAGANA LETTER KE
+3052;W;HIRAGANA LETTER GE
+3053;W;HIRAGANA LETTER KO
+3054;W;HIRAGANA LETTER GO
+3055;W;HIRAGANA LETTER SA
+3056;W;HIRAGANA LETTER ZA
+3057;W;HIRAGANA LETTER SI
+3058;W;HIRAGANA LETTER ZI
+3059;W;HIRAGANA LETTER SU
+305A;W;HIRAGANA LETTER ZU
+305B;W;HIRAGANA LETTER SE
+305C;W;HIRAGANA LETTER ZE
+305D;W;HIRAGANA LETTER SO
+305E;W;HIRAGANA LETTER ZO
+305F;W;HIRAGANA LETTER TA
+3060;W;HIRAGANA LETTER DA
+3061;W;HIRAGANA LETTER TI
+3062;W;HIRAGANA LETTER DI
+3063;W;HIRAGANA LETTER SMALL TU
+3064;W;HIRAGANA LETTER TU
+3065;W;HIRAGANA LETTER DU
+3066;W;HIRAGANA LETTER TE
+3067;W;HIRAGANA LETTER DE
+3068;W;HIRAGANA LETTER TO
+3069;W;HIRAGANA LETTER DO
+306A;W;HIRAGANA LETTER NA
+306B;W;HIRAGANA LETTER NI
+306C;W;HIRAGANA LETTER NU
+306D;W;HIRAGANA LETTER NE
+306E;W;HIRAGANA LETTER NO
+306F;W;HIRAGANA LETTER HA
+3070;W;HIRAGANA LETTER BA
+3071;W;HIRAGANA LETTER PA
+3072;W;HIRAGANA LETTER HI
+3073;W;HIRAGANA LETTER BI
+3074;W;HIRAGANA LETTER PI
+3075;W;HIRAGANA LETTER HU
+3076;W;HIRAGANA LETTER BU
+3077;W;HIRAGANA LETTER PU
+3078;W;HIRAGANA LETTER HE
+3079;W;HIRAGANA LETTER BE
+307A;W;HIRAGANA LETTER PE
+307B;W;HIRAGANA LETTER HO
+307C;W;HIRAGANA LETTER BO
+307D;W;HIRAGANA LETTER PO
+307E;W;HIRAGANA LETTER MA
+307F;W;HIRAGANA LETTER MI
+3080;W;HIRAGANA LETTER MU
+3081;W;HIRAGANA LETTER ME
+3082;W;HIRAGANA LETTER MO
+3083;W;HIRAGANA LETTER SMALL YA
+3084;W;HIRAGANA LETTER YA
+3085;W;HIRAGANA LETTER SMALL YU
+3086;W;HIRAGANA LETTER YU
+3087;W;HIRAGANA LETTER SMALL YO
+3088;W;HIRAGANA LETTER YO
+3089;W;HIRAGANA LETTER RA
+308A;W;HIRAGANA LETTER RI
+308B;W;HIRAGANA LETTER RU
+308C;W;HIRAGANA LETTER RE
+308D;W;HIRAGANA LETTER RO
+308E;W;HIRAGANA LETTER SMALL WA
+308F;W;HIRAGANA LETTER WA
+3090;W;HIRAGANA LETTER WI
+3091;W;HIRAGANA LETTER WE
+3092;W;HIRAGANA LETTER WO
+3093;W;HIRAGANA LETTER N
+3094;W;HIRAGANA LETTER VU
+3099;W;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309A;W;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B;W;KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;W;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309D;W;HIRAGANA ITERATION MARK
+309E;W;HIRAGANA VOICED ITERATION MARK
+30A1;W;KATAKANA LETTER SMALL A
+30A2;W;KATAKANA LETTER A
+30A3;W;KATAKANA LETTER SMALL I
+30A4;W;KATAKANA LETTER I
+30A5;W;KATAKANA LETTER SMALL U
+30A6;W;KATAKANA LETTER U
+30A7;W;KATAKANA LETTER SMALL E
+30A8;W;KATAKANA LETTER E
+30A9;W;KATAKANA LETTER SMALL O
+30AA;W;KATAKANA LETTER O
+30AB;W;KATAKANA LETTER KA
+30AC;W;KATAKANA LETTER GA
+30AD;W;KATAKANA LETTER KI
+30AE;W;KATAKANA LETTER GI
+30AF;W;KATAKANA LETTER KU
+30B0;W;KATAKANA LETTER GU
+30B1;W;KATAKANA LETTER KE
+30B2;W;KATAKANA LETTER GE
+30B3;W;KATAKANA LETTER KO
+30B4;W;KATAKANA LETTER GO
+30B5;W;KATAKANA LETTER SA
+30B6;W;KATAKANA LETTER ZA
+30B7;W;KATAKANA LETTER SI
+30B8;W;KATAKANA LETTER ZI
+30B9;W;KATAKANA LETTER SU
+30BA;W;KATAKANA LETTER ZU
+30BB;W;KATAKANA LETTER SE
+30BC;W;KATAKANA LETTER ZE
+30BD;W;KATAKANA LETTER SO
+30BE;W;KATAKANA LETTER ZO
+30BF;W;KATAKANA LETTER TA
+30C0;W;KATAKANA LETTER DA
+30C1;W;KATAKANA LETTER TI
+30C2;W;KATAKANA LETTER DI
+30C3;W;KATAKANA LETTER SMALL TU
+30C4;W;KATAKANA LETTER TU
+30C5;W;KATAKANA LETTER DU
+30C6;W;KATAKANA LETTER TE
+30C7;W;KATAKANA LETTER DE
+30C8;W;KATAKANA LETTER TO
+30C9;W;KATAKANA LETTER DO
+30CA;W;KATAKANA LETTER NA
+30CB;W;KATAKANA LETTER NI
+30CC;W;KATAKANA LETTER NU
+30CD;W;KATAKANA LETTER NE
+30CE;W;KATAKANA LETTER NO
+30CF;W;KATAKANA LETTER HA
+30D0;W;KATAKANA LETTER BA
+30D1;W;KATAKANA LETTER PA
+30D2;W;KATAKANA LETTER HI
+30D3;W;KATAKANA LETTER BI
+30D4;W;KATAKANA LETTER PI
+30D5;W;KATAKANA LETTER HU
+30D6;W;KATAKANA LETTER BU
+30D7;W;KATAKANA LETTER PU
+30D8;W;KATAKANA LETTER HE
+30D9;W;KATAKANA LETTER BE
+30DA;W;KATAKANA LETTER PE
+30DB;W;KATAKANA LETTER HO
+30DC;W;KATAKANA LETTER BO
+30DD;W;KATAKANA LETTER PO
+30DE;W;KATAKANA LETTER MA
+30DF;W;KATAKANA LETTER MI
+30E0;W;KATAKANA LETTER MU
+30E1;W;KATAKANA LETTER ME
+30E2;W;KATAKANA LETTER MO
+30E3;W;KATAKANA LETTER SMALL YA
+30E4;W;KATAKANA LETTER YA
+30E5;W;KATAKANA LETTER SMALL YU
+30E6;W;KATAKANA LETTER YU
+30E7;W;KATAKANA LETTER SMALL YO
+30E8;W;KATAKANA LETTER YO
+30E9;W;KATAKANA LETTER RA
+30EA;W;KATAKANA LETTER RI
+30EB;W;KATAKANA LETTER RU
+30EC;W;KATAKANA LETTER RE
+30ED;W;KATAKANA LETTER RO
+30EE;W;KATAKANA LETTER SMALL WA
+30EF;W;KATAKANA LETTER WA
+30F0;W;KATAKANA LETTER WI
+30F1;W;KATAKANA LETTER WE
+30F2;W;KATAKANA LETTER WO
+30F3;W;KATAKANA LETTER N
+30F4;W;KATAKANA LETTER VU
+30F5;W;KATAKANA LETTER SMALL KA
+30F6;W;KATAKANA LETTER SMALL KE
+30F7;W;KATAKANA LETTER VA
+30F8;W;KATAKANA LETTER VI
+30F9;W;KATAKANA LETTER VE
+30FA;W;KATAKANA LETTER VO
+30FB;W;KATAKANA MIDDLE DOT
+30FC;W;KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD;W;KATAKANA ITERATION MARK
+30FE;W;KATAKANA VOICED ITERATION MARK
+3105;W;BOPOMOFO LETTER B
+3106;W;BOPOMOFO LETTER P
+3107;W;BOPOMOFO LETTER M
+3108;W;BOPOMOFO LETTER F
+3109;W;BOPOMOFO LETTER D
+310A;W;BOPOMOFO LETTER T
+310B;W;BOPOMOFO LETTER N
+310C;W;BOPOMOFO LETTER L
+310D;W;BOPOMOFO LETTER G
+310E;W;BOPOMOFO LETTER K
+310F;W;BOPOMOFO LETTER H
+3110;W;BOPOMOFO LETTER J
+3111;W;BOPOMOFO LETTER Q
+3112;W;BOPOMOFO LETTER X
+3113;W;BOPOMOFO LETTER ZH
+3114;W;BOPOMOFO LETTER CH
+3115;W;BOPOMOFO LETTER SH
+3116;W;BOPOMOFO LETTER R
+3117;W;BOPOMOFO LETTER Z
+3118;W;BOPOMOFO LETTER C
+3119;W;BOPOMOFO LETTER S
+311A;W;BOPOMOFO LETTER A
+311B;W;BOPOMOFO LETTER O
+311C;W;BOPOMOFO LETTER E
+311D;W;BOPOMOFO LETTER EH
+311E;W;BOPOMOFO LETTER AI
+311F;W;BOPOMOFO LETTER EI
+3120;W;BOPOMOFO LETTER AU
+3121;W;BOPOMOFO LETTER OU
+3122;W;BOPOMOFO LETTER AN
+3123;W;BOPOMOFO LETTER EN
+3124;W;BOPOMOFO LETTER ANG
+3125;W;BOPOMOFO LETTER ENG
+3126;W;BOPOMOFO LETTER ER
+3127;W;BOPOMOFO LETTER I
+3128;W;BOPOMOFO LETTER U
+3129;W;BOPOMOFO LETTER IU
+312A;W;BOPOMOFO LETTER V
+312B;W;BOPOMOFO LETTER NG
+312C;W;BOPOMOFO LETTER GN
+3131;W;HANGUL LETTER KIYEOK
+3132;W;HANGUL LETTER SSANGKIYEOK
+3133;W;HANGUL LETTER KIYEOK-SIOS
+3134;W;HANGUL LETTER NIEUN
+3135;W;HANGUL LETTER NIEUN-CIEUC
+3136;W;HANGUL LETTER NIEUN-HIEUH
+3137;W;HANGUL LETTER TIKEUT
+3138;W;HANGUL LETTER SSANGTIKEUT
+3139;W;HANGUL LETTER RIEUL
+313A;W;HANGUL LETTER RIEUL-KIYEOK
+313B;W;HANGUL LETTER RIEUL-MIEUM
+313C;W;HANGUL LETTER RIEUL-PIEUP
+313D;W;HANGUL LETTER RIEUL-SIOS
+313E;W;HANGUL LETTER RIEUL-THIEUTH
+313F;W;HANGUL LETTER RIEUL-PHIEUPH
+3140;W;HANGUL LETTER RIEUL-HIEUH
+3141;W;HANGUL LETTER MIEUM
+3142;W;HANGUL LETTER PIEUP
+3143;W;HANGUL LETTER SSANGPIEUP
+3144;W;HANGUL LETTER PIEUP-SIOS
+3145;W;HANGUL LETTER SIOS
+3146;W;HANGUL LETTER SSANGSIOS
+3147;W;HANGUL LETTER IEUNG
+3148;W;HANGUL LETTER CIEUC
+3149;W;HANGUL LETTER SSANGCIEUC
+314A;W;HANGUL LETTER CHIEUCH
+314B;W;HANGUL LETTER KHIEUKH
+314C;W;HANGUL LETTER THIEUTH
+314D;W;HANGUL LETTER PHIEUPH
+314E;W;HANGUL LETTER HIEUH
+314F;W;HANGUL LETTER A
+3150;W;HANGUL LETTER AE
+3151;W;HANGUL LETTER YA
+3152;W;HANGUL LETTER YAE
+3153;W;HANGUL LETTER EO
+3154;W;HANGUL LETTER E
+3155;W;HANGUL LETTER YEO
+3156;W;HANGUL LETTER YE
+3157;W;HANGUL LETTER O
+3158;W;HANGUL LETTER WA
+3159;W;HANGUL LETTER WAE
+315A;W;HANGUL LETTER OE
+315B;W;HANGUL LETTER YO
+315C;W;HANGUL LETTER U
+315D;W;HANGUL LETTER WEO
+315E;W;HANGUL LETTER WE
+315F;W;HANGUL LETTER WI
+3160;W;HANGUL LETTER YU
+3161;W;HANGUL LETTER EU
+3162;W;HANGUL LETTER YI
+3163;W;HANGUL LETTER I
+3164;W;HANGUL FILLER
+3165;W;HANGUL LETTER SSANGNIEUN
+3166;W;HANGUL LETTER NIEUN-TIKEUT
+3167;W;HANGUL LETTER NIEUN-SIOS
+3168;W;HANGUL LETTER NIEUN-PANSIOS
+3169;W;HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;W;HANGUL LETTER RIEUL-TIKEUT
+316B;W;HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;W;HANGUL LETTER RIEUL-PANSIOS
+316D;W;HANGUL LETTER RIEUL-YEORINHIEUH
+316E;W;HANGUL LETTER MIEUM-PIEUP
+316F;W;HANGUL LETTER MIEUM-SIOS
+3170;W;HANGUL LETTER MIEUM-PANSIOS
+3171;W;HANGUL LETTER KAPYEOUNMIEUM
+3172;W;HANGUL LETTER PIEUP-KIYEOK
+3173;W;HANGUL LETTER PIEUP-TIKEUT
+3174;W;HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;W;HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;W;HANGUL LETTER PIEUP-CIEUC
+3177;W;HANGUL LETTER PIEUP-THIEUTH
+3178;W;HANGUL LETTER KAPYEOUNPIEUP
+3179;W;HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;W;HANGUL LETTER SIOS-KIYEOK
+317B;W;HANGUL LETTER SIOS-NIEUN
+317C;W;HANGUL LETTER SIOS-TIKEUT
+317D;W;HANGUL LETTER SIOS-PIEUP
+317E;W;HANGUL LETTER SIOS-CIEUC
+317F;W;HANGUL LETTER PANSIOS
+3180;W;HANGUL LETTER SSANGIEUNG
+3181;W;HANGUL LETTER YESIEUNG
+3182;W;HANGUL LETTER YESIEUNG-SIOS
+3183;W;HANGUL LETTER YESIEUNG-PANSIOS
+3184;W;HANGUL LETTER KAPYEOUNPHIEUPH
+3185;W;HANGUL LETTER SSANGHIEUH
+3186;W;HANGUL LETTER YEORINHIEUH
+3187;W;HANGUL LETTER YO-YA
+3188;W;HANGUL LETTER YO-YAE
+3189;W;HANGUL LETTER YO-I
+318A;W;HANGUL LETTER YU-YEO
+318B;W;HANGUL LETTER YU-YE
+318C;W;HANGUL LETTER YU-I
+318D;W;HANGUL LETTER ARAEA
+318E;W;HANGUL LETTER ARAEAE
+3190;W;IDEOGRAPHIC ANNOTATION LINKING MARK
+3191;W;IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192;W;IDEOGRAPHIC ANNOTATION ONE MARK
+3193;W;IDEOGRAPHIC ANNOTATION TWO MARK
+3194;W;IDEOGRAPHIC ANNOTATION THREE MARK
+3195;W;IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;W;IDEOGRAPHIC ANNOTATION TOP MARK
+3197;W;IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;W;IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;W;IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;W;IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;W;IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;W;IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;W;IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;W;IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;W;IDEOGRAPHIC ANNOTATION MAN MARK
+31A0;W;BOPOMOFO LETTER BU
+31A1;W;BOPOMOFO LETTER ZI
+31A2;W;BOPOMOFO LETTER JI
+31A3;W;BOPOMOFO LETTER GU
+31A4;W;BOPOMOFO LETTER EE
+31A5;W;BOPOMOFO LETTER ENN
+31A6;W;BOPOMOFO LETTER OO
+31A7;W;BOPOMOFO LETTER ONN
+31A8;W;BOPOMOFO LETTER IR
+31A9;W;BOPOMOFO LETTER ANN
+31AA;W;BOPOMOFO LETTER INN
+31AB;W;BOPOMOFO LETTER UNN
+31AC;W;BOPOMOFO LETTER IM
+31AD;W;BOPOMOFO LETTER NGG
+31AE;W;BOPOMOFO LETTER AINN
+31AF;W;BOPOMOFO LETTER AUNN
+31B0;W;BOPOMOFO LETTER AM
+31B1;W;BOPOMOFO LETTER OM
+31B2;W;BOPOMOFO LETTER ONG
+31B3;W;BOPOMOFO LETTER INNN
+31B4;W;BOPOMOFO FINAL LETTER P
+31B5;W;BOPOMOFO FINAL LETTER T
+31B6;W;BOPOMOFO FINAL LETTER K
+31B7;W;BOPOMOFO FINAL LETTER H
+3200;W;PARENTHESIZED HANGUL KIYEOK
+3201;W;PARENTHESIZED HANGUL NIEUN
+3202;W;PARENTHESIZED HANGUL TIKEUT
+3203;W;PARENTHESIZED HANGUL RIEUL
+3204;W;PARENTHESIZED HANGUL MIEUM
+3205;W;PARENTHESIZED HANGUL PIEUP
+3206;W;PARENTHESIZED HANGUL SIOS
+3207;W;PARENTHESIZED HANGUL IEUNG
+3208;W;PARENTHESIZED HANGUL CIEUC
+3209;W;PARENTHESIZED HANGUL CHIEUCH
+320A;W;PARENTHESIZED HANGUL KHIEUKH
+320B;W;PARENTHESIZED HANGUL THIEUTH
+320C;W;PARENTHESIZED HANGUL PHIEUPH
+320D;W;PARENTHESIZED HANGUL HIEUH
+320E;W;PARENTHESIZED HANGUL KIYEOK A
+320F;W;PARENTHESIZED HANGUL NIEUN A
+3210;W;PARENTHESIZED HANGUL TIKEUT A
+3211;W;PARENTHESIZED HANGUL RIEUL A
+3212;W;PARENTHESIZED HANGUL MIEUM A
+3213;W;PARENTHESIZED HANGUL PIEUP A
+3214;W;PARENTHESIZED HANGUL SIOS A
+3215;W;PARENTHESIZED HANGUL IEUNG A
+3216;W;PARENTHESIZED HANGUL CIEUC A
+3217;W;PARENTHESIZED HANGUL CHIEUCH A
+3218;W;PARENTHESIZED HANGUL KHIEUKH A
+3219;W;PARENTHESIZED HANGUL THIEUTH A
+321A;W;PARENTHESIZED HANGUL PHIEUPH A
+321B;W;PARENTHESIZED HANGUL HIEUH A
+321C;W;PARENTHESIZED HANGUL CIEUC U
+3220;W;PARENTHESIZED IDEOGRAPH ONE
+3221;W;PARENTHESIZED IDEOGRAPH TWO
+3222;W;PARENTHESIZED IDEOGRAPH THREE
+3223;W;PARENTHESIZED IDEOGRAPH FOUR
+3224;W;PARENTHESIZED IDEOGRAPH FIVE
+3225;W;PARENTHESIZED IDEOGRAPH SIX
+3226;W;PARENTHESIZED IDEOGRAPH SEVEN
+3227;W;PARENTHESIZED IDEOGRAPH EIGHT
+3228;W;PARENTHESIZED IDEOGRAPH NINE
+3229;W;PARENTHESIZED IDEOGRAPH TEN
+322A;W;PARENTHESIZED IDEOGRAPH MOON
+322B;W;PARENTHESIZED IDEOGRAPH FIRE
+322C;W;PARENTHESIZED IDEOGRAPH WATER
+322D;W;PARENTHESIZED IDEOGRAPH WOOD
+322E;W;PARENTHESIZED IDEOGRAPH METAL
+322F;W;PARENTHESIZED IDEOGRAPH EARTH
+3230;W;PARENTHESIZED IDEOGRAPH SUN
+3231;W;PARENTHESIZED IDEOGRAPH STOCK
+3232;W;PARENTHESIZED IDEOGRAPH HAVE
+3233;W;PARENTHESIZED IDEOGRAPH SOCIETY
+3234;W;PARENTHESIZED IDEOGRAPH NAME
+3235;W;PARENTHESIZED IDEOGRAPH SPECIAL
+3236;W;PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;W;PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;W;PARENTHESIZED IDEOGRAPH LABOR
+3239;W;PARENTHESIZED IDEOGRAPH REPRESENT
+323A;W;PARENTHESIZED IDEOGRAPH CALL
+323B;W;PARENTHESIZED IDEOGRAPH STUDY
+323C;W;PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;W;PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;W;PARENTHESIZED IDEOGRAPH RESOURCE
+323F;W;PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;W;PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;W;PARENTHESIZED IDEOGRAPH REST
+3242;W;PARENTHESIZED IDEOGRAPH SELF
+3243;W;PARENTHESIZED IDEOGRAPH REACH
+3260;W;CIRCLED HANGUL KIYEOK
+3261;W;CIRCLED HANGUL NIEUN
+3262;W;CIRCLED HANGUL TIKEUT
+3263;W;CIRCLED HANGUL RIEUL
+3264;W;CIRCLED HANGUL MIEUM
+3265;W;CIRCLED HANGUL PIEUP
+3266;W;CIRCLED HANGUL SIOS
+3267;W;CIRCLED HANGUL IEUNG
+3268;W;CIRCLED HANGUL CIEUC
+3269;W;CIRCLED HANGUL CHIEUCH
+326A;W;CIRCLED HANGUL KHIEUKH
+326B;W;CIRCLED HANGUL THIEUTH
+326C;W;CIRCLED HANGUL PHIEUPH
+326D;W;CIRCLED HANGUL HIEUH
+326E;W;CIRCLED HANGUL KIYEOK A
+326F;W;CIRCLED HANGUL NIEUN A
+3270;W;CIRCLED HANGUL TIKEUT A
+3271;W;CIRCLED HANGUL RIEUL A
+3272;W;CIRCLED HANGUL MIEUM A
+3273;W;CIRCLED HANGUL PIEUP A
+3274;W;CIRCLED HANGUL SIOS A
+3275;W;CIRCLED HANGUL IEUNG A
+3276;W;CIRCLED HANGUL CIEUC A
+3277;W;CIRCLED HANGUL CHIEUCH A
+3278;W;CIRCLED HANGUL KHIEUKH A
+3279;W;CIRCLED HANGUL THIEUTH A
+327A;W;CIRCLED HANGUL PHIEUPH A
+327B;W;CIRCLED HANGUL HIEUH A
+327F;W;KOREAN STANDARD SYMBOL
+3280;W;CIRCLED IDEOGRAPH ONE
+3281;W;CIRCLED IDEOGRAPH TWO
+3282;W;CIRCLED IDEOGRAPH THREE
+3283;W;CIRCLED IDEOGRAPH FOUR
+3284;W;CIRCLED IDEOGRAPH FIVE
+3285;W;CIRCLED IDEOGRAPH SIX
+3286;W;CIRCLED IDEOGRAPH SEVEN
+3287;W;CIRCLED IDEOGRAPH EIGHT
+3288;W;CIRCLED IDEOGRAPH NINE
+3289;W;CIRCLED IDEOGRAPH TEN
+328A;W;CIRCLED IDEOGRAPH MOON
+328B;W;CIRCLED IDEOGRAPH FIRE
+328C;W;CIRCLED IDEOGRAPH WATER
+328D;W;CIRCLED IDEOGRAPH WOOD
+328E;W;CIRCLED IDEOGRAPH METAL
+328F;W;CIRCLED IDEOGRAPH EARTH
+3290;W;CIRCLED IDEOGRAPH SUN
+3291;W;CIRCLED IDEOGRAPH STOCK
+3292;W;CIRCLED IDEOGRAPH HAVE
+3293;W;CIRCLED IDEOGRAPH SOCIETY
+3294;W;CIRCLED IDEOGRAPH NAME
+3295;W;CIRCLED IDEOGRAPH SPECIAL
+3296;W;CIRCLED IDEOGRAPH FINANCIAL
+3297;W;CIRCLED IDEOGRAPH CONGRATULATION
+3298;W;CIRCLED IDEOGRAPH LABOR
+3299;W;CIRCLED IDEOGRAPH SECRET
+329A;W;CIRCLED IDEOGRAPH MALE
+329B;W;CIRCLED IDEOGRAPH FEMALE
+329C;W;CIRCLED IDEOGRAPH SUITABLE
+329D;W;CIRCLED IDEOGRAPH EXCELLENT
+329E;W;CIRCLED IDEOGRAPH PRINT
+329F;W;CIRCLED IDEOGRAPH ATTENTION
+32A0;W;CIRCLED IDEOGRAPH ITEM
+32A1;W;CIRCLED IDEOGRAPH REST
+32A2;W;CIRCLED IDEOGRAPH COPY
+32A3;W;CIRCLED IDEOGRAPH CORRECT
+32A4;W;CIRCLED IDEOGRAPH HIGH
+32A5;W;CIRCLED IDEOGRAPH CENTRE
+32A6;W;CIRCLED IDEOGRAPH LOW
+32A7;W;CIRCLED IDEOGRAPH LEFT
+32A8;W;CIRCLED IDEOGRAPH RIGHT
+32A9;W;CIRCLED IDEOGRAPH MEDICINE
+32AA;W;CIRCLED IDEOGRAPH RELIGION
+32AB;W;CIRCLED IDEOGRAPH STUDY
+32AC;W;CIRCLED IDEOGRAPH SUPERVISE
+32AD;W;CIRCLED IDEOGRAPH ENTERPRISE
+32AE;W;CIRCLED IDEOGRAPH RESOURCE
+32AF;W;CIRCLED IDEOGRAPH ALLIANCE
+32B0;W;CIRCLED IDEOGRAPH NIGHT
+32C0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32D0;W;CIRCLED KATAKANA A
+32D1;W;CIRCLED KATAKANA I
+32D2;W;CIRCLED KATAKANA U
+32D3;W;CIRCLED KATAKANA E
+32D4;W;CIRCLED KATAKANA O
+32D5;W;CIRCLED KATAKANA KA
+32D6;W;CIRCLED KATAKANA KI
+32D7;W;CIRCLED KATAKANA KU
+32D8;W;CIRCLED KATAKANA KE
+32D9;W;CIRCLED KATAKANA KO
+32DA;W;CIRCLED KATAKANA SA
+32DB;W;CIRCLED KATAKANA SI
+32DC;W;CIRCLED KATAKANA SU
+32DD;W;CIRCLED KATAKANA SE
+32DE;W;CIRCLED KATAKANA SO
+32DF;W;CIRCLED KATAKANA TA
+32E0;W;CIRCLED KATAKANA TI
+32E1;W;CIRCLED KATAKANA TU
+32E2;W;CIRCLED KATAKANA TE
+32E3;W;CIRCLED KATAKANA TO
+32E4;W;CIRCLED KATAKANA NA
+32E5;W;CIRCLED KATAKANA NI
+32E6;W;CIRCLED KATAKANA NU
+32E7;W;CIRCLED KATAKANA NE
+32E8;W;CIRCLED KATAKANA NO
+32E9;W;CIRCLED KATAKANA HA
+32EA;W;CIRCLED KATAKANA HI
+32EB;W;CIRCLED KATAKANA HU
+32EC;W;CIRCLED KATAKANA HE
+32ED;W;CIRCLED KATAKANA HO
+32EE;W;CIRCLED KATAKANA MA
+32EF;W;CIRCLED KATAKANA MI
+32F0;W;CIRCLED KATAKANA MU
+32F1;W;CIRCLED KATAKANA ME
+32F2;W;CIRCLED KATAKANA MO
+32F3;W;CIRCLED KATAKANA YA
+32F4;W;CIRCLED KATAKANA YU
+32F5;W;CIRCLED KATAKANA YO
+32F6;W;CIRCLED KATAKANA RA
+32F7;W;CIRCLED KATAKANA RI
+32F8;W;CIRCLED KATAKANA RU
+32F9;W;CIRCLED KATAKANA RE
+32FA;W;CIRCLED KATAKANA RO
+32FB;W;CIRCLED KATAKANA WA
+32FC;W;CIRCLED KATAKANA WI
+32FD;W;CIRCLED KATAKANA WE
+32FE;W;CIRCLED KATAKANA WO
+3300;W;SQUARE APAATO
+3301;W;SQUARE ARUHUA
+3302;W;SQUARE ANPEA
+3303;W;SQUARE AARU
+3304;W;SQUARE ININGU
+3305;W;SQUARE INTI
+3306;W;SQUARE UON
+3307;W;SQUARE ESUKUUDO
+3308;W;SQUARE EEKAA
+3309;W;SQUARE ONSU
+330A;W;SQUARE OOMU
+330B;W;SQUARE KAIRI
+330C;W;SQUARE KARATTO
+330D;W;SQUARE KARORII
+330E;W;SQUARE GARON
+330F;W;SQUARE GANMA
+3310;W;SQUARE GIGA
+3311;W;SQUARE GINII
+3312;W;SQUARE KYURII
+3313;W;SQUARE GIRUDAA
+3314;W;SQUARE KIRO
+3315;W;SQUARE KIROGURAMU
+3316;W;SQUARE KIROMEETORU
+3317;W;SQUARE KIROWATTO
+3318;W;SQUARE GURAMU
+3319;W;SQUARE GURAMUTON
+331A;W;SQUARE KURUZEIRO
+331B;W;SQUARE KUROONE
+331C;W;SQUARE KEESU
+331D;W;SQUARE KORUNA
+331E;W;SQUARE KOOPO
+331F;W;SQUARE SAIKURU
+3320;W;SQUARE SANTIIMU
+3321;W;SQUARE SIRINGU
+3322;W;SQUARE SENTI
+3323;W;SQUARE SENTO
+3324;W;SQUARE DAASU
+3325;W;SQUARE DESI
+3326;W;SQUARE DORU
+3327;W;SQUARE TON
+3328;W;SQUARE NANO
+3329;W;SQUARE NOTTO
+332A;W;SQUARE HAITU
+332B;W;SQUARE PAASENTO
+332C;W;SQUARE PAATU
+332D;W;SQUARE BAARERU
+332E;W;SQUARE PIASUTORU
+332F;W;SQUARE PIKURU
+3330;W;SQUARE PIKO
+3331;W;SQUARE BIRU
+3332;W;SQUARE HUARADDO
+3333;W;SQUARE HUIITO
+3334;W;SQUARE BUSSYERU
+3335;W;SQUARE HURAN
+3336;W;SQUARE HEKUTAARU
+3337;W;SQUARE PESO
+3338;W;SQUARE PENIHI
+3339;W;SQUARE HERUTU
+333A;W;SQUARE PENSU
+333B;W;SQUARE PEEZI
+333C;W;SQUARE BEETA
+333D;W;SQUARE POINTO
+333E;W;SQUARE BORUTO
+333F;W;SQUARE HON
+3340;W;SQUARE PONDO
+3341;W;SQUARE HOORU
+3342;W;SQUARE HOON
+3343;W;SQUARE MAIKURO
+3344;W;SQUARE MAIRU
+3345;W;SQUARE MAHHA
+3346;W;SQUARE MARUKU
+3347;W;SQUARE MANSYON
+3348;W;SQUARE MIKURON
+3349;W;SQUARE MIRI
+334A;W;SQUARE MIRIBAARU
+334B;W;SQUARE MEGA
+334C;W;SQUARE MEGATON
+334D;W;SQUARE MEETORU
+334E;W;SQUARE YAADO
+334F;W;SQUARE YAARU
+3350;W;SQUARE YUAN
+3351;W;SQUARE RITTORU
+3352;W;SQUARE RIRA
+3353;W;SQUARE RUPII
+3354;W;SQUARE RUUBURU
+3355;W;SQUARE REMU
+3356;W;SQUARE RENTOGEN
+3357;W;SQUARE WATTO
+3358;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;W;SQUARE HPA
+3372;W;SQUARE DA
+3373;W;SQUARE AU
+3374;W;SQUARE BAR
+3375;W;SQUARE OV
+3376;W;SQUARE PC
+337B;W;SQUARE ERA NAME HEISEI
+337C;W;SQUARE ERA NAME SYOUWA
+337D;W;SQUARE ERA NAME TAISYOU
+337E;W;SQUARE ERA NAME MEIZI
+337F;W;SQUARE CORPORATION
+3380;W;SQUARE PA AMPS
+3381;W;SQUARE NA
+3382;W;SQUARE MU A
+3383;W;SQUARE MA
+3384;W;SQUARE KA
+3385;W;SQUARE KB
+3386;W;SQUARE MB
+3387;W;SQUARE GB
+3388;W;SQUARE CAL
+3389;W;SQUARE KCAL
+338A;W;SQUARE PF
+338B;W;SQUARE NF
+338C;W;SQUARE MU F
+338D;W;SQUARE MU G
+338E;W;SQUARE MG
+338F;W;SQUARE KG
+3390;W;SQUARE HZ
+3391;W;SQUARE KHZ
+3392;W;SQUARE MHZ
+3393;W;SQUARE GHZ
+3394;W;SQUARE THZ
+3395;W;SQUARE MU L
+3396;W;SQUARE ML
+3397;W;SQUARE DL
+3398;W;SQUARE KL
+3399;W;SQUARE FM
+339A;W;SQUARE NM
+339B;W;SQUARE MU M
+339C;W;SQUARE MM
+339D;W;SQUARE CM
+339E;W;SQUARE KM
+339F;W;SQUARE MM SQUARED
+33A0;W;SQUARE CM SQUARED
+33A1;W;SQUARE M SQUARED
+33A2;W;SQUARE KM SQUARED
+33A3;W;SQUARE MM CUBED
+33A4;W;SQUARE CM CUBED
+33A5;W;SQUARE M CUBED
+33A6;W;SQUARE KM CUBED
+33A7;W;SQUARE M OVER S
+33A8;W;SQUARE M OVER S SQUARED
+33A9;W;SQUARE PA
+33AA;W;SQUARE KPA
+33AB;W;SQUARE MPA
+33AC;W;SQUARE GPA
+33AD;W;SQUARE RAD
+33AE;W;SQUARE RAD OVER S
+33AF;W;SQUARE RAD OVER S SQUARED
+33B0;W;SQUARE PS
+33B1;W;SQUARE NS
+33B2;W;SQUARE MU S
+33B3;W;SQUARE MS
+33B4;W;SQUARE PV
+33B5;W;SQUARE NV
+33B6;W;SQUARE MU V
+33B7;W;SQUARE MV
+33B8;W;SQUARE KV
+33B9;W;SQUARE MV MEGA
+33BA;W;SQUARE PW
+33BB;W;SQUARE NW
+33BC;W;SQUARE MU W
+33BD;W;SQUARE MW
+33BE;W;SQUARE KW
+33BF;W;SQUARE MW MEGA
+33C0;W;SQUARE K OHM
+33C1;W;SQUARE M OHM
+33C2;W;SQUARE AM
+33C3;W;SQUARE BQ
+33C4;W;SQUARE CC
+33C5;W;SQUARE CD
+33C6;W;SQUARE C OVER KG
+33C7;W;SQUARE CO
+33C8;W;SQUARE DB
+33C9;W;SQUARE GY
+33CA;W;SQUARE HA
+33CB;W;SQUARE HP
+33CC;W;SQUARE IN
+33CD;W;SQUARE KK
+33CE;W;SQUARE KM CAPITAL
+33CF;W;SQUARE KT
+33D0;W;SQUARE LM
+33D1;W;SQUARE LN
+33D2;W;SQUARE LOG
+33D3;W;SQUARE LX
+33D4;W;SQUARE MB SMALL
+33D5;W;SQUARE MIL
+33D6;W;SQUARE MOL
+33D7;W;SQUARE PH
+33D8;W;SQUARE PM
+33D9;W;SQUARE PPM
+33DA;W;SQUARE PR
+33DB;W;SQUARE SR
+33DC;W;SQUARE SV
+33DD;W;SQUARE WB
+33E0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+3400;W;<CJK Ideograph Extension A, First>
+4DB5;W;<CJK Ideograph Extension A, Last>
+4E00;W;<CJK Ideograph, First>
+9FA5;W;<CJK Ideograph, Last>
+A000;W;YI SYLLABLE IT
+A001;W;YI SYLLABLE IX
+A002;W;YI SYLLABLE I
+A003;W;YI SYLLABLE IP
+A004;W;YI SYLLABLE IET
+A005;W;YI SYLLABLE IEX
+A006;W;YI SYLLABLE IE
+A007;W;YI SYLLABLE IEP
+A008;W;YI SYLLABLE AT
+A009;W;YI SYLLABLE AX
+A00A;W;YI SYLLABLE A
+A00B;W;YI SYLLABLE AP
+A00C;W;YI SYLLABLE UOX
+A00D;W;YI SYLLABLE UO
+A00E;W;YI SYLLABLE UOP
+A00F;W;YI SYLLABLE OT
+A010;W;YI SYLLABLE OX
+A011;W;YI SYLLABLE O
+A012;W;YI SYLLABLE OP
+A013;W;YI SYLLABLE EX
+A014;W;YI SYLLABLE E
+A015;W;YI SYLLABLE WU
+A016;W;YI SYLLABLE BIT
+A017;W;YI SYLLABLE BIX
+A018;W;YI SYLLABLE BI
+A019;W;YI SYLLABLE BIP
+A01A;W;YI SYLLABLE BIET
+A01B;W;YI SYLLABLE BIEX
+A01C;W;YI SYLLABLE BIE
+A01D;W;YI SYLLABLE BIEP
+A01E;W;YI SYLLABLE BAT
+A01F;W;YI SYLLABLE BAX
+A020;W;YI SYLLABLE BA
+A021;W;YI SYLLABLE BAP
+A022;W;YI SYLLABLE BUOX
+A023;W;YI SYLLABLE BUO
+A024;W;YI SYLLABLE BUOP
+A025;W;YI SYLLABLE BOT
+A026;W;YI SYLLABLE BOX
+A027;W;YI SYLLABLE BO
+A028;W;YI SYLLABLE BOP
+A029;W;YI SYLLABLE BEX
+A02A;W;YI SYLLABLE BE
+A02B;W;YI SYLLABLE BEP
+A02C;W;YI SYLLABLE BUT
+A02D;W;YI SYLLABLE BUX
+A02E;W;YI SYLLABLE BU
+A02F;W;YI SYLLABLE BUP
+A030;W;YI SYLLABLE BURX
+A031;W;YI SYLLABLE BUR
+A032;W;YI SYLLABLE BYT
+A033;W;YI SYLLABLE BYX
+A034;W;YI SYLLABLE BY
+A035;W;YI SYLLABLE BYP
+A036;W;YI SYLLABLE BYRX
+A037;W;YI SYLLABLE BYR
+A038;W;YI SYLLABLE PIT
+A039;W;YI SYLLABLE PIX
+A03A;W;YI SYLLABLE PI
+A03B;W;YI SYLLABLE PIP
+A03C;W;YI SYLLABLE PIEX
+A03D;W;YI SYLLABLE PIE
+A03E;W;YI SYLLABLE PIEP
+A03F;W;YI SYLLABLE PAT
+A040;W;YI SYLLABLE PAX
+A041;W;YI SYLLABLE PA
+A042;W;YI SYLLABLE PAP
+A043;W;YI SYLLABLE PUOX
+A044;W;YI SYLLABLE PUO
+A045;W;YI SYLLABLE PUOP
+A046;W;YI SYLLABLE POT
+A047;W;YI SYLLABLE POX
+A048;W;YI SYLLABLE PO
+A049;W;YI SYLLABLE POP
+A04A;W;YI SYLLABLE PUT
+A04B;W;YI SYLLABLE PUX
+A04C;W;YI SYLLABLE PU
+A04D;W;YI SYLLABLE PUP
+A04E;W;YI SYLLABLE PURX
+A04F;W;YI SYLLABLE PUR
+A050;W;YI SYLLABLE PYT
+A051;W;YI SYLLABLE PYX
+A052;W;YI SYLLABLE PY
+A053;W;YI SYLLABLE PYP
+A054;W;YI SYLLABLE PYRX
+A055;W;YI SYLLABLE PYR
+A056;W;YI SYLLABLE BBIT
+A057;W;YI SYLLABLE BBIX
+A058;W;YI SYLLABLE BBI
+A059;W;YI SYLLABLE BBIP
+A05A;W;YI SYLLABLE BBIET
+A05B;W;YI SYLLABLE BBIEX
+A05C;W;YI SYLLABLE BBIE
+A05D;W;YI SYLLABLE BBIEP
+A05E;W;YI SYLLABLE BBAT
+A05F;W;YI SYLLABLE BBAX
+A060;W;YI SYLLABLE BBA
+A061;W;YI SYLLABLE BBAP
+A062;W;YI SYLLABLE BBUOX
+A063;W;YI SYLLABLE BBUO
+A064;W;YI SYLLABLE BBUOP
+A065;W;YI SYLLABLE BBOT
+A066;W;YI SYLLABLE BBOX
+A067;W;YI SYLLABLE BBO
+A068;W;YI SYLLABLE BBOP
+A069;W;YI SYLLABLE BBEX
+A06A;W;YI SYLLABLE BBE
+A06B;W;YI SYLLABLE BBEP
+A06C;W;YI SYLLABLE BBUT
+A06D;W;YI SYLLABLE BBUX
+A06E;W;YI SYLLABLE BBU
+A06F;W;YI SYLLABLE BBUP
+A070;W;YI SYLLABLE BBURX
+A071;W;YI SYLLABLE BBUR
+A072;W;YI SYLLABLE BBYT
+A073;W;YI SYLLABLE BBYX
+A074;W;YI SYLLABLE BBY
+A075;W;YI SYLLABLE BBYP
+A076;W;YI SYLLABLE NBIT
+A077;W;YI SYLLABLE NBIX
+A078;W;YI SYLLABLE NBI
+A079;W;YI SYLLABLE NBIP
+A07A;W;YI SYLLABLE NBIEX
+A07B;W;YI SYLLABLE NBIE
+A07C;W;YI SYLLABLE NBIEP
+A07D;W;YI SYLLABLE NBAT
+A07E;W;YI SYLLABLE NBAX
+A07F;W;YI SYLLABLE NBA
+A080;W;YI SYLLABLE NBAP
+A081;W;YI SYLLABLE NBOT
+A082;W;YI SYLLABLE NBOX
+A083;W;YI SYLLABLE NBO
+A084;W;YI SYLLABLE NBOP
+A085;W;YI SYLLABLE NBUT
+A086;W;YI SYLLABLE NBUX
+A087;W;YI SYLLABLE NBU
+A088;W;YI SYLLABLE NBUP
+A089;W;YI SYLLABLE NBURX
+A08A;W;YI SYLLABLE NBUR
+A08B;W;YI SYLLABLE NBYT
+A08C;W;YI SYLLABLE NBYX
+A08D;W;YI SYLLABLE NBY
+A08E;W;YI SYLLABLE NBYP
+A08F;W;YI SYLLABLE NBYRX
+A090;W;YI SYLLABLE NBYR
+A091;W;YI SYLLABLE HMIT
+A092;W;YI SYLLABLE HMIX
+A093;W;YI SYLLABLE HMI
+A094;W;YI SYLLABLE HMIP
+A095;W;YI SYLLABLE HMIEX
+A096;W;YI SYLLABLE HMIE
+A097;W;YI SYLLABLE HMIEP
+A098;W;YI SYLLABLE HMAT
+A099;W;YI SYLLABLE HMAX
+A09A;W;YI SYLLABLE HMA
+A09B;W;YI SYLLABLE HMAP
+A09C;W;YI SYLLABLE HMUOX
+A09D;W;YI SYLLABLE HMUO
+A09E;W;YI SYLLABLE HMUOP
+A09F;W;YI SYLLABLE HMOT
+A0A0;W;YI SYLLABLE HMOX
+A0A1;W;YI SYLLABLE HMO
+A0A2;W;YI SYLLABLE HMOP
+A0A3;W;YI SYLLABLE HMUT
+A0A4;W;YI SYLLABLE HMUX
+A0A5;W;YI SYLLABLE HMU
+A0A6;W;YI SYLLABLE HMUP
+A0A7;W;YI SYLLABLE HMURX
+A0A8;W;YI SYLLABLE HMUR
+A0A9;W;YI SYLLABLE HMYX
+A0AA;W;YI SYLLABLE HMY
+A0AB;W;YI SYLLABLE HMYP
+A0AC;W;YI SYLLABLE HMYRX
+A0AD;W;YI SYLLABLE HMYR
+A0AE;W;YI SYLLABLE MIT
+A0AF;W;YI SYLLABLE MIX
+A0B0;W;YI SYLLABLE MI
+A0B1;W;YI SYLLABLE MIP
+A0B2;W;YI SYLLABLE MIEX
+A0B3;W;YI SYLLABLE MIE
+A0B4;W;YI SYLLABLE MIEP
+A0B5;W;YI SYLLABLE MAT
+A0B6;W;YI SYLLABLE MAX
+A0B7;W;YI SYLLABLE MA
+A0B8;W;YI SYLLABLE MAP
+A0B9;W;YI SYLLABLE MUOT
+A0BA;W;YI SYLLABLE MUOX
+A0BB;W;YI SYLLABLE MUO
+A0BC;W;YI SYLLABLE MUOP
+A0BD;W;YI SYLLABLE MOT
+A0BE;W;YI SYLLABLE MOX
+A0BF;W;YI SYLLABLE MO
+A0C0;W;YI SYLLABLE MOP
+A0C1;W;YI SYLLABLE MEX
+A0C2;W;YI SYLLABLE ME
+A0C3;W;YI SYLLABLE MUT
+A0C4;W;YI SYLLABLE MUX
+A0C5;W;YI SYLLABLE MU
+A0C6;W;YI SYLLABLE MUP
+A0C7;W;YI SYLLABLE MURX
+A0C8;W;YI SYLLABLE MUR
+A0C9;W;YI SYLLABLE MYT
+A0CA;W;YI SYLLABLE MYX
+A0CB;W;YI SYLLABLE MY
+A0CC;W;YI SYLLABLE MYP
+A0CD;W;YI SYLLABLE FIT
+A0CE;W;YI SYLLABLE FIX
+A0CF;W;YI SYLLABLE FI
+A0D0;W;YI SYLLABLE FIP
+A0D1;W;YI SYLLABLE FAT
+A0D2;W;YI SYLLABLE FAX
+A0D3;W;YI SYLLABLE FA
+A0D4;W;YI SYLLABLE FAP
+A0D5;W;YI SYLLABLE FOX
+A0D6;W;YI SYLLABLE FO
+A0D7;W;YI SYLLABLE FOP
+A0D8;W;YI SYLLABLE FUT
+A0D9;W;YI SYLLABLE FUX
+A0DA;W;YI SYLLABLE FU
+A0DB;W;YI SYLLABLE FUP
+A0DC;W;YI SYLLABLE FURX
+A0DD;W;YI SYLLABLE FUR
+A0DE;W;YI SYLLABLE FYT
+A0DF;W;YI SYLLABLE FYX
+A0E0;W;YI SYLLABLE FY
+A0E1;W;YI SYLLABLE FYP
+A0E2;W;YI SYLLABLE VIT
+A0E3;W;YI SYLLABLE VIX
+A0E4;W;YI SYLLABLE VI
+A0E5;W;YI SYLLABLE VIP
+A0E6;W;YI SYLLABLE VIET
+A0E7;W;YI SYLLABLE VIEX
+A0E8;W;YI SYLLABLE VIE
+A0E9;W;YI SYLLABLE VIEP
+A0EA;W;YI SYLLABLE VAT
+A0EB;W;YI SYLLABLE VAX
+A0EC;W;YI SYLLABLE VA
+A0ED;W;YI SYLLABLE VAP
+A0EE;W;YI SYLLABLE VOT
+A0EF;W;YI SYLLABLE VOX
+A0F0;W;YI SYLLABLE VO
+A0F1;W;YI SYLLABLE VOP
+A0F2;W;YI SYLLABLE VEX
+A0F3;W;YI SYLLABLE VEP
+A0F4;W;YI SYLLABLE VUT
+A0F5;W;YI SYLLABLE VUX
+A0F6;W;YI SYLLABLE VU
+A0F7;W;YI SYLLABLE VUP
+A0F8;W;YI SYLLABLE VURX
+A0F9;W;YI SYLLABLE VUR
+A0FA;W;YI SYLLABLE VYT
+A0FB;W;YI SYLLABLE VYX
+A0FC;W;YI SYLLABLE VY
+A0FD;W;YI SYLLABLE VYP
+A0FE;W;YI SYLLABLE VYRX
+A0FF;W;YI SYLLABLE VYR
+A100;W;YI SYLLABLE DIT
+A101;W;YI SYLLABLE DIX
+A102;W;YI SYLLABLE DI
+A103;W;YI SYLLABLE DIP
+A104;W;YI SYLLABLE DIEX
+A105;W;YI SYLLABLE DIE
+A106;W;YI SYLLABLE DIEP
+A107;W;YI SYLLABLE DAT
+A108;W;YI SYLLABLE DAX
+A109;W;YI SYLLABLE DA
+A10A;W;YI SYLLABLE DAP
+A10B;W;YI SYLLABLE DUOX
+A10C;W;YI SYLLABLE DUO
+A10D;W;YI SYLLABLE DOT
+A10E;W;YI SYLLABLE DOX
+A10F;W;YI SYLLABLE DO
+A110;W;YI SYLLABLE DOP
+A111;W;YI SYLLABLE DEX
+A112;W;YI SYLLABLE DE
+A113;W;YI SYLLABLE DEP
+A114;W;YI SYLLABLE DUT
+A115;W;YI SYLLABLE DUX
+A116;W;YI SYLLABLE DU
+A117;W;YI SYLLABLE DUP
+A118;W;YI SYLLABLE DURX
+A119;W;YI SYLLABLE DUR
+A11A;W;YI SYLLABLE TIT
+A11B;W;YI SYLLABLE TIX
+A11C;W;YI SYLLABLE TI
+A11D;W;YI SYLLABLE TIP
+A11E;W;YI SYLLABLE TIEX
+A11F;W;YI SYLLABLE TIE
+A120;W;YI SYLLABLE TIEP
+A121;W;YI SYLLABLE TAT
+A122;W;YI SYLLABLE TAX
+A123;W;YI SYLLABLE TA
+A124;W;YI SYLLABLE TAP
+A125;W;YI SYLLABLE TUOT
+A126;W;YI SYLLABLE TUOX
+A127;W;YI SYLLABLE TUO
+A128;W;YI SYLLABLE TUOP
+A129;W;YI SYLLABLE TOT
+A12A;W;YI SYLLABLE TOX
+A12B;W;YI SYLLABLE TO
+A12C;W;YI SYLLABLE TOP
+A12D;W;YI SYLLABLE TEX
+A12E;W;YI SYLLABLE TE
+A12F;W;YI SYLLABLE TEP
+A130;W;YI SYLLABLE TUT
+A131;W;YI SYLLABLE TUX
+A132;W;YI SYLLABLE TU
+A133;W;YI SYLLABLE TUP
+A134;W;YI SYLLABLE TURX
+A135;W;YI SYLLABLE TUR
+A136;W;YI SYLLABLE DDIT
+A137;W;YI SYLLABLE DDIX
+A138;W;YI SYLLABLE DDI
+A139;W;YI SYLLABLE DDIP
+A13A;W;YI SYLLABLE DDIEX
+A13B;W;YI SYLLABLE DDIE
+A13C;W;YI SYLLABLE DDIEP
+A13D;W;YI SYLLABLE DDAT
+A13E;W;YI SYLLABLE DDAX
+A13F;W;YI SYLLABLE DDA
+A140;W;YI SYLLABLE DDAP
+A141;W;YI SYLLABLE DDUOX
+A142;W;YI SYLLABLE DDUO
+A143;W;YI SYLLABLE DDUOP
+A144;W;YI SYLLABLE DDOT
+A145;W;YI SYLLABLE DDOX
+A146;W;YI SYLLABLE DDO
+A147;W;YI SYLLABLE DDOP
+A148;W;YI SYLLABLE DDEX
+A149;W;YI SYLLABLE DDE
+A14A;W;YI SYLLABLE DDEP
+A14B;W;YI SYLLABLE DDUT
+A14C;W;YI SYLLABLE DDUX
+A14D;W;YI SYLLABLE DDU
+A14E;W;YI SYLLABLE DDUP
+A14F;W;YI SYLLABLE DDURX
+A150;W;YI SYLLABLE DDUR
+A151;W;YI SYLLABLE NDIT
+A152;W;YI SYLLABLE NDIX
+A153;W;YI SYLLABLE NDI
+A154;W;YI SYLLABLE NDIP
+A155;W;YI SYLLABLE NDIEX
+A156;W;YI SYLLABLE NDIE
+A157;W;YI SYLLABLE NDAT
+A158;W;YI SYLLABLE NDAX
+A159;W;YI SYLLABLE NDA
+A15A;W;YI SYLLABLE NDAP
+A15B;W;YI SYLLABLE NDOT
+A15C;W;YI SYLLABLE NDOX
+A15D;W;YI SYLLABLE NDO
+A15E;W;YI SYLLABLE NDOP
+A15F;W;YI SYLLABLE NDEX
+A160;W;YI SYLLABLE NDE
+A161;W;YI SYLLABLE NDEP
+A162;W;YI SYLLABLE NDUT
+A163;W;YI SYLLABLE NDUX
+A164;W;YI SYLLABLE NDU
+A165;W;YI SYLLABLE NDUP
+A166;W;YI SYLLABLE NDURX
+A167;W;YI SYLLABLE NDUR
+A168;W;YI SYLLABLE HNIT
+A169;W;YI SYLLABLE HNIX
+A16A;W;YI SYLLABLE HNI
+A16B;W;YI SYLLABLE HNIP
+A16C;W;YI SYLLABLE HNIET
+A16D;W;YI SYLLABLE HNIEX
+A16E;W;YI SYLLABLE HNIE
+A16F;W;YI SYLLABLE HNIEP
+A170;W;YI SYLLABLE HNAT
+A171;W;YI SYLLABLE HNAX
+A172;W;YI SYLLABLE HNA
+A173;W;YI SYLLABLE HNAP
+A174;W;YI SYLLABLE HNUOX
+A175;W;YI SYLLABLE HNUO
+A176;W;YI SYLLABLE HNOT
+A177;W;YI SYLLABLE HNOX
+A178;W;YI SYLLABLE HNOP
+A179;W;YI SYLLABLE HNEX
+A17A;W;YI SYLLABLE HNE
+A17B;W;YI SYLLABLE HNEP
+A17C;W;YI SYLLABLE HNUT
+A17D;W;YI SYLLABLE NIT
+A17E;W;YI SYLLABLE NIX
+A17F;W;YI SYLLABLE NI
+A180;W;YI SYLLABLE NIP
+A181;W;YI SYLLABLE NIEX
+A182;W;YI SYLLABLE NIE
+A183;W;YI SYLLABLE NIEP
+A184;W;YI SYLLABLE NAX
+A185;W;YI SYLLABLE NA
+A186;W;YI SYLLABLE NAP
+A187;W;YI SYLLABLE NUOX
+A188;W;YI SYLLABLE NUO
+A189;W;YI SYLLABLE NUOP
+A18A;W;YI SYLLABLE NOT
+A18B;W;YI SYLLABLE NOX
+A18C;W;YI SYLLABLE NO
+A18D;W;YI SYLLABLE NOP
+A18E;W;YI SYLLABLE NEX
+A18F;W;YI SYLLABLE NE
+A190;W;YI SYLLABLE NEP
+A191;W;YI SYLLABLE NUT
+A192;W;YI SYLLABLE NUX
+A193;W;YI SYLLABLE NU
+A194;W;YI SYLLABLE NUP
+A195;W;YI SYLLABLE NURX
+A196;W;YI SYLLABLE NUR
+A197;W;YI SYLLABLE HLIT
+A198;W;YI SYLLABLE HLIX
+A199;W;YI SYLLABLE HLI
+A19A;W;YI SYLLABLE HLIP
+A19B;W;YI SYLLABLE HLIEX
+A19C;W;YI SYLLABLE HLIE
+A19D;W;YI SYLLABLE HLIEP
+A19E;W;YI SYLLABLE HLAT
+A19F;W;YI SYLLABLE HLAX
+A1A0;W;YI SYLLABLE HLA
+A1A1;W;YI SYLLABLE HLAP
+A1A2;W;YI SYLLABLE HLUOX
+A1A3;W;YI SYLLABLE HLUO
+A1A4;W;YI SYLLABLE HLUOP
+A1A5;W;YI SYLLABLE HLOX
+A1A6;W;YI SYLLABLE HLO
+A1A7;W;YI SYLLABLE HLOP
+A1A8;W;YI SYLLABLE HLEX
+A1A9;W;YI SYLLABLE HLE
+A1AA;W;YI SYLLABLE HLEP
+A1AB;W;YI SYLLABLE HLUT
+A1AC;W;YI SYLLABLE HLUX
+A1AD;W;YI SYLLABLE HLU
+A1AE;W;YI SYLLABLE HLUP
+A1AF;W;YI SYLLABLE HLURX
+A1B0;W;YI SYLLABLE HLUR
+A1B1;W;YI SYLLABLE HLYT
+A1B2;W;YI SYLLABLE HLYX
+A1B3;W;YI SYLLABLE HLY
+A1B4;W;YI SYLLABLE HLYP
+A1B5;W;YI SYLLABLE HLYRX
+A1B6;W;YI SYLLABLE HLYR
+A1B7;W;YI SYLLABLE LIT
+A1B8;W;YI SYLLABLE LIX
+A1B9;W;YI SYLLABLE LI
+A1BA;W;YI SYLLABLE LIP
+A1BB;W;YI SYLLABLE LIET
+A1BC;W;YI SYLLABLE LIEX
+A1BD;W;YI SYLLABLE LIE
+A1BE;W;YI SYLLABLE LIEP
+A1BF;W;YI SYLLABLE LAT
+A1C0;W;YI SYLLABLE LAX
+A1C1;W;YI SYLLABLE LA
+A1C2;W;YI SYLLABLE LAP
+A1C3;W;YI SYLLABLE LUOT
+A1C4;W;YI SYLLABLE LUOX
+A1C5;W;YI SYLLABLE LUO
+A1C6;W;YI SYLLABLE LUOP
+A1C7;W;YI SYLLABLE LOT
+A1C8;W;YI SYLLABLE LOX
+A1C9;W;YI SYLLABLE LO
+A1CA;W;YI SYLLABLE LOP
+A1CB;W;YI SYLLABLE LEX
+A1CC;W;YI SYLLABLE LE
+A1CD;W;YI SYLLABLE LEP
+A1CE;W;YI SYLLABLE LUT
+A1CF;W;YI SYLLABLE LUX
+A1D0;W;YI SYLLABLE LU
+A1D1;W;YI SYLLABLE LUP
+A1D2;W;YI SYLLABLE LURX
+A1D3;W;YI SYLLABLE LUR
+A1D4;W;YI SYLLABLE LYT
+A1D5;W;YI SYLLABLE LYX
+A1D6;W;YI SYLLABLE LY
+A1D7;W;YI SYLLABLE LYP
+A1D8;W;YI SYLLABLE LYRX
+A1D9;W;YI SYLLABLE LYR
+A1DA;W;YI SYLLABLE GIT
+A1DB;W;YI SYLLABLE GIX
+A1DC;W;YI SYLLABLE GI
+A1DD;W;YI SYLLABLE GIP
+A1DE;W;YI SYLLABLE GIET
+A1DF;W;YI SYLLABLE GIEX
+A1E0;W;YI SYLLABLE GIE
+A1E1;W;YI SYLLABLE GIEP
+A1E2;W;YI SYLLABLE GAT
+A1E3;W;YI SYLLABLE GAX
+A1E4;W;YI SYLLABLE GA
+A1E5;W;YI SYLLABLE GAP
+A1E6;W;YI SYLLABLE GUOT
+A1E7;W;YI SYLLABLE GUOX
+A1E8;W;YI SYLLABLE GUO
+A1E9;W;YI SYLLABLE GUOP
+A1EA;W;YI SYLLABLE GOT
+A1EB;W;YI SYLLABLE GOX
+A1EC;W;YI SYLLABLE GO
+A1ED;W;YI SYLLABLE GOP
+A1EE;W;YI SYLLABLE GET
+A1EF;W;YI SYLLABLE GEX
+A1F0;W;YI SYLLABLE GE
+A1F1;W;YI SYLLABLE GEP
+A1F2;W;YI SYLLABLE GUT
+A1F3;W;YI SYLLABLE GUX
+A1F4;W;YI SYLLABLE GU
+A1F5;W;YI SYLLABLE GUP
+A1F6;W;YI SYLLABLE GURX
+A1F7;W;YI SYLLABLE GUR
+A1F8;W;YI SYLLABLE KIT
+A1F9;W;YI SYLLABLE KIX
+A1FA;W;YI SYLLABLE KI
+A1FB;W;YI SYLLABLE KIP
+A1FC;W;YI SYLLABLE KIEX
+A1FD;W;YI SYLLABLE KIE
+A1FE;W;YI SYLLABLE KIEP
+A1FF;W;YI SYLLABLE KAT
+A200;W;YI SYLLABLE KAX
+A201;W;YI SYLLABLE KA
+A202;W;YI SYLLABLE KAP
+A203;W;YI SYLLABLE KUOX
+A204;W;YI SYLLABLE KUO
+A205;W;YI SYLLABLE KUOP
+A206;W;YI SYLLABLE KOT
+A207;W;YI SYLLABLE KOX
+A208;W;YI SYLLABLE KO
+A209;W;YI SYLLABLE KOP
+A20A;W;YI SYLLABLE KET
+A20B;W;YI SYLLABLE KEX
+A20C;W;YI SYLLABLE KE
+A20D;W;YI SYLLABLE KEP
+A20E;W;YI SYLLABLE KUT
+A20F;W;YI SYLLABLE KUX
+A210;W;YI SYLLABLE KU
+A211;W;YI SYLLABLE KUP
+A212;W;YI SYLLABLE KURX
+A213;W;YI SYLLABLE KUR
+A214;W;YI SYLLABLE GGIT
+A215;W;YI SYLLABLE GGIX
+A216;W;YI SYLLABLE GGI
+A217;W;YI SYLLABLE GGIEX
+A218;W;YI SYLLABLE GGIE
+A219;W;YI SYLLABLE GGIEP
+A21A;W;YI SYLLABLE GGAT
+A21B;W;YI SYLLABLE GGAX
+A21C;W;YI SYLLABLE GGA
+A21D;W;YI SYLLABLE GGAP
+A21E;W;YI SYLLABLE GGUOT
+A21F;W;YI SYLLABLE GGUOX
+A220;W;YI SYLLABLE GGUO
+A221;W;YI SYLLABLE GGUOP
+A222;W;YI SYLLABLE GGOT
+A223;W;YI SYLLABLE GGOX
+A224;W;YI SYLLABLE GGO
+A225;W;YI SYLLABLE GGOP
+A226;W;YI SYLLABLE GGET
+A227;W;YI SYLLABLE GGEX
+A228;W;YI SYLLABLE GGE
+A229;W;YI SYLLABLE GGEP
+A22A;W;YI SYLLABLE GGUT
+A22B;W;YI SYLLABLE GGUX
+A22C;W;YI SYLLABLE GGU
+A22D;W;YI SYLLABLE GGUP
+A22E;W;YI SYLLABLE GGURX
+A22F;W;YI SYLLABLE GGUR
+A230;W;YI SYLLABLE MGIEX
+A231;W;YI SYLLABLE MGIE
+A232;W;YI SYLLABLE MGAT
+A233;W;YI SYLLABLE MGAX
+A234;W;YI SYLLABLE MGA
+A235;W;YI SYLLABLE MGAP
+A236;W;YI SYLLABLE MGUOX
+A237;W;YI SYLLABLE MGUO
+A238;W;YI SYLLABLE MGUOP
+A239;W;YI SYLLABLE MGOT
+A23A;W;YI SYLLABLE MGOX
+A23B;W;YI SYLLABLE MGO
+A23C;W;YI SYLLABLE MGOP
+A23D;W;YI SYLLABLE MGEX
+A23E;W;YI SYLLABLE MGE
+A23F;W;YI SYLLABLE MGEP
+A240;W;YI SYLLABLE MGUT
+A241;W;YI SYLLABLE MGUX
+A242;W;YI SYLLABLE MGU
+A243;W;YI SYLLABLE MGUP
+A244;W;YI SYLLABLE MGURX
+A245;W;YI SYLLABLE MGUR
+A246;W;YI SYLLABLE HXIT
+A247;W;YI SYLLABLE HXIX
+A248;W;YI SYLLABLE HXI
+A249;W;YI SYLLABLE HXIP
+A24A;W;YI SYLLABLE HXIET
+A24B;W;YI SYLLABLE HXIEX
+A24C;W;YI SYLLABLE HXIE
+A24D;W;YI SYLLABLE HXIEP
+A24E;W;YI SYLLABLE HXAT
+A24F;W;YI SYLLABLE HXAX
+A250;W;YI SYLLABLE HXA
+A251;W;YI SYLLABLE HXAP
+A252;W;YI SYLLABLE HXUOT
+A253;W;YI SYLLABLE HXUOX
+A254;W;YI SYLLABLE HXUO
+A255;W;YI SYLLABLE HXUOP
+A256;W;YI SYLLABLE HXOT
+A257;W;YI SYLLABLE HXOX
+A258;W;YI SYLLABLE HXO
+A259;W;YI SYLLABLE HXOP
+A25A;W;YI SYLLABLE HXEX
+A25B;W;YI SYLLABLE HXE
+A25C;W;YI SYLLABLE HXEP
+A25D;W;YI SYLLABLE NGIEX
+A25E;W;YI SYLLABLE NGIE
+A25F;W;YI SYLLABLE NGIEP
+A260;W;YI SYLLABLE NGAT
+A261;W;YI SYLLABLE NGAX
+A262;W;YI SYLLABLE NGA
+A263;W;YI SYLLABLE NGAP
+A264;W;YI SYLLABLE NGUOT
+A265;W;YI SYLLABLE NGUOX
+A266;W;YI SYLLABLE NGUO
+A267;W;YI SYLLABLE NGOT
+A268;W;YI SYLLABLE NGOX
+A269;W;YI SYLLABLE NGO
+A26A;W;YI SYLLABLE NGOP
+A26B;W;YI SYLLABLE NGEX
+A26C;W;YI SYLLABLE NGE
+A26D;W;YI SYLLABLE NGEP
+A26E;W;YI SYLLABLE HIT
+A26F;W;YI SYLLABLE HIEX
+A270;W;YI SYLLABLE HIE
+A271;W;YI SYLLABLE HAT
+A272;W;YI SYLLABLE HAX
+A273;W;YI SYLLABLE HA
+A274;W;YI SYLLABLE HAP
+A275;W;YI SYLLABLE HUOT
+A276;W;YI SYLLABLE HUOX
+A277;W;YI SYLLABLE HUO
+A278;W;YI SYLLABLE HUOP
+A279;W;YI SYLLABLE HOT
+A27A;W;YI SYLLABLE HOX
+A27B;W;YI SYLLABLE HO
+A27C;W;YI SYLLABLE HOP
+A27D;W;YI SYLLABLE HEX
+A27E;W;YI SYLLABLE HE
+A27F;W;YI SYLLABLE HEP
+A280;W;YI SYLLABLE WAT
+A281;W;YI SYLLABLE WAX
+A282;W;YI SYLLABLE WA
+A283;W;YI SYLLABLE WAP
+A284;W;YI SYLLABLE WUOX
+A285;W;YI SYLLABLE WUO
+A286;W;YI SYLLABLE WUOP
+A287;W;YI SYLLABLE WOX
+A288;W;YI SYLLABLE WO
+A289;W;YI SYLLABLE WOP
+A28A;W;YI SYLLABLE WEX
+A28B;W;YI SYLLABLE WE
+A28C;W;YI SYLLABLE WEP
+A28D;W;YI SYLLABLE ZIT
+A28E;W;YI SYLLABLE ZIX
+A28F;W;YI SYLLABLE ZI
+A290;W;YI SYLLABLE ZIP
+A291;W;YI SYLLABLE ZIEX
+A292;W;YI SYLLABLE ZIE
+A293;W;YI SYLLABLE ZIEP
+A294;W;YI SYLLABLE ZAT
+A295;W;YI SYLLABLE ZAX
+A296;W;YI SYLLABLE ZA
+A297;W;YI SYLLABLE ZAP
+A298;W;YI SYLLABLE ZUOX
+A299;W;YI SYLLABLE ZUO
+A29A;W;YI SYLLABLE ZUOP
+A29B;W;YI SYLLABLE ZOT
+A29C;W;YI SYLLABLE ZOX
+A29D;W;YI SYLLABLE ZO
+A29E;W;YI SYLLABLE ZOP
+A29F;W;YI SYLLABLE ZEX
+A2A0;W;YI SYLLABLE ZE
+A2A1;W;YI SYLLABLE ZEP
+A2A2;W;YI SYLLABLE ZUT
+A2A3;W;YI SYLLABLE ZUX
+A2A4;W;YI SYLLABLE ZU
+A2A5;W;YI SYLLABLE ZUP
+A2A6;W;YI SYLLABLE ZURX
+A2A7;W;YI SYLLABLE ZUR
+A2A8;W;YI SYLLABLE ZYT
+A2A9;W;YI SYLLABLE ZYX
+A2AA;W;YI SYLLABLE ZY
+A2AB;W;YI SYLLABLE ZYP
+A2AC;W;YI SYLLABLE ZYRX
+A2AD;W;YI SYLLABLE ZYR
+A2AE;W;YI SYLLABLE CIT
+A2AF;W;YI SYLLABLE CIX
+A2B0;W;YI SYLLABLE CI
+A2B1;W;YI SYLLABLE CIP
+A2B2;W;YI SYLLABLE CIET
+A2B3;W;YI SYLLABLE CIEX
+A2B4;W;YI SYLLABLE CIE
+A2B5;W;YI SYLLABLE CIEP
+A2B6;W;YI SYLLABLE CAT
+A2B7;W;YI SYLLABLE CAX
+A2B8;W;YI SYLLABLE CA
+A2B9;W;YI SYLLABLE CAP
+A2BA;W;YI SYLLABLE CUOX
+A2BB;W;YI SYLLABLE CUO
+A2BC;W;YI SYLLABLE CUOP
+A2BD;W;YI SYLLABLE COT
+A2BE;W;YI SYLLABLE COX
+A2BF;W;YI SYLLABLE CO
+A2C0;W;YI SYLLABLE COP
+A2C1;W;YI SYLLABLE CEX
+A2C2;W;YI SYLLABLE CE
+A2C3;W;YI SYLLABLE CEP
+A2C4;W;YI SYLLABLE CUT
+A2C5;W;YI SYLLABLE CUX
+A2C6;W;YI SYLLABLE CU
+A2C7;W;YI SYLLABLE CUP
+A2C8;W;YI SYLLABLE CURX
+A2C9;W;YI SYLLABLE CUR
+A2CA;W;YI SYLLABLE CYT
+A2CB;W;YI SYLLABLE CYX
+A2CC;W;YI SYLLABLE CY
+A2CD;W;YI SYLLABLE CYP
+A2CE;W;YI SYLLABLE CYRX
+A2CF;W;YI SYLLABLE CYR
+A2D0;W;YI SYLLABLE ZZIT
+A2D1;W;YI SYLLABLE ZZIX
+A2D2;W;YI SYLLABLE ZZI
+A2D3;W;YI SYLLABLE ZZIP
+A2D4;W;YI SYLLABLE ZZIET
+A2D5;W;YI SYLLABLE ZZIEX
+A2D6;W;YI SYLLABLE ZZIE
+A2D7;W;YI SYLLABLE ZZIEP
+A2D8;W;YI SYLLABLE ZZAT
+A2D9;W;YI SYLLABLE ZZAX
+A2DA;W;YI SYLLABLE ZZA
+A2DB;W;YI SYLLABLE ZZAP
+A2DC;W;YI SYLLABLE ZZOX
+A2DD;W;YI SYLLABLE ZZO
+A2DE;W;YI SYLLABLE ZZOP
+A2DF;W;YI SYLLABLE ZZEX
+A2E0;W;YI SYLLABLE ZZE
+A2E1;W;YI SYLLABLE ZZEP
+A2E2;W;YI SYLLABLE ZZUX
+A2E3;W;YI SYLLABLE ZZU
+A2E4;W;YI SYLLABLE ZZUP
+A2E5;W;YI SYLLABLE ZZURX
+A2E6;W;YI SYLLABLE ZZUR
+A2E7;W;YI SYLLABLE ZZYT
+A2E8;W;YI SYLLABLE ZZYX
+A2E9;W;YI SYLLABLE ZZY
+A2EA;W;YI SYLLABLE ZZYP
+A2EB;W;YI SYLLABLE ZZYRX
+A2EC;W;YI SYLLABLE ZZYR
+A2ED;W;YI SYLLABLE NZIT
+A2EE;W;YI SYLLABLE NZIX
+A2EF;W;YI SYLLABLE NZI
+A2F0;W;YI SYLLABLE NZIP
+A2F1;W;YI SYLLABLE NZIEX
+A2F2;W;YI SYLLABLE NZIE
+A2F3;W;YI SYLLABLE NZIEP
+A2F4;W;YI SYLLABLE NZAT
+A2F5;W;YI SYLLABLE NZAX
+A2F6;W;YI SYLLABLE NZA
+A2F7;W;YI SYLLABLE NZAP
+A2F8;W;YI SYLLABLE NZUOX
+A2F9;W;YI SYLLABLE NZUO
+A2FA;W;YI SYLLABLE NZOX
+A2FB;W;YI SYLLABLE NZOP
+A2FC;W;YI SYLLABLE NZEX
+A2FD;W;YI SYLLABLE NZE
+A2FE;W;YI SYLLABLE NZUX
+A2FF;W;YI SYLLABLE NZU
+A300;W;YI SYLLABLE NZUP
+A301;W;YI SYLLABLE NZURX
+A302;W;YI SYLLABLE NZUR
+A303;W;YI SYLLABLE NZYT
+A304;W;YI SYLLABLE NZYX
+A305;W;YI SYLLABLE NZY
+A306;W;YI SYLLABLE NZYP
+A307;W;YI SYLLABLE NZYRX
+A308;W;YI SYLLABLE NZYR
+A309;W;YI SYLLABLE SIT
+A30A;W;YI SYLLABLE SIX
+A30B;W;YI SYLLABLE SI
+A30C;W;YI SYLLABLE SIP
+A30D;W;YI SYLLABLE SIEX
+A30E;W;YI SYLLABLE SIE
+A30F;W;YI SYLLABLE SIEP
+A310;W;YI SYLLABLE SAT
+A311;W;YI SYLLABLE SAX
+A312;W;YI SYLLABLE SA
+A313;W;YI SYLLABLE SAP
+A314;W;YI SYLLABLE SUOX
+A315;W;YI SYLLABLE SUO
+A316;W;YI SYLLABLE SUOP
+A317;W;YI SYLLABLE SOT
+A318;W;YI SYLLABLE SOX
+A319;W;YI SYLLABLE SO
+A31A;W;YI SYLLABLE SOP
+A31B;W;YI SYLLABLE SEX
+A31C;W;YI SYLLABLE SE
+A31D;W;YI SYLLABLE SEP
+A31E;W;YI SYLLABLE SUT
+A31F;W;YI SYLLABLE SUX
+A320;W;YI SYLLABLE SU
+A321;W;YI SYLLABLE SUP
+A322;W;YI SYLLABLE SURX
+A323;W;YI SYLLABLE SUR
+A324;W;YI SYLLABLE SYT
+A325;W;YI SYLLABLE SYX
+A326;W;YI SYLLABLE SY
+A327;W;YI SYLLABLE SYP
+A328;W;YI SYLLABLE SYRX
+A329;W;YI SYLLABLE SYR
+A32A;W;YI SYLLABLE SSIT
+A32B;W;YI SYLLABLE SSIX
+A32C;W;YI SYLLABLE SSI
+A32D;W;YI SYLLABLE SSIP
+A32E;W;YI SYLLABLE SSIEX
+A32F;W;YI SYLLABLE SSIE
+A330;W;YI SYLLABLE SSIEP
+A331;W;YI SYLLABLE SSAT
+A332;W;YI SYLLABLE SSAX
+A333;W;YI SYLLABLE SSA
+A334;W;YI SYLLABLE SSAP
+A335;W;YI SYLLABLE SSOT
+A336;W;YI SYLLABLE SSOX
+A337;W;YI SYLLABLE SSO
+A338;W;YI SYLLABLE SSOP
+A339;W;YI SYLLABLE SSEX
+A33A;W;YI SYLLABLE SSE
+A33B;W;YI SYLLABLE SSEP
+A33C;W;YI SYLLABLE SSUT
+A33D;W;YI SYLLABLE SSUX
+A33E;W;YI SYLLABLE SSU
+A33F;W;YI SYLLABLE SSUP
+A340;W;YI SYLLABLE SSYT
+A341;W;YI SYLLABLE SSYX
+A342;W;YI SYLLABLE SSY
+A343;W;YI SYLLABLE SSYP
+A344;W;YI SYLLABLE SSYRX
+A345;W;YI SYLLABLE SSYR
+A346;W;YI SYLLABLE ZHAT
+A347;W;YI SYLLABLE ZHAX
+A348;W;YI SYLLABLE ZHA
+A349;W;YI SYLLABLE ZHAP
+A34A;W;YI SYLLABLE ZHUOX
+A34B;W;YI SYLLABLE ZHUO
+A34C;W;YI SYLLABLE ZHUOP
+A34D;W;YI SYLLABLE ZHOT
+A34E;W;YI SYLLABLE ZHOX
+A34F;W;YI SYLLABLE ZHO
+A350;W;YI SYLLABLE ZHOP
+A351;W;YI SYLLABLE ZHET
+A352;W;YI SYLLABLE ZHEX
+A353;W;YI SYLLABLE ZHE
+A354;W;YI SYLLABLE ZHEP
+A355;W;YI SYLLABLE ZHUT
+A356;W;YI SYLLABLE ZHUX
+A357;W;YI SYLLABLE ZHU
+A358;W;YI SYLLABLE ZHUP
+A359;W;YI SYLLABLE ZHURX
+A35A;W;YI SYLLABLE ZHUR
+A35B;W;YI SYLLABLE ZHYT
+A35C;W;YI SYLLABLE ZHYX
+A35D;W;YI SYLLABLE ZHY
+A35E;W;YI SYLLABLE ZHYP
+A35F;W;YI SYLLABLE ZHYRX
+A360;W;YI SYLLABLE ZHYR
+A361;W;YI SYLLABLE CHAT
+A362;W;YI SYLLABLE CHAX
+A363;W;YI SYLLABLE CHA
+A364;W;YI SYLLABLE CHAP
+A365;W;YI SYLLABLE CHUOT
+A366;W;YI SYLLABLE CHUOX
+A367;W;YI SYLLABLE CHUO
+A368;W;YI SYLLABLE CHUOP
+A369;W;YI SYLLABLE CHOT
+A36A;W;YI SYLLABLE CHOX
+A36B;W;YI SYLLABLE CHO
+A36C;W;YI SYLLABLE CHOP
+A36D;W;YI SYLLABLE CHET
+A36E;W;YI SYLLABLE CHEX
+A36F;W;YI SYLLABLE CHE
+A370;W;YI SYLLABLE CHEP
+A371;W;YI SYLLABLE CHUX
+A372;W;YI SYLLABLE CHU
+A373;W;YI SYLLABLE CHUP
+A374;W;YI SYLLABLE CHURX
+A375;W;YI SYLLABLE CHUR
+A376;W;YI SYLLABLE CHYT
+A377;W;YI SYLLABLE CHYX
+A378;W;YI SYLLABLE CHY
+A379;W;YI SYLLABLE CHYP
+A37A;W;YI SYLLABLE CHYRX
+A37B;W;YI SYLLABLE CHYR
+A37C;W;YI SYLLABLE RRAX
+A37D;W;YI SYLLABLE RRA
+A37E;W;YI SYLLABLE RRUOX
+A37F;W;YI SYLLABLE RRUO
+A380;W;YI SYLLABLE RROT
+A381;W;YI SYLLABLE RROX
+A382;W;YI SYLLABLE RRO
+A383;W;YI SYLLABLE RROP
+A384;W;YI SYLLABLE RRET
+A385;W;YI SYLLABLE RREX
+A386;W;YI SYLLABLE RRE
+A387;W;YI SYLLABLE RREP
+A388;W;YI SYLLABLE RRUT
+A389;W;YI SYLLABLE RRUX
+A38A;W;YI SYLLABLE RRU
+A38B;W;YI SYLLABLE RRUP
+A38C;W;YI SYLLABLE RRURX
+A38D;W;YI SYLLABLE RRUR
+A38E;W;YI SYLLABLE RRYT
+A38F;W;YI SYLLABLE RRYX
+A390;W;YI SYLLABLE RRY
+A391;W;YI SYLLABLE RRYP
+A392;W;YI SYLLABLE RRYRX
+A393;W;YI SYLLABLE RRYR
+A394;W;YI SYLLABLE NRAT
+A395;W;YI SYLLABLE NRAX
+A396;W;YI SYLLABLE NRA
+A397;W;YI SYLLABLE NRAP
+A398;W;YI SYLLABLE NROX
+A399;W;YI SYLLABLE NRO
+A39A;W;YI SYLLABLE NROP
+A39B;W;YI SYLLABLE NRET
+A39C;W;YI SYLLABLE NREX
+A39D;W;YI SYLLABLE NRE
+A39E;W;YI SYLLABLE NREP
+A39F;W;YI SYLLABLE NRUT
+A3A0;W;YI SYLLABLE NRUX
+A3A1;W;YI SYLLABLE NRU
+A3A2;W;YI SYLLABLE NRUP
+A3A3;W;YI SYLLABLE NRURX
+A3A4;W;YI SYLLABLE NRUR
+A3A5;W;YI SYLLABLE NRYT
+A3A6;W;YI SYLLABLE NRYX
+A3A7;W;YI SYLLABLE NRY
+A3A8;W;YI SYLLABLE NRYP
+A3A9;W;YI SYLLABLE NRYRX
+A3AA;W;YI SYLLABLE NRYR
+A3AB;W;YI SYLLABLE SHAT
+A3AC;W;YI SYLLABLE SHAX
+A3AD;W;YI SYLLABLE SHA
+A3AE;W;YI SYLLABLE SHAP
+A3AF;W;YI SYLLABLE SHUOX
+A3B0;W;YI SYLLABLE SHUO
+A3B1;W;YI SYLLABLE SHUOP
+A3B2;W;YI SYLLABLE SHOT
+A3B3;W;YI SYLLABLE SHOX
+A3B4;W;YI SYLLABLE SHO
+A3B5;W;YI SYLLABLE SHOP
+A3B6;W;YI SYLLABLE SHET
+A3B7;W;YI SYLLABLE SHEX
+A3B8;W;YI SYLLABLE SHE
+A3B9;W;YI SYLLABLE SHEP
+A3BA;W;YI SYLLABLE SHUT
+A3BB;W;YI SYLLABLE SHUX
+A3BC;W;YI SYLLABLE SHU
+A3BD;W;YI SYLLABLE SHUP
+A3BE;W;YI SYLLABLE SHURX
+A3BF;W;YI SYLLABLE SHUR
+A3C0;W;YI SYLLABLE SHYT
+A3C1;W;YI SYLLABLE SHYX
+A3C2;W;YI SYLLABLE SHY
+A3C3;W;YI SYLLABLE SHYP
+A3C4;W;YI SYLLABLE SHYRX
+A3C5;W;YI SYLLABLE SHYR
+A3C6;W;YI SYLLABLE RAT
+A3C7;W;YI SYLLABLE RAX
+A3C8;W;YI SYLLABLE RA
+A3C9;W;YI SYLLABLE RAP
+A3CA;W;YI SYLLABLE RUOX
+A3CB;W;YI SYLLABLE RUO
+A3CC;W;YI SYLLABLE RUOP
+A3CD;W;YI SYLLABLE ROT
+A3CE;W;YI SYLLABLE ROX
+A3CF;W;YI SYLLABLE RO
+A3D0;W;YI SYLLABLE ROP
+A3D1;W;YI SYLLABLE REX
+A3D2;W;YI SYLLABLE RE
+A3D3;W;YI SYLLABLE REP
+A3D4;W;YI SYLLABLE RUT
+A3D5;W;YI SYLLABLE RUX
+A3D6;W;YI SYLLABLE RU
+A3D7;W;YI SYLLABLE RUP
+A3D8;W;YI SYLLABLE RURX
+A3D9;W;YI SYLLABLE RUR
+A3DA;W;YI SYLLABLE RYT
+A3DB;W;YI SYLLABLE RYX
+A3DC;W;YI SYLLABLE RY
+A3DD;W;YI SYLLABLE RYP
+A3DE;W;YI SYLLABLE RYRX
+A3DF;W;YI SYLLABLE RYR
+A3E0;W;YI SYLLABLE JIT
+A3E1;W;YI SYLLABLE JIX
+A3E2;W;YI SYLLABLE JI
+A3E3;W;YI SYLLABLE JIP
+A3E4;W;YI SYLLABLE JIET
+A3E5;W;YI SYLLABLE JIEX
+A3E6;W;YI SYLLABLE JIE
+A3E7;W;YI SYLLABLE JIEP
+A3E8;W;YI SYLLABLE JUOT
+A3E9;W;YI SYLLABLE JUOX
+A3EA;W;YI SYLLABLE JUO
+A3EB;W;YI SYLLABLE JUOP
+A3EC;W;YI SYLLABLE JOT
+A3ED;W;YI SYLLABLE JOX
+A3EE;W;YI SYLLABLE JO
+A3EF;W;YI SYLLABLE JOP
+A3F0;W;YI SYLLABLE JUT
+A3F1;W;YI SYLLABLE JUX
+A3F2;W;YI SYLLABLE JU
+A3F3;W;YI SYLLABLE JUP
+A3F4;W;YI SYLLABLE JURX
+A3F5;W;YI SYLLABLE JUR
+A3F6;W;YI SYLLABLE JYT
+A3F7;W;YI SYLLABLE JYX
+A3F8;W;YI SYLLABLE JY
+A3F9;W;YI SYLLABLE JYP
+A3FA;W;YI SYLLABLE JYRX
+A3FB;W;YI SYLLABLE JYR
+A3FC;W;YI SYLLABLE QIT
+A3FD;W;YI SYLLABLE QIX
+A3FE;W;YI SYLLABLE QI
+A3FF;W;YI SYLLABLE QIP
+A400;W;YI SYLLABLE QIET
+A401;W;YI SYLLABLE QIEX
+A402;W;YI SYLLABLE QIE
+A403;W;YI SYLLABLE QIEP
+A404;W;YI SYLLABLE QUOT
+A405;W;YI SYLLABLE QUOX
+A406;W;YI SYLLABLE QUO
+A407;W;YI SYLLABLE QUOP
+A408;W;YI SYLLABLE QOT
+A409;W;YI SYLLABLE QOX
+A40A;W;YI SYLLABLE QO
+A40B;W;YI SYLLABLE QOP
+A40C;W;YI SYLLABLE QUT
+A40D;W;YI SYLLABLE QUX
+A40E;W;YI SYLLABLE QU
+A40F;W;YI SYLLABLE QUP
+A410;W;YI SYLLABLE QURX
+A411;W;YI SYLLABLE QUR
+A412;W;YI SYLLABLE QYT
+A413;W;YI SYLLABLE QYX
+A414;W;YI SYLLABLE QY
+A415;W;YI SYLLABLE QYP
+A416;W;YI SYLLABLE QYRX
+A417;W;YI SYLLABLE QYR
+A418;W;YI SYLLABLE JJIT
+A419;W;YI SYLLABLE JJIX
+A41A;W;YI SYLLABLE JJI
+A41B;W;YI SYLLABLE JJIP
+A41C;W;YI SYLLABLE JJIET
+A41D;W;YI SYLLABLE JJIEX
+A41E;W;YI SYLLABLE JJIE
+A41F;W;YI SYLLABLE JJIEP
+A420;W;YI SYLLABLE JJUOX
+A421;W;YI SYLLABLE JJUO
+A422;W;YI SYLLABLE JJUOP
+A423;W;YI SYLLABLE JJOT
+A424;W;YI SYLLABLE JJOX
+A425;W;YI SYLLABLE JJO
+A426;W;YI SYLLABLE JJOP
+A427;W;YI SYLLABLE JJUT
+A428;W;YI SYLLABLE JJUX
+A429;W;YI SYLLABLE JJU
+A42A;W;YI SYLLABLE JJUP
+A42B;W;YI SYLLABLE JJURX
+A42C;W;YI SYLLABLE JJUR
+A42D;W;YI SYLLABLE JJYT
+A42E;W;YI SYLLABLE JJYX
+A42F;W;YI SYLLABLE JJY
+A430;W;YI SYLLABLE JJYP
+A431;W;YI SYLLABLE NJIT
+A432;W;YI SYLLABLE NJIX
+A433;W;YI SYLLABLE NJI
+A434;W;YI SYLLABLE NJIP
+A435;W;YI SYLLABLE NJIET
+A436;W;YI SYLLABLE NJIEX
+A437;W;YI SYLLABLE NJIE
+A438;W;YI SYLLABLE NJIEP
+A439;W;YI SYLLABLE NJUOX
+A43A;W;YI SYLLABLE NJUO
+A43B;W;YI SYLLABLE NJOT
+A43C;W;YI SYLLABLE NJOX
+A43D;W;YI SYLLABLE NJO
+A43E;W;YI SYLLABLE NJOP
+A43F;W;YI SYLLABLE NJUX
+A440;W;YI SYLLABLE NJU
+A441;W;YI SYLLABLE NJUP
+A442;W;YI SYLLABLE NJURX
+A443;W;YI SYLLABLE NJUR
+A444;W;YI SYLLABLE NJYT
+A445;W;YI SYLLABLE NJYX
+A446;W;YI SYLLABLE NJY
+A447;W;YI SYLLABLE NJYP
+A448;W;YI SYLLABLE NJYRX
+A449;W;YI SYLLABLE NJYR
+A44A;W;YI SYLLABLE NYIT
+A44B;W;YI SYLLABLE NYIX
+A44C;W;YI SYLLABLE NYI
+A44D;W;YI SYLLABLE NYIP
+A44E;W;YI SYLLABLE NYIET
+A44F;W;YI SYLLABLE NYIEX
+A450;W;YI SYLLABLE NYIE
+A451;W;YI SYLLABLE NYIEP
+A452;W;YI SYLLABLE NYUOX
+A453;W;YI SYLLABLE NYUO
+A454;W;YI SYLLABLE NYUOP
+A455;W;YI SYLLABLE NYOT
+A456;W;YI SYLLABLE NYOX
+A457;W;YI SYLLABLE NYO
+A458;W;YI SYLLABLE NYOP
+A459;W;YI SYLLABLE NYUT
+A45A;W;YI SYLLABLE NYUX
+A45B;W;YI SYLLABLE NYU
+A45C;W;YI SYLLABLE NYUP
+A45D;W;YI SYLLABLE XIT
+A45E;W;YI SYLLABLE XIX
+A45F;W;YI SYLLABLE XI
+A460;W;YI SYLLABLE XIP
+A461;W;YI SYLLABLE XIET
+A462;W;YI SYLLABLE XIEX
+A463;W;YI SYLLABLE XIE
+A464;W;YI SYLLABLE XIEP
+A465;W;YI SYLLABLE XUOX
+A466;W;YI SYLLABLE XUO
+A467;W;YI SYLLABLE XOT
+A468;W;YI SYLLABLE XOX
+A469;W;YI SYLLABLE XO
+A46A;W;YI SYLLABLE XOP
+A46B;W;YI SYLLABLE XYT
+A46C;W;YI SYLLABLE XYX
+A46D;W;YI SYLLABLE XY
+A46E;W;YI SYLLABLE XYP
+A46F;W;YI SYLLABLE XYRX
+A470;W;YI SYLLABLE XYR
+A471;W;YI SYLLABLE YIT
+A472;W;YI SYLLABLE YIX
+A473;W;YI SYLLABLE YI
+A474;W;YI SYLLABLE YIP
+A475;W;YI SYLLABLE YIET
+A476;W;YI SYLLABLE YIEX
+A477;W;YI SYLLABLE YIE
+A478;W;YI SYLLABLE YIEP
+A479;W;YI SYLLABLE YUOT
+A47A;W;YI SYLLABLE YUOX
+A47B;W;YI SYLLABLE YUO
+A47C;W;YI SYLLABLE YUOP
+A47D;W;YI SYLLABLE YOT
+A47E;W;YI SYLLABLE YOX
+A47F;W;YI SYLLABLE YO
+A480;W;YI SYLLABLE YOP
+A481;W;YI SYLLABLE YUT
+A482;W;YI SYLLABLE YUX
+A483;W;YI SYLLABLE YU
+A484;W;YI SYLLABLE YUP
+A485;W;YI SYLLABLE YURX
+A486;W;YI SYLLABLE YUR
+A487;W;YI SYLLABLE YYT
+A488;W;YI SYLLABLE YYX
+A489;W;YI SYLLABLE YY
+A48A;W;YI SYLLABLE YYP
+A48B;W;YI SYLLABLE YYRX
+A48C;W;YI SYLLABLE YYR
+A490;W;YI RADICAL QOT
+A491;W;YI RADICAL LI
+A492;W;YI RADICAL KIT
+A493;W;YI RADICAL NYIP
+A494;W;YI RADICAL CYP
+A495;W;YI RADICAL SSI
+A496;W;YI RADICAL GGOP
+A497;W;YI RADICAL GEP
+A498;W;YI RADICAL MI
+A499;W;YI RADICAL HXIT
+A49A;W;YI RADICAL LYR
+A49B;W;YI RADICAL BBUT
+A49C;W;YI RADICAL MOP
+A49D;W;YI RADICAL YO
+A49E;W;YI RADICAL PUT
+A49F;W;YI RADICAL HXUO
+A4A0;W;YI RADICAL TAT
+A4A1;W;YI RADICAL GA
+A4A4;W;YI RADICAL DDUR
+A4A5;W;YI RADICAL BUR
+A4A6;W;YI RADICAL GGUO
+A4A7;W;YI RADICAL NYOP
+A4A8;W;YI RADICAL TU
+A4A9;W;YI RADICAL OP
+A4AA;W;YI RADICAL JJUT
+A4AB;W;YI RADICAL ZOT
+A4AC;W;YI RADICAL PYT
+A4AD;W;YI RADICAL HMO
+A4AE;W;YI RADICAL YIT
+A4AF;W;YI RADICAL VUR
+A4B0;W;YI RADICAL SHY
+A4B1;W;YI RADICAL VEP
+A4B2;W;YI RADICAL ZA
+A4B3;W;YI RADICAL JO
+A4B5;W;YI RADICAL JJY
+A4B6;W;YI RADICAL GOT
+A4B7;W;YI RADICAL JJIE
+A4B8;W;YI RADICAL WO
+A4B9;W;YI RADICAL DU
+A4BA;W;YI RADICAL SHUR
+A4BB;W;YI RADICAL LIE
+A4BC;W;YI RADICAL CY
+A4BD;W;YI RADICAL CUOP
+A4BE;W;YI RADICAL CIP
+A4BF;W;YI RADICAL HXOP
+A4C0;W;YI RADICAL SHAT
+A4C2;W;YI RADICAL SHOP
+A4C3;W;YI RADICAL CHE
+A4C4;W;YI RADICAL ZZIET
+A4C6;W;YI RADICAL KE
+AC00;W;<Hangul Syllable, First>
+D7A3;W;<Hangul Syllable, Last>
+D800;N;<Non Private Use High Surrogate, First>
+DB7F;N;<Non Private Use High Surrogate, Last>
+DB80;N;<Private Use High Surrogate, First>
+DBFF;N;<Private Use High Surrogate, Last>
+DC00;N;<Low Surrogate, First>
+DFFF;N;<Low Surrogate, Last>
+E000;A;<Private Use, First>
+F8FF;A;<Private Use, Last>
+F900;W;CJK COMPATIBILITY IDEOGRAPH-F900
+F901;W;CJK COMPATIBILITY IDEOGRAPH-F901
+F902;W;CJK COMPATIBILITY IDEOGRAPH-F902
+F903;W;CJK COMPATIBILITY IDEOGRAPH-F903
+F904;W;CJK COMPATIBILITY IDEOGRAPH-F904
+F905;W;CJK COMPATIBILITY IDEOGRAPH-F905
+F906;W;CJK COMPATIBILITY IDEOGRAPH-F906
+F907;W;CJK COMPATIBILITY IDEOGRAPH-F907
+F908;W;CJK COMPATIBILITY IDEOGRAPH-F908
+F909;W;CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;W;CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;W;CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;W;CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;W;CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;W;CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;W;CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;W;CJK COMPATIBILITY IDEOGRAPH-F910
+F911;W;CJK COMPATIBILITY IDEOGRAPH-F911
+F912;W;CJK COMPATIBILITY IDEOGRAPH-F912
+F913;W;CJK COMPATIBILITY IDEOGRAPH-F913
+F914;W;CJK COMPATIBILITY IDEOGRAPH-F914
+F915;W;CJK COMPATIBILITY IDEOGRAPH-F915
+F916;W;CJK COMPATIBILITY IDEOGRAPH-F916
+F917;W;CJK COMPATIBILITY IDEOGRAPH-F917
+F918;W;CJK COMPATIBILITY IDEOGRAPH-F918
+F919;W;CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;W;CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;W;CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;W;CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;W;CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;W;CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;W;CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;W;CJK COMPATIBILITY IDEOGRAPH-F920
+F921;W;CJK COMPATIBILITY IDEOGRAPH-F921
+F922;W;CJK COMPATIBILITY IDEOGRAPH-F922
+F923;W;CJK COMPATIBILITY IDEOGRAPH-F923
+F924;W;CJK COMPATIBILITY IDEOGRAPH-F924
+F925;W;CJK COMPATIBILITY IDEOGRAPH-F925
+F926;W;CJK COMPATIBILITY IDEOGRAPH-F926
+F927;W;CJK COMPATIBILITY IDEOGRAPH-F927
+F928;W;CJK COMPATIBILITY IDEOGRAPH-F928
+F929;W;CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;W;CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;W;CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;W;CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;W;CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;W;CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;W;CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;W;CJK COMPATIBILITY IDEOGRAPH-F930
+F931;W;CJK COMPATIBILITY IDEOGRAPH-F931
+F932;W;CJK COMPATIBILITY IDEOGRAPH-F932
+F933;W;CJK COMPATIBILITY IDEOGRAPH-F933
+F934;W;CJK COMPATIBILITY IDEOGRAPH-F934
+F935;W;CJK COMPATIBILITY IDEOGRAPH-F935
+F936;W;CJK COMPATIBILITY IDEOGRAPH-F936
+F937;W;CJK COMPATIBILITY IDEOGRAPH-F937
+F938;W;CJK COMPATIBILITY IDEOGRAPH-F938
+F939;W;CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;W;CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;W;CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;W;CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;W;CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;W;CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;W;CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;W;CJK COMPATIBILITY IDEOGRAPH-F940
+F941;W;CJK COMPATIBILITY IDEOGRAPH-F941
+F942;W;CJK COMPATIBILITY IDEOGRAPH-F942
+F943;W;CJK COMPATIBILITY IDEOGRAPH-F943
+F944;W;CJK COMPATIBILITY IDEOGRAPH-F944
+F945;W;CJK COMPATIBILITY IDEOGRAPH-F945
+F946;W;CJK COMPATIBILITY IDEOGRAPH-F946
+F947;W;CJK COMPATIBILITY IDEOGRAPH-F947
+F948;W;CJK COMPATIBILITY IDEOGRAPH-F948
+F949;W;CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;W;CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;W;CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;W;CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;W;CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;W;CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;W;CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;W;CJK COMPATIBILITY IDEOGRAPH-F950
+F951;W;CJK COMPATIBILITY IDEOGRAPH-F951
+F952;W;CJK COMPATIBILITY IDEOGRAPH-F952
+F953;W;CJK COMPATIBILITY IDEOGRAPH-F953
+F954;W;CJK COMPATIBILITY IDEOGRAPH-F954
+F955;W;CJK COMPATIBILITY IDEOGRAPH-F955
+F956;W;CJK COMPATIBILITY IDEOGRAPH-F956
+F957;W;CJK COMPATIBILITY IDEOGRAPH-F957
+F958;W;CJK COMPATIBILITY IDEOGRAPH-F958
+F959;W;CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;W;CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;W;CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;W;CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;W;CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;W;CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;W;CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;W;CJK COMPATIBILITY IDEOGRAPH-F960
+F961;W;CJK COMPATIBILITY IDEOGRAPH-F961
+F962;W;CJK COMPATIBILITY IDEOGRAPH-F962
+F963;W;CJK COMPATIBILITY IDEOGRAPH-F963
+F964;W;CJK COMPATIBILITY IDEOGRAPH-F964
+F965;W;CJK COMPATIBILITY IDEOGRAPH-F965
+F966;W;CJK COMPATIBILITY IDEOGRAPH-F966
+F967;W;CJK COMPATIBILITY IDEOGRAPH-F967
+F968;W;CJK COMPATIBILITY IDEOGRAPH-F968
+F969;W;CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;W;CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;W;CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;W;CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;W;CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;W;CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;W;CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;W;CJK COMPATIBILITY IDEOGRAPH-F970
+F971;W;CJK COMPATIBILITY IDEOGRAPH-F971
+F972;W;CJK COMPATIBILITY IDEOGRAPH-F972
+F973;W;CJK COMPATIBILITY IDEOGRAPH-F973
+F974;W;CJK COMPATIBILITY IDEOGRAPH-F974
+F975;W;CJK COMPATIBILITY IDEOGRAPH-F975
+F976;W;CJK COMPATIBILITY IDEOGRAPH-F976
+F977;W;CJK COMPATIBILITY IDEOGRAPH-F977
+F978;W;CJK COMPATIBILITY IDEOGRAPH-F978
+F979;W;CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;W;CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;W;CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;W;CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;W;CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;W;CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;W;CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;W;CJK COMPATIBILITY IDEOGRAPH-F980
+F981;W;CJK COMPATIBILITY IDEOGRAPH-F981
+F982;W;CJK COMPATIBILITY IDEOGRAPH-F982
+F983;W;CJK COMPATIBILITY IDEOGRAPH-F983
+F984;W;CJK COMPATIBILITY IDEOGRAPH-F984
+F985;W;CJK COMPATIBILITY IDEOGRAPH-F985
+F986;W;CJK COMPATIBILITY IDEOGRAPH-F986
+F987;W;CJK COMPATIBILITY IDEOGRAPH-F987
+F988;W;CJK COMPATIBILITY IDEOGRAPH-F988
+F989;W;CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;W;CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;W;CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;W;CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;W;CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;W;CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;W;CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;W;CJK COMPATIBILITY IDEOGRAPH-F990
+F991;W;CJK COMPATIBILITY IDEOGRAPH-F991
+F992;W;CJK COMPATIBILITY IDEOGRAPH-F992
+F993;W;CJK COMPATIBILITY IDEOGRAPH-F993
+F994;W;CJK COMPATIBILITY IDEOGRAPH-F994
+F995;W;CJK COMPATIBILITY IDEOGRAPH-F995
+F996;W;CJK COMPATIBILITY IDEOGRAPH-F996
+F997;W;CJK COMPATIBILITY IDEOGRAPH-F997
+F998;W;CJK COMPATIBILITY IDEOGRAPH-F998
+F999;W;CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;W;CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;W;CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;W;CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;W;CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;W;CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;W;CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;W;CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;W;CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;W;CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;W;CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;W;CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;W;CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;W;CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;W;CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;W;CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;W;CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;W;CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;W;CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;W;CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;W;CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;W;CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;W;CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;W;CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;W;CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;W;CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;W;CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;W;CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;W;CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;W;CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;W;CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;W;CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;W;CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;W;CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;W;CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;W;CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;W;CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;W;CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;W;CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;W;CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;W;CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;W;CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;W;CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;W;CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;W;CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;W;CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;W;CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;W;CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;W;CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;W;CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;W;CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;W;CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;W;CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;W;CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;W;CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;W;CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;W;CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;W;CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;W;CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;W;CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;W;CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;W;CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;W;CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;W;CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;W;CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;W;CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;W;CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;W;CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;W;CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;W;CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;W;CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;W;CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;W;CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;W;CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;W;CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;W;CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;W;CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;W;CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;W;CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;W;CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;W;CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;W;CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;W;CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;W;CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;W;CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;W;CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;W;CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;W;CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;W;CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;W;CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;W;CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;W;CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;W;CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;W;CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;W;CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;W;CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;W;CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;W;CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;W;CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;W;CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;W;CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;W;CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;W;CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;W;CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;W;CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;W;CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;W;CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;W;CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;W;CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;W;CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;W;CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;W;CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;W;CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;W;CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;W;CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;W;CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;W;CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA0E;W;CJK COMPATIBILITY IDEOGRAPH-FA0E
+FA0F;W;CJK COMPATIBILITY IDEOGRAPH-FA0F
+FA10;W;CJK COMPATIBILITY IDEOGRAPH-FA10
+FA11;W;CJK COMPATIBILITY IDEOGRAPH-FA11
+FA12;W;CJK COMPATIBILITY IDEOGRAPH-FA12
+FA13;W;CJK COMPATIBILITY IDEOGRAPH-FA13
+FA14;W;CJK COMPATIBILITY IDEOGRAPH-FA14
+FA15;W;CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;W;CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;W;CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;W;CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;W;CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;W;CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;W;CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;W;CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;W;CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;W;CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA1F;W;CJK COMPATIBILITY IDEOGRAPH-FA1F
+FA20;W;CJK COMPATIBILITY IDEOGRAPH-FA20
+FA21;W;CJK COMPATIBILITY IDEOGRAPH-FA21
+FA22;W;CJK COMPATIBILITY IDEOGRAPH-FA22
+FA23;W;CJK COMPATIBILITY IDEOGRAPH-FA23
+FA24;W;CJK COMPATIBILITY IDEOGRAPH-FA24
+FA25;W;CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;W;CJK COMPATIBILITY IDEOGRAPH-FA26
+FA27;W;CJK COMPATIBILITY IDEOGRAPH-FA27
+FA28;W;CJK COMPATIBILITY IDEOGRAPH-FA28
+FA29;W;CJK COMPATIBILITY IDEOGRAPH-FA29
+FA2A;W;CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;W;CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;W;CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;W;CJK COMPATIBILITY IDEOGRAPH-FA2D
+FB00;N;LATIN SMALL LIGATURE FF
+FB01;N;LATIN SMALL LIGATURE FI
+FB02;N;LATIN SMALL LIGATURE FL
+FB03;N;LATIN SMALL LIGATURE FFI
+FB04;N;LATIN SMALL LIGATURE FFL
+FB05;N;LATIN SMALL LIGATURE LONG S T
+FB06;N;LATIN SMALL LIGATURE ST
+FB13;N;ARMENIAN SMALL LIGATURE MEN NOW
+FB14;N;ARMENIAN SMALL LIGATURE MEN ECH
+FB15;N;ARMENIAN SMALL LIGATURE MEN INI
+FB16;N;ARMENIAN SMALL LIGATURE VEW NOW
+FB17;N;ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;N;HEBREW LETTER YOD WITH HIRIQ
+FB1E;N;HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F;N;HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;N;HEBREW LETTER ALTERNATIVE AYIN
+FB21;N;HEBREW LETTER WIDE ALEF
+FB22;N;HEBREW LETTER WIDE DALET
+FB23;N;HEBREW LETTER WIDE HE
+FB24;N;HEBREW LETTER WIDE KAF
+FB25;N;HEBREW LETTER WIDE LAMED
+FB26;N;HEBREW LETTER WIDE FINAL MEM
+FB27;N;HEBREW LETTER WIDE RESH
+FB28;N;HEBREW LETTER WIDE TAV
+FB29;N;HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;N;HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;N;HEBREW LETTER SHIN WITH SIN DOT
+FB2C;N;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;N;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;N;HEBREW LETTER ALEF WITH PATAH
+FB2F;N;HEBREW LETTER ALEF WITH QAMATS
+FB30;N;HEBREW LETTER ALEF WITH MAPIQ
+FB31;N;HEBREW LETTER BET WITH DAGESH
+FB32;N;HEBREW LETTER GIMEL WITH DAGESH
+FB33;N;HEBREW LETTER DALET WITH DAGESH
+FB34;N;HEBREW LETTER HE WITH MAPIQ
+FB35;N;HEBREW LETTER VAV WITH DAGESH
+FB36;N;HEBREW LETTER ZAYIN WITH DAGESH
+FB38;N;HEBREW LETTER TET WITH DAGESH
+FB39;N;HEBREW LETTER YOD WITH DAGESH
+FB3A;N;HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;N;HEBREW LETTER KAF WITH DAGESH
+FB3C;N;HEBREW LETTER LAMED WITH DAGESH
+FB3E;N;HEBREW LETTER MEM WITH DAGESH
+FB40;N;HEBREW LETTER NUN WITH DAGESH
+FB41;N;HEBREW LETTER SAMEKH WITH DAGESH
+FB43;N;HEBREW LETTER FINAL PE WITH DAGESH
+FB44;N;HEBREW LETTER PE WITH DAGESH
+FB46;N;HEBREW LETTER TSADI WITH DAGESH
+FB47;N;HEBREW LETTER QOF WITH DAGESH
+FB48;N;HEBREW LETTER RESH WITH DAGESH
+FB49;N;HEBREW LETTER SHIN WITH DAGESH
+FB4A;N;HEBREW LETTER TAV WITH DAGESH
+FB4B;N;HEBREW LETTER VAV WITH HOLAM
+FB4C;N;HEBREW LETTER BET WITH RAFE
+FB4D;N;HEBREW LETTER KAF WITH RAFE
+FB4E;N;HEBREW LETTER PE WITH RAFE
+FB4F;N;HEBREW LIGATURE ALEF LAMED
+FB50;N;ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;N;ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;N;ARABIC LETTER BEEH ISOLATED FORM
+FB53;N;ARABIC LETTER BEEH FINAL FORM
+FB54;N;ARABIC LETTER BEEH INITIAL FORM
+FB55;N;ARABIC LETTER BEEH MEDIAL FORM
+FB56;N;ARABIC LETTER PEH ISOLATED FORM
+FB57;N;ARABIC LETTER PEH FINAL FORM
+FB58;N;ARABIC LETTER PEH INITIAL FORM
+FB59;N;ARABIC LETTER PEH MEDIAL FORM
+FB5A;N;ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;N;ARABIC LETTER BEHEH FINAL FORM
+FB5C;N;ARABIC LETTER BEHEH INITIAL FORM
+FB5D;N;ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;N;ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;N;ARABIC LETTER TTEHEH FINAL FORM
+FB60;N;ARABIC LETTER TTEHEH INITIAL FORM
+FB61;N;ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;N;ARABIC LETTER TEHEH ISOLATED FORM
+FB63;N;ARABIC LETTER TEHEH FINAL FORM
+FB64;N;ARABIC LETTER TEHEH INITIAL FORM
+FB65;N;ARABIC LETTER TEHEH MEDIAL FORM
+FB66;N;ARABIC LETTER TTEH ISOLATED FORM
+FB67;N;ARABIC LETTER TTEH FINAL FORM
+FB68;N;ARABIC LETTER TTEH INITIAL FORM
+FB69;N;ARABIC LETTER TTEH MEDIAL FORM
+FB6A;N;ARABIC LETTER VEH ISOLATED FORM
+FB6B;N;ARABIC LETTER VEH FINAL FORM
+FB6C;N;ARABIC LETTER VEH INITIAL FORM
+FB6D;N;ARABIC LETTER VEH MEDIAL FORM
+FB6E;N;ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;N;ARABIC LETTER PEHEH FINAL FORM
+FB70;N;ARABIC LETTER PEHEH INITIAL FORM
+FB71;N;ARABIC LETTER PEHEH MEDIAL FORM
+FB72;N;ARABIC LETTER DYEH ISOLATED FORM
+FB73;N;ARABIC LETTER DYEH FINAL FORM
+FB74;N;ARABIC LETTER DYEH INITIAL FORM
+FB75;N;ARABIC LETTER DYEH MEDIAL FORM
+FB76;N;ARABIC LETTER NYEH ISOLATED FORM
+FB77;N;ARABIC LETTER NYEH FINAL FORM
+FB78;N;ARABIC LETTER NYEH INITIAL FORM
+FB79;N;ARABIC LETTER NYEH MEDIAL FORM
+FB7A;N;ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;N;ARABIC LETTER TCHEH FINAL FORM
+FB7C;N;ARABIC LETTER TCHEH INITIAL FORM
+FB7D;N;ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;N;ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;N;ARABIC LETTER TCHEHEH FINAL FORM
+FB80;N;ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;N;ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;N;ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;N;ARABIC LETTER DDAHAL FINAL FORM
+FB84;N;ARABIC LETTER DAHAL ISOLATED FORM
+FB85;N;ARABIC LETTER DAHAL FINAL FORM
+FB86;N;ARABIC LETTER DUL ISOLATED FORM
+FB87;N;ARABIC LETTER DUL FINAL FORM
+FB88;N;ARABIC LETTER DDAL ISOLATED FORM
+FB89;N;ARABIC LETTER DDAL FINAL FORM
+FB8A;N;ARABIC LETTER JEH ISOLATED FORM
+FB8B;N;ARABIC LETTER JEH FINAL FORM
+FB8C;N;ARABIC LETTER RREH ISOLATED FORM
+FB8D;N;ARABIC LETTER RREH FINAL FORM
+FB8E;N;ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;N;ARABIC LETTER KEHEH FINAL FORM
+FB90;N;ARABIC LETTER KEHEH INITIAL FORM
+FB91;N;ARABIC LETTER KEHEH MEDIAL FORM
+FB92;N;ARABIC LETTER GAF ISOLATED FORM
+FB93;N;ARABIC LETTER GAF FINAL FORM
+FB94;N;ARABIC LETTER GAF INITIAL FORM
+FB95;N;ARABIC LETTER GAF MEDIAL FORM
+FB96;N;ARABIC LETTER GUEH ISOLATED FORM
+FB97;N;ARABIC LETTER GUEH FINAL FORM
+FB98;N;ARABIC LETTER GUEH INITIAL FORM
+FB99;N;ARABIC LETTER GUEH MEDIAL FORM
+FB9A;N;ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;N;ARABIC LETTER NGOEH FINAL FORM
+FB9C;N;ARABIC LETTER NGOEH INITIAL FORM
+FB9D;N;ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;N;ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;N;ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;N;ARABIC LETTER RNOON ISOLATED FORM
+FBA1;N;ARABIC LETTER RNOON FINAL FORM
+FBA2;N;ARABIC LETTER RNOON INITIAL FORM
+FBA3;N;ARABIC LETTER RNOON MEDIAL FORM
+FBA4;N;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;N;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;N;ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;N;ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;N;ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;N;ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;N;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;N;ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;N;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;N;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;N;ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;N;ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;N;ARABIC LETTER NG ISOLATED FORM
+FBD4;N;ARABIC LETTER NG FINAL FORM
+FBD5;N;ARABIC LETTER NG INITIAL FORM
+FBD6;N;ARABIC LETTER NG MEDIAL FORM
+FBD7;N;ARABIC LETTER U ISOLATED FORM
+FBD8;N;ARABIC LETTER U FINAL FORM
+FBD9;N;ARABIC LETTER OE ISOLATED FORM
+FBDA;N;ARABIC LETTER OE FINAL FORM
+FBDB;N;ARABIC LETTER YU ISOLATED FORM
+FBDC;N;ARABIC LETTER YU FINAL FORM
+FBDD;N;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;N;ARABIC LETTER VE ISOLATED FORM
+FBDF;N;ARABIC LETTER VE FINAL FORM
+FBE0;N;ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;N;ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;N;ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;N;ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;N;ARABIC LETTER E ISOLATED FORM
+FBE5;N;ARABIC LETTER E FINAL FORM
+FBE6;N;ARABIC LETTER E INITIAL FORM
+FBE7;N;ARABIC LETTER E MEDIAL FORM
+FBE8;N;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;N;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;N;ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;N;ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;N;ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;N;ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;N;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;N;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;N;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;N;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;N;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;N;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;N;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;N;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;N;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;N;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;N;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;N;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;N;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;N;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;N;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;N;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;N;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;N;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;N;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;N;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;N;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;N;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;N;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;N;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;N;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;N;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;N;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;N;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;N;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;N;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;N;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;N;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;N;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;N;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;N;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;N;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;N;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;N;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;N;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;N;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;N;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;N;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;N;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;N;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;N;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;N;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;N;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;N;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;N;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;N;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;N;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;N;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;N;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;N;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;N;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;N;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;N;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;N;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;N;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;N;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;N;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;N;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;N;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;N;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;N;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;N;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;N;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;N;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;N;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;N;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;N;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;N;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;N;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;N;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;N;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;N;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;N;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;N;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;N;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;N;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;N;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;N;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;N;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;N;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;N;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;N;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;N;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;N;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;N;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;N;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;N;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;N;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;N;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;N;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;N;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;N;ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;N;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;N;ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;N;ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;N;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;N;ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;N;ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;N;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;N;ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;N;ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;N;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;N;ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;N;ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;N;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;N;ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;N;ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;N;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;N;ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;N;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;N;ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;N;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;N;ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;N;ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;N;ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;N;ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;N;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;N;ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;N;ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;N;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;N;ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;N;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;N;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;N;ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;N;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;N;ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;N;ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;N;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;N;ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;N;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;N;ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;N;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;N;ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;N;ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;N;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;N;ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;N;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;N;ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;N;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;N;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;N;ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;N;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;N;ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;N;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;N;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;N;ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;N;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;N;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;N;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;N;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;N;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;N;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;N;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;N;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;N;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;N;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;N;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;N;ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;N;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;N;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;N;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;N;ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;N;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;N;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;N;ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;N;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;N;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;N;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;N;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;N;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;N;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;N;ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;N;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;N;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;N;ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;N;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;N;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;N;ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;N;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;N;ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;N;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;N;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;N;ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;N;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;N;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;N;ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;N;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;N;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;N;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;N;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;N;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;N;ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;N;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;N;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;N;ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;N;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;N;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;N;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;N;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;N;ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;N;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;N;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;N;ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;N;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;N;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;N;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;N;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;N;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;N;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;N;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;N;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;N;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;N;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;N;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;N;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;N;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;N;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;N;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;N;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;N;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;N;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;N;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;N;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;N;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;N;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;N;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;N;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;N;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;N;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;N;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;N;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;N;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;N;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;N;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;N;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;N;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;N;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;N;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;N;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;N;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;N;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;N;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;N;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;N;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;N;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;N;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;N;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;N;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;N;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;N;ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;N;ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;N;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;N;ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;N;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;N;ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;N;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;N;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;N;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;N;ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;N;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;N;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;N;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;N;ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;N;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;N;ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;N;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;N;ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;N;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;N;ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;N;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;N;ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;N;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;N;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;N;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;N;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;N;ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;N;ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;N;ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;N;ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;N;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;N;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;N;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;N;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;N;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;N;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;N;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;N;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;N;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;N;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;N;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;N;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;N;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;N;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;N;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;N;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;N;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD3E;N;ORNATE LEFT PARENTHESIS
+FD3F;N;ORNATE RIGHT PARENTHESIS
+FD50;N;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;N;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;N;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;N;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;N;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;N;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;N;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;N;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;N;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;N;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;N;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;N;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;N;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;N;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;N;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;N;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;N;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;N;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;N;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;N;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;N;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;N;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;N;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;N;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;N;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;N;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;N;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;N;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;N;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;N;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;N;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;N;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;N;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;N;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;N;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;N;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;N;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;N;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;N;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;N;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;N;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;N;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;N;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;N;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;N;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;N;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;N;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;N;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;N;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;N;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;N;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;N;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;N;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;N;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;N;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;N;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;N;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;N;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;N;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;N;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;N;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;N;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;N;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;N;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;N;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;N;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;N;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;N;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;N;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;N;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;N;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;N;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;N;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;N;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;N;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;N;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;N;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;N;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;N;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;N;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;N;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;N;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;N;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;N;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;N;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;N;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;N;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;N;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;N;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;N;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;N;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;N;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;N;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;N;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;N;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;N;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;N;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;N;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;N;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;N;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;N;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;N;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;N;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;N;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;N;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;N;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;N;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;N;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;N;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;N;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;N;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;N;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;N;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;N;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;N;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;N;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;N;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;N;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;N;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;N;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;N;ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;N;ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;N;ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;N;ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;N;ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;N;ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;N;ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;N;ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;N;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;N;ARABIC LIGATURE JALLAJALALOUHOU
+FE20;N;COMBINING LIGATURE LEFT HALF
+FE21;N;COMBINING LIGATURE RIGHT HALF
+FE22;N;COMBINING DOUBLE TILDE LEFT HALF
+FE23;N;COMBINING DOUBLE TILDE RIGHT HALF
+FE30;W;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;W;PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;W;PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;W;PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;W;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;W;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;W;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;W;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;W;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;W;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;W;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;W;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;W;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;W;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;W;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;W;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;W;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;W;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;W;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;W;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;W;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE49;W;DASHED OVERLINE
+FE4A;W;CENTRELINE OVERLINE
+FE4B;W;WAVY OVERLINE
+FE4C;W;DOUBLE WAVY OVERLINE
+FE4D;W;DASHED LOW LINE
+FE4E;W;CENTRELINE LOW LINE
+FE4F;W;WAVY LOW LINE
+FE50;W;SMALL COMMA
+FE51;W;SMALL IDEOGRAPHIC COMMA
+FE52;W;SMALL FULL STOP
+FE54;W;SMALL SEMICOLON
+FE55;W;SMALL COLON
+FE56;W;SMALL QUESTION MARK
+FE57;W;SMALL EXCLAMATION MARK
+FE58;W;SMALL EM DASH
+FE59;W;SMALL LEFT PARENTHESIS
+FE5A;W;SMALL RIGHT PARENTHESIS
+FE5B;W;SMALL LEFT CURLY BRACKET
+FE5C;W;SMALL RIGHT CURLY BRACKET
+FE5D;W;SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;W;SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;W;SMALL NUMBER SIGN
+FE60;W;SMALL AMPERSAND
+FE61;W;SMALL ASTERISK
+FE62;W;SMALL PLUS SIGN
+FE63;W;SMALL HYPHEN-MINUS
+FE64;W;SMALL LESS-THAN SIGN
+FE65;W;SMALL GREATER-THAN SIGN
+FE66;W;SMALL EQUALS SIGN
+FE68;W;SMALL REVERSE SOLIDUS
+FE69;W;SMALL DOLLAR SIGN
+FE6A;W;SMALL PERCENT SIGN
+FE6B;W;SMALL COMMERCIAL AT
+FE70;N;ARABIC FATHATAN ISOLATED FORM
+FE71;N;ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;N;ARABIC DAMMATAN ISOLATED FORM
+FE74;N;ARABIC KASRATAN ISOLATED FORM
+FE76;N;ARABIC FATHA ISOLATED FORM
+FE77;N;ARABIC FATHA MEDIAL FORM
+FE78;N;ARABIC DAMMA ISOLATED FORM
+FE79;N;ARABIC DAMMA MEDIAL FORM
+FE7A;N;ARABIC KASRA ISOLATED FORM
+FE7B;N;ARABIC KASRA MEDIAL FORM
+FE7C;N;ARABIC SHADDA ISOLATED FORM
+FE7D;N;ARABIC SHADDA MEDIAL FORM
+FE7E;N;ARABIC SUKUN ISOLATED FORM
+FE7F;N;ARABIC SUKUN MEDIAL FORM
+FE80;N;ARABIC LETTER HAMZA ISOLATED FORM
+FE81;N;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;N;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;N;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;N;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;N;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;N;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;N;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;N;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;N;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;N;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;N;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;N;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;N;ARABIC LETTER ALEF ISOLATED FORM
+FE8E;N;ARABIC LETTER ALEF FINAL FORM
+FE8F;N;ARABIC LETTER BEH ISOLATED FORM
+FE90;N;ARABIC LETTER BEH FINAL FORM
+FE91;N;ARABIC LETTER BEH INITIAL FORM
+FE92;N;ARABIC LETTER BEH MEDIAL FORM
+FE93;N;ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;N;ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;N;ARABIC LETTER TEH ISOLATED FORM
+FE96;N;ARABIC LETTER TEH FINAL FORM
+FE97;N;ARABIC LETTER TEH INITIAL FORM
+FE98;N;ARABIC LETTER TEH MEDIAL FORM
+FE99;N;ARABIC LETTER THEH ISOLATED FORM
+FE9A;N;ARABIC LETTER THEH FINAL FORM
+FE9B;N;ARABIC LETTER THEH INITIAL FORM
+FE9C;N;ARABIC LETTER THEH MEDIAL FORM
+FE9D;N;ARABIC LETTER JEEM ISOLATED FORM
+FE9E;N;ARABIC LETTER JEEM FINAL FORM
+FE9F;N;ARABIC LETTER JEEM INITIAL FORM
+FEA0;N;ARABIC LETTER JEEM MEDIAL FORM
+FEA1;N;ARABIC LETTER HAH ISOLATED FORM
+FEA2;N;ARABIC LETTER HAH FINAL FORM
+FEA3;N;ARABIC LETTER HAH INITIAL FORM
+FEA4;N;ARABIC LETTER HAH MEDIAL FORM
+FEA5;N;ARABIC LETTER KHAH ISOLATED FORM
+FEA6;N;ARABIC LETTER KHAH FINAL FORM
+FEA7;N;ARABIC LETTER KHAH INITIAL FORM
+FEA8;N;ARABIC LETTER KHAH MEDIAL FORM
+FEA9;N;ARABIC LETTER DAL ISOLATED FORM
+FEAA;N;ARABIC LETTER DAL FINAL FORM
+FEAB;N;ARABIC LETTER THAL ISOLATED FORM
+FEAC;N;ARABIC LETTER THAL FINAL FORM
+FEAD;N;ARABIC LETTER REH ISOLATED FORM
+FEAE;N;ARABIC LETTER REH FINAL FORM
+FEAF;N;ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;N;ARABIC LETTER ZAIN FINAL FORM
+FEB1;N;ARABIC LETTER SEEN ISOLATED FORM
+FEB2;N;ARABIC LETTER SEEN FINAL FORM
+FEB3;N;ARABIC LETTER SEEN INITIAL FORM
+FEB4;N;ARABIC LETTER SEEN MEDIAL FORM
+FEB5;N;ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;N;ARABIC LETTER SHEEN FINAL FORM
+FEB7;N;ARABIC LETTER SHEEN INITIAL FORM
+FEB8;N;ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;N;ARABIC LETTER SAD ISOLATED FORM
+FEBA;N;ARABIC LETTER SAD FINAL FORM
+FEBB;N;ARABIC LETTER SAD INITIAL FORM
+FEBC;N;ARABIC LETTER SAD MEDIAL FORM
+FEBD;N;ARABIC LETTER DAD ISOLATED FORM
+FEBE;N;ARABIC LETTER DAD FINAL FORM
+FEBF;N;ARABIC LETTER DAD INITIAL FORM
+FEC0;N;ARABIC LETTER DAD MEDIAL FORM
+FEC1;N;ARABIC LETTER TAH ISOLATED FORM
+FEC2;N;ARABIC LETTER TAH FINAL FORM
+FEC3;N;ARABIC LETTER TAH INITIAL FORM
+FEC4;N;ARABIC LETTER TAH MEDIAL FORM
+FEC5;N;ARABIC LETTER ZAH ISOLATED FORM
+FEC6;N;ARABIC LETTER ZAH FINAL FORM
+FEC7;N;ARABIC LETTER ZAH INITIAL FORM
+FEC8;N;ARABIC LETTER ZAH MEDIAL FORM
+FEC9;N;ARABIC LETTER AIN ISOLATED FORM
+FECA;N;ARABIC LETTER AIN FINAL FORM
+FECB;N;ARABIC LETTER AIN INITIAL FORM
+FECC;N;ARABIC LETTER AIN MEDIAL FORM
+FECD;N;ARABIC LETTER GHAIN ISOLATED FORM
+FECE;N;ARABIC LETTER GHAIN FINAL FORM
+FECF;N;ARABIC LETTER GHAIN INITIAL FORM
+FED0;N;ARABIC LETTER GHAIN MEDIAL FORM
+FED1;N;ARABIC LETTER FEH ISOLATED FORM
+FED2;N;ARABIC LETTER FEH FINAL FORM
+FED3;N;ARABIC LETTER FEH INITIAL FORM
+FED4;N;ARABIC LETTER FEH MEDIAL FORM
+FED5;N;ARABIC LETTER QAF ISOLATED FORM
+FED6;N;ARABIC LETTER QAF FINAL FORM
+FED7;N;ARABIC LETTER QAF INITIAL FORM
+FED8;N;ARABIC LETTER QAF MEDIAL FORM
+FED9;N;ARABIC LETTER KAF ISOLATED FORM
+FEDA;N;ARABIC LETTER KAF FINAL FORM
+FEDB;N;ARABIC LETTER KAF INITIAL FORM
+FEDC;N;ARABIC LETTER KAF MEDIAL FORM
+FEDD;N;ARABIC LETTER LAM ISOLATED FORM
+FEDE;N;ARABIC LETTER LAM FINAL FORM
+FEDF;N;ARABIC LETTER LAM INITIAL FORM
+FEE0;N;ARABIC LETTER LAM MEDIAL FORM
+FEE1;N;ARABIC LETTER MEEM ISOLATED FORM
+FEE2;N;ARABIC LETTER MEEM FINAL FORM
+FEE3;N;ARABIC LETTER MEEM INITIAL FORM
+FEE4;N;ARABIC LETTER MEEM MEDIAL FORM
+FEE5;N;ARABIC LETTER NOON ISOLATED FORM
+FEE6;N;ARABIC LETTER NOON FINAL FORM
+FEE7;N;ARABIC LETTER NOON INITIAL FORM
+FEE8;N;ARABIC LETTER NOON MEDIAL FORM
+FEE9;N;ARABIC LETTER HEH ISOLATED FORM
+FEEA;N;ARABIC LETTER HEH FINAL FORM
+FEEB;N;ARABIC LETTER HEH INITIAL FORM
+FEEC;N;ARABIC LETTER HEH MEDIAL FORM
+FEED;N;ARABIC LETTER WAW ISOLATED FORM
+FEEE;N;ARABIC LETTER WAW FINAL FORM
+FEEF;N;ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;N;ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;N;ARABIC LETTER YEH ISOLATED FORM
+FEF2;N;ARABIC LETTER YEH FINAL FORM
+FEF3;N;ARABIC LETTER YEH INITIAL FORM
+FEF4;N;ARABIC LETTER YEH MEDIAL FORM
+FEF5;N;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;N;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;N;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;N;ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF;N;ZERO WIDTH NO-BREAK SPACE
+FF01;F;FULLWIDTH EXCLAMATION MARK
+FF02;F;FULLWIDTH QUOTATION MARK
+FF03;F;FULLWIDTH NUMBER SIGN
+FF04;F;FULLWIDTH DOLLAR SIGN
+FF05;F;FULLWIDTH PERCENT SIGN
+FF06;F;FULLWIDTH AMPERSAND
+FF07;F;FULLWIDTH APOSTROPHE
+FF08;F;FULLWIDTH LEFT PARENTHESIS
+FF09;F;FULLWIDTH RIGHT PARENTHESIS
+FF0A;F;FULLWIDTH ASTERISK
+FF0B;F;FULLWIDTH PLUS SIGN
+FF0C;F;FULLWIDTH COMMA
+FF0D;F;FULLWIDTH HYPHEN-MINUS
+FF0E;F;FULLWIDTH FULL STOP
+FF0F;F;FULLWIDTH SOLIDUS
+FF10;F;FULLWIDTH DIGIT ZERO
+FF11;F;FULLWIDTH DIGIT ONE
+FF12;F;FULLWIDTH DIGIT TWO
+FF13;F;FULLWIDTH DIGIT THREE
+FF14;F;FULLWIDTH DIGIT FOUR
+FF15;F;FULLWIDTH DIGIT FIVE
+FF16;F;FULLWIDTH DIGIT SIX
+FF17;F;FULLWIDTH DIGIT SEVEN
+FF18;F;FULLWIDTH DIGIT EIGHT
+FF19;F;FULLWIDTH DIGIT NINE
+FF1A;F;FULLWIDTH COLON
+FF1B;F;FULLWIDTH SEMICOLON
+FF1C;F;FULLWIDTH LESS-THAN SIGN
+FF1D;F;FULLWIDTH EQUALS SIGN
+FF1E;F;FULLWIDTH GREATER-THAN SIGN
+FF1F;F;FULLWIDTH QUESTION MARK
+FF20;F;FULLWIDTH COMMERCIAL AT
+FF21;F;FULLWIDTH LATIN CAPITAL LETTER A
+FF22;F;FULLWIDTH LATIN CAPITAL LETTER B
+FF23;F;FULLWIDTH LATIN CAPITAL LETTER C
+FF24;F;FULLWIDTH LATIN CAPITAL LETTER D
+FF25;F;FULLWIDTH LATIN CAPITAL LETTER E
+FF26;F;FULLWIDTH LATIN CAPITAL LETTER F
+FF27;F;FULLWIDTH LATIN CAPITAL LETTER G
+FF28;F;FULLWIDTH LATIN CAPITAL LETTER H
+FF29;F;FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;F;FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;F;FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;F;FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;F;FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;F;FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;F;FULLWIDTH LATIN CAPITAL LETTER O
+FF30;F;FULLWIDTH LATIN CAPITAL LETTER P
+FF31;F;FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;F;FULLWIDTH LATIN CAPITAL LETTER R
+FF33;F;FULLWIDTH LATIN CAPITAL LETTER S
+FF34;F;FULLWIDTH LATIN CAPITAL LETTER T
+FF35;F;FULLWIDTH LATIN CAPITAL LETTER U
+FF36;F;FULLWIDTH LATIN CAPITAL LETTER V
+FF37;F;FULLWIDTH LATIN CAPITAL LETTER W
+FF38;F;FULLWIDTH LATIN CAPITAL LETTER X
+FF39;F;FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;F;FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;F;FULLWIDTH LEFT SQUARE BRACKET
+FF3C;F;FULLWIDTH REVERSE SOLIDUS
+FF3D;F;FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;F;FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;F;FULLWIDTH LOW LINE
+FF40;F;FULLWIDTH GRAVE ACCENT
+FF41;F;FULLWIDTH LATIN SMALL LETTER A
+FF42;F;FULLWIDTH LATIN SMALL LETTER B
+FF43;F;FULLWIDTH LATIN SMALL LETTER C
+FF44;F;FULLWIDTH LATIN SMALL LETTER D
+FF45;F;FULLWIDTH LATIN SMALL LETTER E
+FF46;F;FULLWIDTH LATIN SMALL LETTER F
+FF47;F;FULLWIDTH LATIN SMALL LETTER G
+FF48;F;FULLWIDTH LATIN SMALL LETTER H
+FF49;F;FULLWIDTH LATIN SMALL LETTER I
+FF4A;F;FULLWIDTH LATIN SMALL LETTER J
+FF4B;F;FULLWIDTH LATIN SMALL LETTER K
+FF4C;F;FULLWIDTH LATIN SMALL LETTER L
+FF4D;F;FULLWIDTH LATIN SMALL LETTER M
+FF4E;F;FULLWIDTH LATIN SMALL LETTER N
+FF4F;F;FULLWIDTH LATIN SMALL LETTER O
+FF50;F;FULLWIDTH LATIN SMALL LETTER P
+FF51;F;FULLWIDTH LATIN SMALL LETTER Q
+FF52;F;FULLWIDTH LATIN SMALL LETTER R
+FF53;F;FULLWIDTH LATIN SMALL LETTER S
+FF54;F;FULLWIDTH LATIN SMALL LETTER T
+FF55;F;FULLWIDTH LATIN SMALL LETTER U
+FF56;F;FULLWIDTH LATIN SMALL LETTER V
+FF57;F;FULLWIDTH LATIN SMALL LETTER W
+FF58;F;FULLWIDTH LATIN SMALL LETTER X
+FF59;F;FULLWIDTH LATIN SMALL LETTER Y
+FF5A;F;FULLWIDTH LATIN SMALL LETTER Z
+FF5B;F;FULLWIDTH LEFT CURLY BRACKET
+FF5C;F;FULLWIDTH VERTICAL LINE
+FF5D;F;FULLWIDTH RIGHT CURLY BRACKET
+FF5E;F;FULLWIDTH TILDE
+FF61;H;HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;H;HALFWIDTH LEFT CORNER BRACKET
+FF63;H;HALFWIDTH RIGHT CORNER BRACKET
+FF64;H;HALFWIDTH IDEOGRAPHIC COMMA
+FF65;H;HALFWIDTH KATAKANA MIDDLE DOT
+FF66;H;HALFWIDTH KATAKANA LETTER WO
+FF67;H;HALFWIDTH KATAKANA LETTER SMALL A
+FF68;H;HALFWIDTH KATAKANA LETTER SMALL I
+FF69;H;HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;H;HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;H;HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;H;HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;H;HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;H;HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;H;HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;H;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;H;HALFWIDTH KATAKANA LETTER A
+FF72;H;HALFWIDTH KATAKANA LETTER I
+FF73;H;HALFWIDTH KATAKANA LETTER U
+FF74;H;HALFWIDTH KATAKANA LETTER E
+FF75;H;HALFWIDTH KATAKANA LETTER O
+FF76;H;HALFWIDTH KATAKANA LETTER KA
+FF77;H;HALFWIDTH KATAKANA LETTER KI
+FF78;H;HALFWIDTH KATAKANA LETTER KU
+FF79;H;HALFWIDTH KATAKANA LETTER KE
+FF7A;H;HALFWIDTH KATAKANA LETTER KO
+FF7B;H;HALFWIDTH KATAKANA LETTER SA
+FF7C;H;HALFWIDTH KATAKANA LETTER SI
+FF7D;H;HALFWIDTH KATAKANA LETTER SU
+FF7E;H;HALFWIDTH KATAKANA LETTER SE
+FF7F;H;HALFWIDTH KATAKANA LETTER SO
+FF80;H;HALFWIDTH KATAKANA LETTER TA
+FF81;H;HALFWIDTH KATAKANA LETTER TI
+FF82;H;HALFWIDTH KATAKANA LETTER TU
+FF83;H;HALFWIDTH KATAKANA LETTER TE
+FF84;H;HALFWIDTH KATAKANA LETTER TO
+FF85;H;HALFWIDTH KATAKANA LETTER NA
+FF86;H;HALFWIDTH KATAKANA LETTER NI
+FF87;H;HALFWIDTH KATAKANA LETTER NU
+FF88;H;HALFWIDTH KATAKANA LETTER NE
+FF89;H;HALFWIDTH KATAKANA LETTER NO
+FF8A;H;HALFWIDTH KATAKANA LETTER HA
+FF8B;H;HALFWIDTH KATAKANA LETTER HI
+FF8C;H;HALFWIDTH KATAKANA LETTER HU
+FF8D;H;HALFWIDTH KATAKANA LETTER HE
+FF8E;H;HALFWIDTH KATAKANA LETTER HO
+FF8F;H;HALFWIDTH KATAKANA LETTER MA
+FF90;H;HALFWIDTH KATAKANA LETTER MI
+FF91;H;HALFWIDTH KATAKANA LETTER MU
+FF92;H;HALFWIDTH KATAKANA LETTER ME
+FF93;H;HALFWIDTH KATAKANA LETTER MO
+FF94;H;HALFWIDTH KATAKANA LETTER YA
+FF95;H;HALFWIDTH KATAKANA LETTER YU
+FF96;H;HALFWIDTH KATAKANA LETTER YO
+FF97;H;HALFWIDTH KATAKANA LETTER RA
+FF98;H;HALFWIDTH KATAKANA LETTER RI
+FF99;H;HALFWIDTH KATAKANA LETTER RU
+FF9A;H;HALFWIDTH KATAKANA LETTER RE
+FF9B;H;HALFWIDTH KATAKANA LETTER RO
+FF9C;H;HALFWIDTH KATAKANA LETTER WA
+FF9D;H;HALFWIDTH KATAKANA LETTER N
+FF9E;H;HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;H;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;H;HALFWIDTH HANGUL FILLER
+FFA1;H;HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;H;HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;H;HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;H;HALFWIDTH HANGUL LETTER NIEUN
+FFA5;H;HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;H;HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;H;HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;H;HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;H;HALFWIDTH HANGUL LETTER RIEUL
+FFAA;H;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;H;HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;H;HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;H;HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;H;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;H;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;H;HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;H;HALFWIDTH HANGUL LETTER MIEUM
+FFB2;H;HALFWIDTH HANGUL LETTER PIEUP
+FFB3;H;HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;H;HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;H;HALFWIDTH HANGUL LETTER SIOS
+FFB6;H;HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;H;HALFWIDTH HANGUL LETTER IEUNG
+FFB8;H;HALFWIDTH HANGUL LETTER CIEUC
+FFB9;H;HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;H;HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;H;HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;H;HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;H;HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;H;HALFWIDTH HANGUL LETTER HIEUH
+FFC2;H;HALFWIDTH HANGUL LETTER A
+FFC3;H;HALFWIDTH HANGUL LETTER AE
+FFC4;H;HALFWIDTH HANGUL LETTER YA
+FFC5;H;HALFWIDTH HANGUL LETTER YAE
+FFC6;H;HALFWIDTH HANGUL LETTER EO
+FFC7;H;HALFWIDTH HANGUL LETTER E
+FFCA;H;HALFWIDTH HANGUL LETTER YEO
+FFCB;H;HALFWIDTH HANGUL LETTER YE
+FFCC;H;HALFWIDTH HANGUL LETTER O
+FFCD;H;HALFWIDTH HANGUL LETTER WA
+FFCE;H;HALFWIDTH HANGUL LETTER WAE
+FFCF;H;HALFWIDTH HANGUL LETTER OE
+FFD2;H;HALFWIDTH HANGUL LETTER YO
+FFD3;H;HALFWIDTH HANGUL LETTER U
+FFD4;H;HALFWIDTH HANGUL LETTER WEO
+FFD5;H;HALFWIDTH HANGUL LETTER WE
+FFD6;H;HALFWIDTH HANGUL LETTER WI
+FFD7;H;HALFWIDTH HANGUL LETTER YU
+FFDA;H;HALFWIDTH HANGUL LETTER EU
+FFDB;H;HALFWIDTH HANGUL LETTER YI
+FFDC;H;HALFWIDTH HANGUL LETTER I
+FFE0;F;FULLWIDTH CENT SIGN
+FFE1;F;FULLWIDTH POUND SIGN
+FFE2;F;FULLWIDTH NOT SIGN
+FFE3;F;FULLWIDTH MACRON
+FFE4;F;FULLWIDTH BROKEN BAR
+FFE5;F;FULLWIDTH YEN SIGN
+FFE6;F;FULLWIDTH WON SIGN
+FFE8;H;HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;H;HALFWIDTH LEFTWARDS ARROW
+FFEA;H;HALFWIDTH UPWARDS ARROW
+FFEB;H;HALFWIDTH RIGHTWARDS ARROW
+FFEC;H;HALFWIDTH DOWNWARDS ARROW
+FFED;H;HALFWIDTH BLACK SQUARE
+FFEE;H;HALFWIDTH WHITE CIRCLE
+FFF9;N;INTERLINEAR ANNOTATION ANCHOR
+FFFA;N;INTERLINEAR ANNOTATION SEPARATOR
+FFFB;N;INTERLINEAR ANNOTATION TERMINATOR
+FFFC;N;OBJECT REPLACEMENT CHARACTER
+FFFD;A;REPLACEMENT CHARACTER
diff --git a/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl b/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl
new file mode 100644
index 0000000..c42e944
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FB00 FB4F
+END
diff --git a/contrib/perl5/lib/unicode/In/Arabic.pl b/contrib/perl5/lib/unicode/In/Arabic.pl
new file mode 100644
index 0000000..5010ab7
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Arabic.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0600 06FF
+END
diff --git a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl
new file mode 100644
index 0000000..6edd74d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FB50 FDFF
+END
diff --git a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl
new file mode 100644
index 0000000..9640739
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FE70 FEFE
+END
diff --git a/contrib/perl5/lib/unicode/In/Armenian.pl b/contrib/perl5/lib/unicode/In/Armenian.pl
new file mode 100644
index 0000000..19b74ac
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Armenian.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0530 058F
+END
diff --git a/contrib/perl5/lib/unicode/In/Arrows.pl b/contrib/perl5/lib/unicode/In/Arrows.pl
new file mode 100644
index 0000000..7ce4418
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Arrows.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2190 21FF
+END
diff --git a/contrib/perl5/lib/unicode/In/BasicLatin.pl b/contrib/perl5/lib/unicode/In/BasicLatin.pl
new file mode 100644
index 0000000..39987f1
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/BasicLatin.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 007F
+END
diff --git a/contrib/perl5/lib/unicode/In/Bengali.pl b/contrib/perl5/lib/unicode/In/Bengali.pl
new file mode 100644
index 0000000..c0a47d3
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Bengali.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0980 09FF
+END
diff --git a/contrib/perl5/lib/unicode/In/BlockElements.pl b/contrib/perl5/lib/unicode/In/BlockElements.pl
new file mode 100644
index 0000000..e96e64f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/BlockElements.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2580 259F
+END
diff --git a/contrib/perl5/lib/unicode/In/Bopomofo.pl b/contrib/perl5/lib/unicode/In/Bopomofo.pl
new file mode 100644
index 0000000..5535606
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Bopomofo.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3100 312F
+END
diff --git a/contrib/perl5/lib/unicode/In/BopomofoExtended.pl b/contrib/perl5/lib/unicode/In/BopomofoExtended.pl
new file mode 100644
index 0000000..d0ee43a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/BopomofoExtended.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+31A0 31BF
+END
diff --git a/contrib/perl5/lib/unicode/In/BoxDrawing.pl b/contrib/perl5/lib/unicode/In/BoxDrawing.pl
new file mode 100644
index 0000000..d580199
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/BoxDrawing.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2500 257F
+END
diff --git a/contrib/perl5/lib/unicode/In/BraillePatterns.pl b/contrib/perl5/lib/unicode/In/BraillePatterns.pl
new file mode 100644
index 0000000..e5c9e4c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/BraillePatterns.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2800 28FF
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibility.pl b/contrib/perl5/lib/unicode/In/CJKCompatibility.pl
new file mode 100644
index 0000000..07ab8ed
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKCompatibility.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3300 33FF
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl b/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl
new file mode 100644
index 0000000..122ccd7
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FE30 FE4F
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl b/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl
new file mode 100644
index 0000000..59c8e5d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+F900 FAFF
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl b/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl
new file mode 100644
index 0000000..d4c0c82
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2E80 2EFF
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl b/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl
new file mode 100644
index 0000000..24ecc37
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3000 303F
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl
new file mode 100644
index 0000000..351cf74
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+4E00 9FFF
+END
diff --git a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl
new file mode 100644
index 0000000..012f54c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3400 4DB5
+END
diff --git a/contrib/perl5/lib/unicode/In/Cherokee.pl b/contrib/perl5/lib/unicode/In/Cherokee.pl
new file mode 100644
index 0000000..10cae1a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Cherokee.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+13A0 13FF
+END
diff --git a/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl b/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl
new file mode 100644
index 0000000..a32f974
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0300 036F
+END
diff --git a/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl b/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl
new file mode 100644
index 0000000..100471b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FE20 FE2F
+END
diff --git a/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl b/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl
new file mode 100644
index 0000000..f45e7e0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+20D0 20FF
+END
diff --git a/contrib/perl5/lib/unicode/In/ControlPictures.pl b/contrib/perl5/lib/unicode/In/ControlPictures.pl
new file mode 100644
index 0000000..77a759f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/ControlPictures.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2400 243F
+END
diff --git a/contrib/perl5/lib/unicode/In/CurrencySymbols.pl b/contrib/perl5/lib/unicode/In/CurrencySymbols.pl
new file mode 100644
index 0000000..567ae97
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/CurrencySymbols.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+20A0 20CF
+END
diff --git a/contrib/perl5/lib/unicode/In/Cyrillic.pl b/contrib/perl5/lib/unicode/In/Cyrillic.pl
new file mode 100644
index 0000000..9ca104c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Cyrillic.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0400 04FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Devanagari.pl b/contrib/perl5/lib/unicode/In/Devanagari.pl
new file mode 100644
index 0000000..61372b5
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Devanagari.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0900 097F
+END
diff --git a/contrib/perl5/lib/unicode/In/Dingbats.pl b/contrib/perl5/lib/unicode/In/Dingbats.pl
new file mode 100644
index 0000000..0f820ca
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Dingbats.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2700 27BF
+END
diff --git a/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl b/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl
new file mode 100644
index 0000000..de52aa8
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2460 24FF
+END
diff --git a/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl b/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl
new file mode 100644
index 0000000..e4de0e0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3200 32FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Ethiopic.pl b/contrib/perl5/lib/unicode/In/Ethiopic.pl
new file mode 100644
index 0000000..13c3090
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Ethiopic.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1200 137F
+END
diff --git a/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl b/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl
new file mode 100644
index 0000000..81c7699
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2000 206F
+END
diff --git a/contrib/perl5/lib/unicode/In/GeometricShapes.pl b/contrib/perl5/lib/unicode/In/GeometricShapes.pl
new file mode 100644
index 0000000..170422d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/GeometricShapes.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+25A0 25FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Georgian.pl b/contrib/perl5/lib/unicode/In/Georgian.pl
new file mode 100644
index 0000000..773ed156
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Georgian.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+10A0 10FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Greek.pl b/contrib/perl5/lib/unicode/In/Greek.pl
new file mode 100644
index 0000000..ff753d1
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Greek.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0370 03FF
+END
diff --git a/contrib/perl5/lib/unicode/In/GreekExtended.pl b/contrib/perl5/lib/unicode/In/GreekExtended.pl
new file mode 100644
index 0000000..b8f02e7
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/GreekExtended.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1F00 1FFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Gujarati.pl b/contrib/perl5/lib/unicode/In/Gujarati.pl
new file mode 100644
index 0000000..ff6c650
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Gujarati.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0A80 0AFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Gurmukhi.pl b/contrib/perl5/lib/unicode/In/Gurmukhi.pl
new file mode 100644
index 0000000..b888df6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Gurmukhi.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0A00 0A7F
+END
diff --git a/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl b/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl
new file mode 100644
index 0000000..e452653
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FF00 FFEF
+END
diff --git a/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl b/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl
new file mode 100644
index 0000000..c15379f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3130 318F
+END
diff --git a/contrib/perl5/lib/unicode/In/HangulJamo.pl b/contrib/perl5/lib/unicode/In/HangulJamo.pl
new file mode 100644
index 0000000..c329b54
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HangulJamo.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1100 11FF
+END
diff --git a/contrib/perl5/lib/unicode/In/HangulSyllables.pl b/contrib/perl5/lib/unicode/In/HangulSyllables.pl
new file mode 100644
index 0000000..7d91a36
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HangulSyllables.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+AC00 D7A3
+END
diff --git a/contrib/perl5/lib/unicode/In/Hebrew.pl b/contrib/perl5/lib/unicode/In/Hebrew.pl
new file mode 100644
index 0000000..abe7b9e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Hebrew.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0590 05FF
+END
diff --git a/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl b/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl
new file mode 100644
index 0000000..6ed7ac9
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+DB80 DBFF
+END
diff --git a/contrib/perl5/lib/unicode/In/HighSurrogates.pl b/contrib/perl5/lib/unicode/In/HighSurrogates.pl
new file mode 100644
index 0000000..924a0c9
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/HighSurrogates.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+D800 DB7F
+END
diff --git a/contrib/perl5/lib/unicode/In/Hiragana.pl b/contrib/perl5/lib/unicode/In/Hiragana.pl
new file mode 100644
index 0000000..7a65302
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Hiragana.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3040 309F
+END
diff --git a/contrib/perl5/lib/unicode/In/IPAExtensions.pl b/contrib/perl5/lib/unicode/In/IPAExtensions.pl
new file mode 100644
index 0000000..20906d6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/IPAExtensions.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0250 02AF
+END
diff --git a/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl b/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl
new file mode 100644
index 0000000..4baae88
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2FF0 2FFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Kanbun.pl b/contrib/perl5/lib/unicode/In/Kanbun.pl
new file mode 100644
index 0000000..57d6bd2
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Kanbun.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3190 319F
+END
diff --git a/contrib/perl5/lib/unicode/In/KangxiRadicals.pl b/contrib/perl5/lib/unicode/In/KangxiRadicals.pl
new file mode 100644
index 0000000..d26fd6c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/KangxiRadicals.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2F00 2FDF
+END
diff --git a/contrib/perl5/lib/unicode/In/Kannada.pl b/contrib/perl5/lib/unicode/In/Kannada.pl
new file mode 100644
index 0000000..109197a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Kannada.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0C80 0CFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Katakana.pl b/contrib/perl5/lib/unicode/In/Katakana.pl
new file mode 100644
index 0000000..93bd5a0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Katakana.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+30A0 30FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Khmer.pl b/contrib/perl5/lib/unicode/In/Khmer.pl
new file mode 100644
index 0000000..f3e8685
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Khmer.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1780 17FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Lao.pl b/contrib/perl5/lib/unicode/In/Lao.pl
new file mode 100644
index 0000000..41ff11f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Lao.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0E80 0EFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl b/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl
new file mode 100644
index 0000000..1b252eb
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0080 00FF
+END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtended-A.pl b/contrib/perl5/lib/unicode/In/LatinExtended-A.pl
new file mode 100644
index 0000000..b8be987
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/LatinExtended-A.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0100 017F
+END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtended-B.pl b/contrib/perl5/lib/unicode/In/LatinExtended-B.pl
new file mode 100644
index 0000000..b9aff43
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/LatinExtended-B.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0180 024F
+END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl b/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl
new file mode 100644
index 0000000..d309e90
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1E00 1EFF
+END
diff --git a/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl b/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl
new file mode 100644
index 0000000..1768740
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2100 214F
+END
diff --git a/contrib/perl5/lib/unicode/In/LowSurrogates.pl b/contrib/perl5/lib/unicode/In/LowSurrogates.pl
new file mode 100644
index 0000000..752b264
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/LowSurrogates.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+DC00 DFFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Malayalam.pl b/contrib/perl5/lib/unicode/In/Malayalam.pl
new file mode 100644
index 0000000..8fb57cd
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Malayalam.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0D00 0D7F
+END
diff --git a/contrib/perl5/lib/unicode/In/MathematicalOperators.pl b/contrib/perl5/lib/unicode/In/MathematicalOperators.pl
new file mode 100644
index 0000000..055f19e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/MathematicalOperators.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2200 22FF
+END
diff --git a/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl b/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl
new file mode 100644
index 0000000..9dcdd26
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2600 26FF
+END
diff --git a/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl b/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl
new file mode 100644
index 0000000..370c00f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2300 23FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Mongolian.pl b/contrib/perl5/lib/unicode/In/Mongolian.pl
new file mode 100644
index 0000000..394014d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Mongolian.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1800 18AF
+END
diff --git a/contrib/perl5/lib/unicode/In/Myanmar.pl b/contrib/perl5/lib/unicode/In/Myanmar.pl
new file mode 100644
index 0000000..4b3f318
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Myanmar.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1000 109F
+END
diff --git a/contrib/perl5/lib/unicode/In/NumberForms.pl b/contrib/perl5/lib/unicode/In/NumberForms.pl
new file mode 100644
index 0000000..d33ece0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/NumberForms.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2150 218F
+END
diff --git a/contrib/perl5/lib/unicode/In/Ogham.pl b/contrib/perl5/lib/unicode/In/Ogham.pl
new file mode 100644
index 0000000..e097d90
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Ogham.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1680 169F
+END
diff --git a/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl b/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl
new file mode 100644
index 0000000..be1d981
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2440 245F
+END
diff --git a/contrib/perl5/lib/unicode/In/Oriya.pl b/contrib/perl5/lib/unicode/In/Oriya.pl
new file mode 100644
index 0000000..5a680f6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Oriya.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0B00 0B7F
+END
diff --git a/contrib/perl5/lib/unicode/In/PrivateUse.pl b/contrib/perl5/lib/unicode/In/PrivateUse.pl
new file mode 100644
index 0000000..0c118f4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/PrivateUse.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+E000 F8FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Runic.pl b/contrib/perl5/lib/unicode/In/Runic.pl
new file mode 100644
index 0000000..0bd42df
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Runic.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+16A0 16FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Sinhala.pl b/contrib/perl5/lib/unicode/In/Sinhala.pl
new file mode 100644
index 0000000..37e007c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Sinhala.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0D80 0DFF
+END
diff --git a/contrib/perl5/lib/unicode/In/SmallFormVariants.pl b/contrib/perl5/lib/unicode/In/SmallFormVariants.pl
new file mode 100644
index 0000000..736415e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/SmallFormVariants.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FE50 FE6F
+END
diff --git a/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl b/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl
new file mode 100644
index 0000000..6e9cdf0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+02B0 02FF
+END
diff --git a/contrib/perl5/lib/unicode/In/Specials.pl b/contrib/perl5/lib/unicode/In/Specials.pl
new file mode 100644
index 0000000..f9f730f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Specials.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+FFF0 FFFD
+END
diff --git a/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl b/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl
new file mode 100644
index 0000000..efcec0b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2070 209F
+END
diff --git a/contrib/perl5/lib/unicode/In/Syriac.pl b/contrib/perl5/lib/unicode/In/Syriac.pl
new file mode 100644
index 0000000..7c81fb6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Syriac.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0700 074F
+END
diff --git a/contrib/perl5/lib/unicode/In/Tamil.pl b/contrib/perl5/lib/unicode/In/Tamil.pl
new file mode 100644
index 0000000..e65ed2f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Tamil.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0B80 0BFF
+END
diff --git a/contrib/perl5/lib/unicode/In/Telugu.pl b/contrib/perl5/lib/unicode/In/Telugu.pl
new file mode 100644
index 0000000..d5ed236
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Telugu.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0C00 0C7F
+END
diff --git a/contrib/perl5/lib/unicode/In/Thaana.pl b/contrib/perl5/lib/unicode/In/Thaana.pl
new file mode 100644
index 0000000..361bd4d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Thaana.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0780 07BF
+END
diff --git a/contrib/perl5/lib/unicode/In/Thai.pl b/contrib/perl5/lib/unicode/In/Thai.pl
new file mode 100644
index 0000000..3376de4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Thai.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0E00 0E7F
+END
diff --git a/contrib/perl5/lib/unicode/In/Tibetan.pl b/contrib/perl5/lib/unicode/In/Tibetan.pl
new file mode 100644
index 0000000..50837ad
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/Tibetan.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0F00 0FFF
+END
diff --git a/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl b/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl
new file mode 100644
index 0000000..ad4eb27
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1400 167F
+END
diff --git a/contrib/perl5/lib/unicode/In/YiRadicals.pl b/contrib/perl5/lib/unicode/In/YiRadicals.pl
new file mode 100644
index 0000000..f25c695
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/YiRadicals.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+A490 A4CF
+END
diff --git a/contrib/perl5/lib/unicode/In/YiSyllables.pl b/contrib/perl5/lib/unicode/In/YiSyllables.pl
new file mode 100644
index 0000000..f4e3a8b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/In/YiSyllables.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+A000 A48F
+END
diff --git a/contrib/perl5/lib/unicode/Index.txt b/contrib/perl5/lib/unicode/Index.txt
new file mode 100644
index 0000000..1ebeea6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Index.txt
@@ -0,0 +1,3055 @@
+8859-1 (Latin-1), Based on ISO 00A0
+8859-2, -3, -4, -9 (European Latin), Based on ISO 0100
+8859-5 (Cyrillic), Based on ISO 0400
+8859-6 (Arabic), Based on ISO 0600
+8859-7 (Greek), Based on ISO 0370
+8859-8 (Hebrew), Based on ISO 05D0
+a, latin small letter script 0251
+A, LATIN SMALL LETTER TURNED 0250
+ABBREVIATION MARK, ARMENIAN 055F
+ABBREVIATION SIGN, DEVANAGARI 0970
+Abbreviations, Squared Latin 3371
+Aboriginal Syllabics, Unified Canadian 1400
+ABOVE RIGHT, COMBINING COMMA 0315
+above, cedilla 0312
+ABOVE, COMBINING ALMOST EQUAL TO 034C
+ABOVE, COMBINING BRIDGE 0346
+ABOVE, COMBINING CLOCKWISE ARROW 20D5
+ABOVE, COMBINING COMMA 0313
+ABOVE, COMBINING DOT 0307
+ABOVE, COMBINING DOUBLE VERTICAL LINE 030E
+ABOVE, COMBINING FOUR DOTS 20DC
+ABOVE, COMBINING HOMOTHETIC 034B
+ABOVE, COMBINING HOOK 0309
+ABOVE, COMBINING LEFT ANGLE 031A
+ABOVE, COMBINING LEFT ARROW 20D6
+ABOVE, COMBINING LEFT HARPOON 20D0
+ABOVE, COMBINING LEFT RIGHT ARROW 20E1
+ABOVE, COMBINING NOT TILDE 034A
+ABOVE, COMBINING REVERSED COMMA 0314
+ABOVE, COMBINING RING 030A
+ABOVE, COMBINING THREE DOTS 20DB
+ABOVE, COMBINING TURNED COMMA 0312
+ABOVE, COMBINING VERTICAL LINE 030D
+ABOVE, COMBINING X 033D
+ABOVE, DOT 02D9
+above, double dot 0308
+ABOVE, RING 02DA
+above, vee 030C
+ACCENT BELOW, COMBINING ACUTE 0317
+ACCENT BELOW, COMBINING CIRCUMFLEX 032D
+ACCENT BELOW, COMBINING GRAVE 0316
+ACCENT, ACUTE 00B4
+ACCENT, CIRCUMFLEX 005E
+ACCENT, COMBINING ACUTE 0301
+ACCENT, COMBINING CIRCUMFLEX 0302
+ACCENT, COMBINING DOUBLE ACUTE 030B
+ACCENT, COMBINING DOUBLE GRAVE 030F
+ACCENT, COMBINING GRAVE 0300
+ACCENT, DOUBLE ACUTE 02DD
+ACCENT, GRAVE 0060
+ACCENT, MODIFIER LETTER ACUTE 02CA
+ACCENT, MODIFIER LETTER CIRCUMFLEX 02C6
+ACCENT, MODIFIER LETTER CROSS 02DF
+ACCENT, MODIFIER LETTER GRAVE 02CB
+ACCENT, MODIFIER LETTER LOW ACUTE 02CF
+ACCENT, MODIFIER LETTER LOW GRAVE 02CE
+accent, swedish grave 02DF
+ACCOUNT OF 2100
+acknowledge 0006
+acknowledge, graphic for negative 237B
+acknowledge, negative 0015
+ACKNOWLEDGE, SYMBOL FOR 2406
+ACKNOWLEDGE, SYMBOL FOR NEGATIVE 2415
+ACTIVATE ARABIC FORM SHAPING 206D
+ACTIVATE SYMMETRIC SWAPPING 206B
+ACUTE ACCENT 00B4
+ACUTE ACCENT BELOW, COMBINING 0317
+ACUTE ACCENT, COMBINING 0301
+ACUTE ACCENT, COMBINING DOUBLE 030B
+ACUTE ACCENT, DEVANAGARI 0954
+ACUTE ACCENT, DOUBLE 02DD
+ACUTE ACCENT, MODIFIER LETTER 02CA
+ACUTE ACCENT, MODIFIER LETTER LOW 02CF
+ACUTE TONE MARK, COMBINING 0341
+acute, spacing 00B4
+ADDRESSED TO THE SUBJECT 2101
+AE, LATIN SMALL LETTER 00E6
+AIRPLANE 2708
+aldus leaf 2766
+ALEF SYMBOL 2135
+ALL AROUND-PROFILE 232E
+ALL EQUAL TO 224C
+ALL, FOR 2200
+ALMOST EQUAL TO 2248
+ALMOST EQUAL TO ABOVE, COMBINING 034C
+ALPHA, LATIN SMALL LETTER 0251
+ALPHA, LATIN SMALL LETTER TURNED 0252
+Alphabetic Presentation Forms FB00
+Alphanumerics, Enclosed 2460
+alternating current 223F
+ALTERNATIVE KEY SYMBOL 2387
+ALVEOLAR CLICK, LATIN LETTER 01C2
+AMPERSAND 0026
+AND, CURLY LOGICAL 22CF
+AND, LOGICAL 2227
+AND, N-ARY LOGICAL 22C0
+ANGLE 2220
+ANGLE ABOVE, COMBINING LEFT 031A
+angle arc 2222
+ANGLE BELOW, COMBINING LEFT 0349
+ANGLE BRACKET, LEFT 3008
+ANGLE BRACKET, LEFT DOUBLE 300A
+ANGLE BRACKET, LEFT-POINTING 2329
+ANGLE BRACKET, RIGHT-POINTING 232A
+ANGLE QUOTATION MARK, LEFT-POINTING DOUBLE 00AB
+ANGLE QUOTATION MARK, RIGHT-POINTING DOUBLE 00BB
+ANGLE QUOTATION MARK, SINGLE LEFT-POINTING 2039
+ANGLE QUOTATION MARK, SINGLE RIGHT-POINTING 203A
+ANGLE WITH ARC, RIGHT 22BE
+ANGLE, MEASURED 2221
+ANGLE, RIGHT 221F
+ANGLE, SPHERICAL 2222
+angled dash 00AC
+ANGSTROM SIGN 212B
+ANKH 2625
+Annotation Signs, Koranic 06D6
+Annotation, Interlinear FFF9
+Annotation, Kanbun Ideographic 3190
+APL 2336
+APL Functional Symbols 2336
+apl jot 2218
+apl overbar 00AF
+apl quote 0022
+apl stile 2223
+apl tilde 223C
+apl upstile 2308
+APOSTROPHE 0027
+apostrophe 02BC
+apostrophe 2019
+APOSTROPHE, ARMENIAN 055A
+APOSTROPHE, MODIFIER LETTER 02BC
+APOSTROPHE, MODIFIER LETTER DOUBLE 02EE
+apostrophe-quote 0027
+application program command 009F
+APPROACHES THE LIMIT 2250
+APPROXIMATELY EQUAL TO 2245
+approximately equal to 2257
+AQUARIUS 2652
+Arabic 0600
+ARABIC COMMA 060C
+ARABIC DECIMAL SEPARATOR 066B
+ARABIC FIVE POINTED STAR 066D
+ARABIC FORM SHAPING, ACTIVATE 206D
+ARABIC FORM SHAPING, INHIBIT 206C
+ARABIC FULL STOP 06D4
+Arabic Letters 0627
+ARABIC PERCENT SIGN 066A
+Arabic Points 064B
+Arabic Presentation Forms-A FB50
+Arabic Presentation Forms-B FE70
+ARABIC QUESTION MARK 061F
+ARABIC SEMICOLON 061B
+ARABIC THOUSANDS SEPARATOR 066C
+Arabic, Extended 0671
+Arabic-Indic Digits 0660
+Arabic-Indic Digits for Persian and Urdu, Eastern 06F0
+ARC 2312
+arc, angle 2222
+ARC, RIGHT ANGLE WITH 22BE
+ARCH BELOW, COMBINING INVERTED DOUBLE 032B
+Arcs 25DC
+area, end of guarded 0097
+area, end of selected 0087
+area, start of guarded 0096
+area, start of selected 0086
+ARIES 2648
+Armenian 0530
+ARMENIAN ABBREVIATION MARK 055F
+ARMENIAN APOSTROPHE 055A
+Armenian Capital Letters 0531
+ARMENIAN COMMA 055D
+ARMENIAN EMPHASIS MARK 055B
+ARMENIAN EXCLAMATION MARK 055C
+ARMENIAN FULL STOP 0589
+ARMENIAN HYPHEN 058A
+Armenian Ligatures FB13
+ARMENIAN QUESTION MARK 055E
+Armenian Small Letters 0561
+ARROW ABOVE, COMBINING CLOCKWISE 20D5
+ARROW ABOVE, COMBINING LEFT 20D6
+ARROW ABOVE, COMBINING LEFT RIGHT 20E1
+ARROW BELOW, COMBINING DOUBLE RIGHTWARDS 0362
+ARROW BELOW, COMBINING LEFT RIGHT 034D
+ARROW BELOW, COMBINING UPWARDS 034E
+Arrow Dingbats 2794
+ARROW, ELECTRIC 2301
+ARROWHEAD, UP 2303
+Arrowheads, Modifier Letter 02C2
+Arrows 2190
+ASCENDING NODE 260A
+ASCII 0020
+ASCII C0 Control Codes 0000
+ASCII Digits 0030
+ASCII Variants, Fullwidth FF01
+ash 00E6
+ASSERTION 22A6
+ASTERISK 002A
+Asterisk Dingbats 2722
+ASTERISK OPERATOR 2217
+ASTERISK OPERATOR, CIRCLED 229B
+Asterisks and Snowflakes, Stars, 2721
+ASTERISM 2042
+Astrological Symbols 263D
+asymptotic to 2248
+ASYMPTOTICALLY EQUAL TO 2243
+AT, COMMERCIAL 0040
+B, LATIN LETTER SMALL CAPITAL 0299
+B, SCRIPT CAPITAL 212C
+baby gamma, latin small letter 0264
+backslash 005C
+BACKSLASH, COMBINING ENCLOSING CIRCLE 20E0
+backspace 0008
+BACKSPACE, SYMBOL FOR 2408
+backward difference 2207
+BAHT, THAI CURRENCY SYMBOL 0E3F
+BALLOT BOX 2610
+BALLOT BOX WITH CHECK 2611
+BALLOT BOX WITH X 2612
+BALLOT X 2717
+BALLOT X, HEAVY 2718
+bang 0021
+Bar Dingbats, Vertical 2758
+bar, broken vertical 00A6
+BAR, HORIZONTAL 2015
+bar, vertical 007C
+barred o, latin capital letter 019F
+BARRED O, LATIN SMALL LETTER 0275
+Basic Latin, C0 Controls and 0000
+Basic Russian Alphabet 0410
+BEAMED EIGHTH NOTES 266B
+BEAMED SIXTEENTH NOTES 266C
+BECAUSE 2235
+beginning of line 2310
+bell 0007
+BELL SYMBOL 237E
+BELL, SYMBOL FOR 2407
+BELOW, COMBINING ACUTE ACCENT 0317
+BELOW, COMBINING BREVE 032E
+BELOW, COMBINING BRIDGE 032A
+BELOW, COMBINING CARON 032C
+BELOW, COMBINING CIRCUMFLEX ACCENT 032D
+BELOW, COMBINING COMMA 0326
+BELOW, COMBINING DIAERESIS 0324
+BELOW, COMBINING DOT 0323
+BELOW, COMBINING DOUBLE RIGHTWARDS ARROW 0362
+BELOW, COMBINING DOUBLE VERTICAL LINE 0348
+BELOW, COMBINING EQUALS SIGN 0347
+BELOW, COMBINING GRAVE ACCENT 0316
+BELOW, COMBINING INVERTED BREVE 032F
+BELOW, COMBINING INVERTED BRIDGE 033A
+BELOW, COMBINING INVERTED DOUBLE ARCH 032B
+BELOW, COMBINING LEFT ANGLE 0349
+BELOW, COMBINING LEFT HALF RING 031C
+BELOW, COMBINING LEFT RIGHT ARROW 034D
+BELOW, COMBINING LEFT TACK 0318
+BELOW, COMBINING MACRON 0331
+BELOW, COMBINING MINUS SIGN 0320
+BELOW, COMBINING PALATALIZED HOOK 0321
+BELOW, COMBINING PLUS SIGN 031F
+BELOW, COMBINING RETROFLEX HOOK 0322
+BELOW, COMBINING RIGHT HALF RING 0339
+BELOW, COMBINING RING 0325
+BELOW, COMBINING SEAGULL 033C
+BELOW, COMBINING SQUARE 033B
+BELOW, COMBINING TILDE 0330
+BELOW, COMBINING UP TACK 031D
+BELOW, COMBINING UPWARDS ARROW 034E
+BELOW, COMBINING VERTICAL LINE 0329
+below, greek non-spacing iota 0345
+Bengali 0980
+Bengali Currency Signs 09F2
+Bengali Digits 09E6
+Bengali Letters 0985
+BENGALI RUPEE MARK 09F2
+BENGALI RUPEE SIGN 09F3
+BENZENE RING 232C
+bernoulli function 212C
+BET SYMBOL 2136
+Betty BOOP
+BETWEEN 226C
+BIDENTAL PERCUSSIVE, LATIN LETTER 02AD
+Bidirectional Formatting Controls 202A
+Big 5, Duplicates from FA0C
+BILABIAL CLICK, LATIN LETTER 0298
+BILABIAL PERCUSSIVE, LATIN LETTER 02AC
+BIOHAZARD SIGN 2623
+BLACK LEFT POINTING INDEX 261A
+BLACK LEFTWARDS BULLET 204C
+BLACK LENTICULAR BRACKET, LEFT 3010
+BLACK NIB 2712
+BLACK PARALLELOGRAM 25B0
+BLACK SCISSORS 2702
+black small circle 2022
+BLACK SMILING FACE 263B
+BLACK STAR 2605
+BLACK SUN WITH RAYS 2600
+BLACK TELEPHONE 260E
+BLACK-LETTER CAPITAL C 212D
+BLACK-LETTER CAPITAL H 210C
+BLACK-LETTER CAPITAL I 2111
+BLACK-LETTER CAPITAL R 211C
+BLACK-LETTER CAPITAL Z 2128
+BLANK SYMBOL 2422
+Block Elements 2580
+block, end of transmission 0017
+BLOCK, SYMBOL FOR END OF TRANSMISSION 2417
+bom FEFF
+Bopomofo Extended for Minnan and Hakka, Chinese 31A0
+Bopomofo, Chinese 3100
+BOWTIE 22C8
+Box Drawing 2500
+BOX WITH CHECK, BALLOT 2611
+BOX WITH X, BALLOT 2612
+BOX, BALLOT 2610
+BOX, OPEN 2423
+BOX, SHOULDERED OPEN 237D
+BOX, X IN A RECTANGLE 2327
+bra 2329
+brace, closing 007D
+brace, opening 007B
+BRACKET WITH QUILL, LEFT SQUARE 2045
+bracket, closing curly 007D
+bracket, closing square 005D
+BRACKET, LEFT ANGLE 3008
+BRACKET, LEFT BLACK LENTICULAR 3010
+BRACKET, LEFT CORNER 300C
+BRACKET, LEFT CURLY 007B
+BRACKET, LEFT DOUBLE ANGLE 300A
+BRACKET, LEFT SQUARE 005B
+BRACKET, LEFT TORTOISE SHELL 3014
+BRACKET, LEFT WHITE CORNER 300E
+BRACKET, LEFT WHITE LENTICULAR 3016
+BRACKET, LEFT WHITE SQUARE 301A
+BRACKET, LEFT WHITE TORTOISE SHELL 3018
+BRACKET, LEFT-POINTING ANGLE 2329
+bracket, opening curly 007B
+bracket, opening square 005B
+BRACKET, RIGHT CURLY 007D
+BRACKET, RIGHT SQUARE 005D
+Braille Patterns 2800
+brazilian currency 20A2
+break here, no 0083
+break permitted here 0082
+breathing, rough 0314
+breathing, smooth 0313
+BREVE 02D8
+BREVE BELOW, COMBINING 032E
+BREVE BELOW, COMBINING INVERTED 032F
+BREVE, COMBINING 0306
+BREVE, COMBINING DOUBLE INVERTED 0361
+BREVE, COMBINING INVERTED 0311
+BRIDGE ABOVE, COMBINING 0346
+BRIDGE BELOW, COMBINING 032A
+BRIDGE BELOW, COMBINING INVERTED 033A
+broken vertical bar 00A6
+BULLET 2022
+BULLET OPERATOR 2219
+BULLET, BLACK LEFTWARDS 204C
+BULLET, HYPHEN 2043
+BULLET, REVERSED ROTATED FLORAL HEART 2619
+bullet, tainome (japanese, a kind of) 25C9
+BULLET, TRIANGULAR 2023
+BULLET, WHITE 25E6
+BULLSEYE 25CE
+bullseye, latin letter 0298
+by definition, equal to 225C
+BY DEFINITION, EQUAL TO 225D
+BY, MEASURED 225E
+byte order mark FEFF
+C, BLACK-LETTER CAPITAL 212D
+C, DOUBLE-STRUCK CAPITAL 2102
+C, LATIN LETTER STRETCHED 0297
+C0 Controls and Basic Latin 0000
+C1 Controls and Latin-1 Supplement 0080
+CADA UNA 2106
+CADUCEUS 2624
+Canadian Aboriginal Syllabics, Unified 1400
+cancel 0018
+cancel character 0094
+CANCEL, SYMBOL FOR 2418
+CANCER 264B
+CANDRABINDU, COMBINING 0310
+Cantillation Marks, Hebrew 0591
+cap 2229
+CAP, SQUARE 2293
+Capital Letters, Armenian 0531
+Capital Letters, Cyrillic 0401
+Capital Letters, Georgian 10A0
+Capital Letters, Greek 0391
+Capital Letters, Latin 0041
+CAPRICORN 2651
+caps lock 21EA
+caps lock 21EC
+Card Suits, Playing 2660
+cardinal (countable), first transfinite 2135
+cardinal (functions of a real variable), third transfinite 2137
+cardinal (the continuum), second transfinite 2136
+CARE OF 2105
+caret 028C
+CARET 2038
+CARET INSERTION POINT 2041
+CARON 02C7
+CARON BELOW, COMBINING 032C
+CARON, COMBINING 030C
+carriage return 000D
+carriage return 21B5
+CARRIAGE RETURN, SYMBOL FOR 240D
+CAUTION SIGN 2621
+CEDILLA 00B8
+cedilla above 0312
+CEDILLA, COMBINING 0327
+cedilla, spacing 00B8
+CEILING, LEFT 2308
+CELSIUS, DEGREE 2103
+CENT SIGN 00A2
+centigrade, degrees 2103
+CENTRE LINE SYMBOL 2104
+CENTRED LEFT HALF RING, MODIFIER LETTER 02D3
+CENTRELINE LOW LINE FE4E
+CENTRELINE OVERLINE FE4A
+character introducer, single 009A
+character tabulation set 0088
+character tabulation with justification 0089
+CHARACTER TIE 2040
+Chart Components, Form and 2500
+CHECK MARK 2713
+CHECK MARK, HEAVY 2714
+CHECK MARK, NOT 237B
+CHECK, BALLOT BOX WITH 2611
+Cherokee 13A0
+Chess Pieces 2654
+chevrons 00AB
+CHI RHO 2627
+Chinese Bopomofo 3100
+Chinese Bopomofo Extended for Minnan and Hakka 31A0
+CIRCLE BACKSLASH, COMBINING ENCLOSING 20E0
+CIRCLE, BLACK 25CF
+circle, black small 2022
+CIRCLE, COMBINING ENCLOSING 20DD
+circle, jis composition 20DD
+CIRCLE, LARGE 25EF
+CIRCLED ASTERISK OPERATOR 229B
+CIRCLED DASH 229D
+CIRCLED DIGIT ZERO 24EA
+Circled Digits, Dingbat 2776
+CIRCLED DIVISION SLASH 2298
+CIRCLED DOT OPERATOR 2299
+CIRCLED EQUALS 229C
+Circled Ideographs 3280
+Circled Inverse Numbers 2776
+Circled Japanese Katakana 32D0
+Circled Korean Hangul Elements 3260
+Circled Korean Hangul Syllables 326E
+Circled Latin Letters 24B6
+CIRCLED MINUS 2296
+Circled Numbers 2460
+CIRCLED PLUS 2295
+CIRCLED POSTAL MARK 3036
+CIRCLED RING OPERATOR 229A
+CIRCLED TIMES 2297
+Circles 25CB
+CIRCUMFLEX ACCENT 005E
+CIRCUMFLEX ACCENT BELOW, COMBINING 032D
+CIRCUMFLEX ACCENT, COMBINING 0302
+CIRCUMFLEX ACCENT, MODIFIER LETTER 02C6
+circumflex, spacing 005E
+CJK Compatibility 3300
+CJK Compatibility Forms FE30
+CJK Compatibility Ideographs F900
+CJK Compatibility Ideographs, IBM FA0E
+CJK Ideographs Area 3400
+CJK Letters and Ideographs, Enclosed 3200
+CJK Phonetics and Symbols Area 2E00
+CJK Radicals Supplement 2E80
+CJK Symbols and Punctuation 3000
+CJK Unified Ideographs 4E00
+CJK Unified Ideographs Extension A 3400
+clear key 2327
+CLEAR SCREEN SYMBOL 239A
+clear weather 2600
+CLICK, LATIN LETTER ALVEOLAR 01C2
+CLICK, LATIN LETTER BILABIAL 0298
+CLICK, LATIN LETTER DENTAL 01C0
+CLICK, LATIN LETTER LATERAL 01C1
+CLICK, LATIN LETTER RETROFLEX 01C3
+CLOCKWISE ARROW ABOVE, COMBINING 20D5
+CLOCKWISE CONTOUR INTEGRAL 2232
+CLOCKWISE INTEGRAL 2231
+CLOCKWISE RING OVERLAY, COMBINING 20D9
+clone 2104
+Clones of Diacritics, Spacing 02D8
+closed epsilon, latin small letter 029A
+CLOSED OMEGA, LATIN SMALL LETTER 0277
+CLOSED OPEN E, LATIN SMALL LETTER 029A
+closed reversed epsilon, latin small letter 025E
+CLOSED REVERSED OPEN E, LATIN SMALL LETTER 025E
+closing brace 007D
+closing curly bracket 007D
+CLOSING MARK, IDEOGRAPHIC 3006
+closing parenthesis 0029
+closing square bracket 005D
+CLOUD 2601
+cloudy weather 2601
+COLON 003A
+COLON EQUALS 2254
+COLON SIGN 20A1
+COLON, ETHIOPIC 1365
+COLON, MODIFIER LETTER HALF TRIANGULAR 02D1
+COLON, MODIFIER LETTER TRIANGULAR 02D0
+COLON, MONGOLIAN 1804
+COMBINING ACUTE ACCENT 0301
+COMBINING ACUTE ACCENT BELOW 0317
+COMBINING ACUTE TONE MARK 0341
+COMBINING ALMOST EQUAL TO ABOVE 034C
+Combining Alphabet, Korean Hangul Jamo 1100
+COMBINING BREVE 0306
+COMBINING BREVE BELOW 032E
+COMBINING BRIDGE ABOVE 0346
+COMBINING BRIDGE BELOW 032A
+COMBINING CANDRABINDU 0310
+COMBINING CARON 030C
+COMBINING CARON BELOW 032C
+COMBINING CEDILLA 0327
+Combining Characters, Cyrillic 0483
+COMBINING CIRCUMFLEX ACCENT 0302
+COMBINING CIRCUMFLEX ACCENT BELOW 032D
+COMBINING CLOCKWISE ARROW ABOVE 20D5
+COMBINING CLOCKWISE RING OVERLAY 20D9
+COMBINING COMMA ABOVE 0313
+COMBINING COMMA ABOVE RIGHT 0315
+COMBINING COMMA BELOW 0326
+Combining Diacritical Marks 0300
+Combining Diacritical Marks for Symbols 20D0
+COMBINING DIAERESIS 0308
+COMBINING DIAERESIS BELOW 0324
+COMBINING DOT ABOVE 0307
+COMBINING DOT BELOW 0323
+COMBINING DOUBLE ACUTE ACCENT 030B
+COMBINING DOUBLE GRAVE ACCENT 030F
+COMBINING DOUBLE INVERTED BREVE 0361
+COMBINING DOUBLE LOW LINE 0333
+COMBINING DOUBLE OVERLINE 033F
+COMBINING DOUBLE RIGHTWARDS ARROW BELOW 0362
+COMBINING DOUBLE TILDE 0360
+COMBINING DOUBLE TILDE LEFT HALF FE22
+COMBINING DOUBLE VERTICAL LINE ABOVE 030E
+COMBINING DOUBLE VERTICAL LINE BELOW 0348
+COMBINING DOWN TACK BELOW 031E
+COMBINING ENCLOSING CIRCLE 20DD
+COMBINING ENCLOSING CIRCLE BACKSLASH 20E0
+COMBINING ENCLOSING DIAMOND 20DF
+COMBINING ENCLOSING KEYCAP 20E3
+COMBINING ENCLOSING SCREEN 20E2
+COMBINING ENCLOSING SQUARE 20DE
+COMBINING EQUALS SIGN BELOW 0347
+COMBINING FOUR DOTS ABOVE 20DC
+COMBINING GRAVE ACCENT 0300
+COMBINING GRAVE ACCENT BELOW 0316
+COMBINING GRAVE TONE MARK 0340
+COMBINING GREEK DIALYTIKA TONOS 0344
+COMBINING GREEK KORONIS 0343
+COMBINING GREEK PERISPOMENI 0342
+COMBINING GREEK YPOGEGRAMMENI 0345
+combining hacek 030C
+Combining Half Marks FE20
+COMBINING HOMOTHETIC ABOVE 034B
+COMBINING HOOK ABOVE 0309
+COMBINING HORN 031B
+COMBINING INVERTED BREVE 0311
+COMBINING INVERTED BREVE BELOW 032F
+COMBINING INVERTED BRIDGE BELOW 033A
+COMBINING INVERTED DOUBLE ARCH BELOW 032B
+COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK 3099
+COMBINING LEFT ANGLE ABOVE 031A
+COMBINING LEFT ANGLE BELOW 0349
+COMBINING LEFT ARROW ABOVE 20D6
+COMBINING LEFT HALF RING BELOW 031C
+COMBINING LEFT HARPOON ABOVE 20D0
+COMBINING LEFT RIGHT ARROW ABOVE 20E1
+COMBINING LEFT RIGHT ARROW BELOW 034D
+COMBINING LEFT TACK BELOW 0318
+COMBINING LIGATURE LEFT HALF FE20
+COMBINING LONG SOLIDUS OVERLAY 0338
+COMBINING LONG STROKE OVERLAY 0336
+COMBINING LONG VERTICAL LINE OVERLAY 20D2
+COMBINING LOW LINE 0332
+COMBINING MACRON 0304
+COMBINING MACRON BELOW 0331
+COMBINING MINUS SIGN BELOW 0320
+COMBINING NOT TILDE ABOVE 034A
+COMBINING OGONEK 0328
+COMBINING OVERLINE 0305
+COMBINING PALATALIZED HOOK BELOW 0321
+COMBINING PLUS SIGN BELOW 031F
+COMBINING RETROFLEX HOOK BELOW 0322
+COMBINING REVERSED COMMA ABOVE 0314
+COMBINING RIGHT HALF RING BELOW 0339
+COMBINING RING ABOVE 030A
+COMBINING RING BELOW 0325
+COMBINING RING OVERLAY 20D8
+COMBINING SEAGULL BELOW 033C
+COMBINING SHORT SOLIDUS OVERLAY 0337
+COMBINING SHORT STROKE OVERLAY 0335
+COMBINING SHORT VERTICAL LINE OVERLAY 20D3
+COMBINING SQUARE BELOW 033B
+COMBINING THREE DOTS ABOVE 20DB
+COMBINING TILDE 0303
+COMBINING TILDE BELOW 0330
+COMBINING TILDE OVERLAY 0334
+COMBINING TURNED COMMA ABOVE 0312
+COMBINING UP TACK BELOW 031D
+COMBINING UPWARDS ARROW BELOW 034E
+COMBINING VERTICAL LINE ABOVE 030D
+COMBINING VERTICAL LINE BELOW 0329
+COMBINING VERTICAL TILDE 033E
+COMBINING X ABOVE 033D
+COMET 2604
+COMMA 002C
+COMMA ABOVE RIGHT, COMBINING 0315
+COMMA ABOVE, COMBINING 0313
+COMMA ABOVE, COMBINING REVERSED 0314
+COMMA ABOVE, COMBINING TURNED 0312
+COMMA BELOW, COMBINING 0326
+comma quotation mark, double 201D
+comma quotation mark, double reversed 201F
+comma quotation mark, double turned 201C
+comma quotation mark, low double 201E
+comma quotation mark, low single 201A
+comma quotation mark, single 2019
+comma quotation mark, single reversed 201B
+comma quotation mark, single turned 2018
+COMMA, ARABIC 060C
+COMMA, ARMENIAN 055D
+COMMA, ETHIOPIC 1363
+comma, georgian 00B7
+COMMA, IDEOGRAPHIC 3001
+COMMA, MODIFIER LETTER REVERSED 02BD
+COMMA, MODIFIER LETTER TURNED 02BB
+COMMA, MONGOLIAN 1802
+command key 2318
+command, application program 009F
+command, operating system 009D
+COMMERCIAL AT 0040
+compass 263C
+Compatibility and Specials Area F900
+Compatibility Forms, CJK FE30
+Compatibility Ideographs, CJK F900
+Compatibility Ideographs, IBM CJK FA0E
+Compatibility Jamo, Korean Hangul 3130
+Compatibility, CJK 3300
+COMPLEMENT 2201
+complex numbers, the set of 2102
+Components, Form and Chart 2500
+composite function 2218
+composition circle, jis 20DD
+COMPOSITION SYMBOL 2384
+conductance 2127
+CONICAL TAPER 2332
+CONJUGATE MATRIX, HERMITIAN 22B9
+conjunction 2227
+CONJUNCTION 260C
+CONTAINS AS MEMBER 220B
+CONTAINS AS MEMBER, SMALL 220D
+CONTAINS AS NORMAL SUBGROUP 22B3
+CONTINUOUS UNDERLINE SYMBOL 2381
+continuum, second transfinite cardinal 2136
+CONTOUR INTEGRAL 222E
+CONTOUR INTEGRAL, CLOCKWISE 2232
+Control Code Graphics 25F0
+Control Codes, ASCII C0 0000
+Control Codes, C1 0080
+Control Codes, Graphic Pictures for 2400
+Control Codes, Graphics for 237B
+control sequence introducer 009B
+control string, device 0090
+control, graphic for 2388
+Control, Syriac Format 070F
+Controls and Basic Latin, C0 0000
+Controls and Latin-1 Supplement, C1 0080
+Controls, Bidirectional Formatting 202A
+Controls, Mongolian Format 180B
+COPRODUCT, N-ARY 2210
+Coptic, Greek and 0370
+Coptic-unique Letters 03E2
+COPYRIGHT SIGN 00A9
+COPYRIGHT, SOUND RECORDING 2117
+CORNER BRACKET, LEFT 300C
+CORNER BRACKET, LEFT WHITE 300E
+CORNER, TOP LEFT 231C
+CORPORATION, SQUARE 337F
+CORRESPONDS TO 2258
+corresponds to 2259
+costa rican currency 20A1
+countable, first transfinite cardinal 2135
+COUNTERBORE 2334
+COUNTERSINK 2335
+cr 000D
+CRESCENT, STAR AND 262A
+Croatian Digraphs Matching Serbian Cyrillic Letters 01C4
+Croatian, Additions for Slovenian and 0200
+CROP, TOP LEFT 230F
+CROSS ACCENT, MODIFIER LETTER 02DF
+Cross Dingbats 2719
+CROSS OF JERUSALEM 2629
+CROSS OF LORRAINE 2628
+cross ratio 211E
+CROSS, EAST SYRIAC 2671
+CROSS, LATIN 271D
+cross, long 2020
+CROSS, MALTESE 2720
+CROSS, ORTHODOX 2626
+cross, st. andrew's 2613
+CROSS, WEST SYRIAC 2670
+CROSSBONES, SKULL AND 2620
+crosshatch 0023
+CRUZEIRO SIGN 20A2
+CUBE ROOT 221B
+cubed 00B3
+cup 222A
+CUP, SQUARE 2294
+curly bracket, closing 007D
+CURLY BRACKET, LEFT 007B
+curly bracket, opening 007B
+CURLY BRACKET, RIGHT 007D
+CURLY LOGICAL AND 22CF
+CURLY LOGICAL OR 22CE
+CURRENCY SIGN 00A4
+Currency Signs, Bengali 09F2
+CURRENCY SYMBOL BAHT, THAI 0E3F
+currency symbol, florin 0192
+Currency Symbols 20A0
+currency, brazilian 20A2
+currency, costa rican 20A1
+currency, el salvadorian 20A1
+currency, euro european 20AC
+currency, french 20A3
+currency, greek 20AF
+currency, hebrew 20AA
+currency, indian 20A8
+currency, israeli 20AA
+currency, italian 20A4
+currency, korean 20A9
+currency, laotian 20AD
+currency, mongolian 20AE
+currency, nigerian 20A6
+currency, spanish 20A7
+currency, turkish 20A4
+currency, vietnamese 20AB
+CURRENT SYMBOL FORM TWO, DIRECT 2393
+current, alternating 223F
+cycle 223C
+CYLINDRICITY 232D
+Cyrillic 0400
+Cyrillic Capital Letters 0401
+Cyrillic Combining Characters 0483
+Cyrillic Extensions 0450
+Cyrillic Historic Letters 0460
+Cyrillic Small Letters 0430
+Cyrillic, Extended 048C
+d retroflex hook, latin small letter 0256
+D WITH TAIL, LATIN SMALL LETTER 0256
+D, LATIN CAPITAL LETTER AFRICAN 0189
+DAGGER 2020
+DAGGER, DOUBLE 2021
+DALET SYMBOL 2138
+DANDA, DEVANAGARI 0964
+DANDA, DEVANAGARI DOUBLE 0965
+dash, angled 00AC
+DASH, CIRCLED 229D
+DASH, EM 2014
+DASH, EN 2013
+DASH, FIGURE 2012
+dash, long 2015
+dash, quotation 2015
+dash, swung 007E
+DASH, WAVE 301C
+DASH, WAVY 3030
+DASHED LOW LINE FE4D
+DASHED OVERLINE FE49
+Dashes 2010
+dasia 0314
+data link escape 0010
+DATA LINK ESCAPE, SYMBOL FOR 2410
+DAVID, STAR OF 2721
+Days, Telegraph Symbols for 33E0
+decimal point 002E
+decimal separator 002C
+DECIMAL SEPARATOR KEY SYMBOL 2396
+DECIMAL SEPARATOR, ARABIC 066B
+definition, equal to by 225C
+DEFINITION, EQUAL TO BY 225D
+DEGREE CELSIUS 2103
+DEGREE FAHRENHEIT 2109
+DEGREE SIGN 00B0
+degrees centigrade 2103
+degrees kelvin 212A
+del 2207
+delete 007F
+DELETE FORM TWO, SYMBOL FOR 2425
+delete to the left key 232B
+delete to the right key 2326
+DELETE, SYMBOL FOR 2421
+delete, undoable 2425
+DELTA EQUAL TO 225C
+DELTA, LATIN SMALL LETTER TURNED 018D
+DENTAL CLICK, LATIN LETTER 01C0
+depth symbol 21A7
+derivative 0307
+derivative, double 0308
+derivative, fourth 20DC
+derivative, third 20DB
+DESCENDING NODE 260B
+Description Characters, Ideographic 2FF0
+Devanagari 0900
+DEVANAGARI DANDA 0964
+Devanagari Digits 0966
+DEVANAGARI DOUBLE DANDA 0965
+Devanagari Letters 0905
+DEVANAGARI OM 0950
+device control four 0014
+DEVICE CONTROL FOUR, SYMBOL FOR 2414
+device control one 0011
+DEVICE CONTROL ONE, SYMBOL FOR 2411
+device control string 0090
+device control three 0013
+DEVICE CONTROL THREE, SYMBOL FOR 2413
+device control two 0012
+DEVICE CONTROL TWO, SYMBOL FOR 2412
+DHARMA, WHEEL OF 2638
+Diacritic-vowel Combinations, Pinyin 01CD
+Diacritical Marks for Symbols, Combining 20D0
+Diacritical Marks, Combining 0300
+Diacritics for Greek 0342
+Diacritics for IPA 0346
+Diacritics, Double 0360
+Diacritics, Enclosing 20DD
+Diacritics, Overstruck 0334
+Diacritics, Spacing Clones of 02D8
+DIAERESIS 00A8
+DIAERESIS BELOW, COMBINING 0324
+DIAERESIS, COMBINING 0308
+diaeresis, spacing 00A8
+DIAGONAL ELLIPSIS, UP RIGHT 22F0
+dialytika 0308
+DIALYTIKA TONOS, COMBINING GREEK 0344
+DIAMETER SIGN 2300
+diameter symbol 2205
+DIAMOND OPERATOR 22C4
+DIAMOND, COMBINING ENCLOSING 20DF
+Diamonds 25C6
+diesis 2021
+difference between 223C
+DIFFERENCE BETWEEN 224F
+difference, backward 2207
+difference, forward 2206
+difference, symmetric 2238
+difference, symmetric 2296
+DIFFERENTIAL, PARTIAL 2202
+DIGIT SHAPES, NATIONAL 206E
+DIGIT SHAPES, NOMINAL 206F
+Digits for Persian and Urdu, Eastern Arabic-Indic 06F0
+Digits, Arabic-Indic 0660
+Digits, ASCII 0030
+Digits, Bengali 09E6
+Digits, Devanagari 0966
+Digits, Dingbat Circled 2776
+Digits, Ethiopic 1369
+Digits, Gujarati 0AE6
+Digits, Gurmukhi 0A66
+Digits, Kannada 0CE6
+Digits, Khmer 17E0
+Digits, Lao 0ED0
+Digits, Malayalam 0D66
+Digits, Mongolian 1810
+Digits, Myanmar 1040
+Digits, Oriya 0B66
+Digits, Subscript 2080
+Digits, Superscript 2070
+Digits, Tamil 0BE7
+Digits, Telugu 0C66
+Digits, Thai 0E50
+Digits, Tibetan 0F20
+Digraphs Matching Serbian Cyrillic Letters, Croatian 01C4
+Digraphs, Phonetic 02A3
+Digraphs, Yiddish 05F0
+DIMENSION ORIGIN 2331
+Dingbat Circled Digits 2776
+Dingbats 2700
+Dingbats Series 100, ITC Zapf 2700
+Dingbats, Arrow 2794
+Dingbats, Asterisk 2722
+Dingbats, Cross 2719
+Dingbats, Drop-Shadowed 274D
+Dingbats, Hazard 2620
+Dingbats, Heart 2763
+Dingbats, Miscellaneous 2600
+Dingbats, Music 2669
+Dingbats, Pencil 270E
+Dingbats, Pointing Index Finger 261A
+Dingbats, Quotation Mark 275B
+Dingbats, Scissors 2701
+Dingbats, Snowflake 2744
+Dingbats, Star 2726
+Dingbats, Vertical Bar 2758
+Dingbats, Warning 2620
+Dingbats, Weather 2600
+Dingbats, Zapf 2700
+DIRECT CURRENT SYMBOL FORM TWO 2393
+direct product 2299
+direct sum 2295
+Directional Formatting Controls 202A
+DIRECTIONAL FORMATTING, POP 202C
+DISCONTINUOUS UNDERLINE SYMBOL 2382
+discretionary hyphen 00AD
+disjunction 2228
+DITTO MARK 3003
+DIVIDES 2223
+DIVISION SIGN 00F7
+DIVISION SLASH 2215
+DIVISION SLASH, CIRCLED 2298
+DIVISION TIMES 22C7
+does not yield 22A3
+DOLLAR SIGN 0024
+DONG SIGN 20AB
+dot 002E
+DOT ABOVE 02D9
+DOT ABOVE, COMBINING 0307
+dot above, double 0308
+DOT ABOVE, LATIN CAPITAL LETTER I WITH 0130
+DOT BELOW, COMBINING 0323
+DOT MINUS 2238
+DOT OPERATOR 22C5
+DOT OPERATOR, CIRCLED 2299
+DOT OPERATOR, SQUARED 22A1
+DOT PLUS 2214
+dot, greek middle 00B7
+DOT, KATAKANA MIDDLE 30FB
+DOT, MIDDLE 00B7
+DOTLESS I, LATIN SMALL LETTER 0131
+DOTS ABOVE, COMBINING FOUR 20DC
+DOTS ABOVE, COMBINING THREE 20DB
+DOUBLE ACUTE ACCENT 02DD
+DOUBLE ACUTE ACCENT, COMBINING 030B
+DOUBLE ANGLE BRACKET, LEFT 300A
+DOUBLE ANGLE QUOTATION MARK, LEFT-POINTING 00AB
+DOUBLE ANGLE QUOTATION MARK, RIGHT-POINTING 00BB
+DOUBLE APOSTROPHE, MODIFIER LETTER 02EE
+DOUBLE ARCH BELOW, COMBINING INVERTED 032B
+double bar, latin letter pipe 01C2
+double comma quotation mark 201D
+double comma quotation mark, low 201E
+DOUBLE DAGGER 2021
+DOUBLE DANDA, DEVANAGARI 0965
+double derivative 0308
+Double Diacritics 0360
+double dot above 0308
+DOUBLE EXCLAMATION MARK 203C
+DOUBLE GRAVE ACCENT, COMBINING 030F
+DOUBLE HIGH-REVERSED-9 QUOTATION MARK 201F
+DOUBLE INTEGRAL 222C
+DOUBLE INTERSECTION 22D2
+DOUBLE INVERTED BREVE, COMBINING 0361
+DOUBLE LOW LINE 2017
+DOUBLE LOW LINE, COMBINING 0333
+DOUBLE LOW-9 QUOTATION MARK 201E
+double obelisk 2021
+DOUBLE OVERLINE, COMBINING 033F
+double pipe 01C1
+DOUBLE PRIME 2033
+DOUBLE PRIME QUOTATION MARK 301E
+DOUBLE PRIME QUOTATION MARK, LOW 301F
+DOUBLE PRIME QUOTATION MARK, REVERSED 301D
+DOUBLE PRIME, MODIFIER LETTER 02BA
+DOUBLE PRIME, REVERSED 2036
+DOUBLE QUOTATION MARK, LEFT 201C
+DOUBLE QUOTATION MARK, RIGHT 201D
+double reversed comma quotation mark 201F
+DOUBLE RIGHTWARDS ARROW BELOW, COMBINING 0362
+DOUBLE SUBSET 22D0
+DOUBLE SUPERSET 22D1
+DOUBLE TILDE LEFT HALF, COMBINING FE22
+DOUBLE TILDE, COMBINING 0360
+double turned comma quotation mark 201C
+double underline 0333
+double underscore 0333
+double underscore, spacing 2017
+DOUBLE UNION 22D3
+DOUBLE VERTICAL LINE 2016
+DOUBLE VERTICAL LINE ABOVE, COMBINING 030E
+DOUBLE VERTICAL LINE BELOW, COMBINING 0348
+DOUBLE WAVY OVERLINE FE4C
+double-barred pipe 01C2
+DOUBLE-STRUCK CAPITAL C 2102
+DOUBLE-STRUCK CAPITAL H 210D
+DOUBLE-STRUCK CAPITAL N 2115
+DOUBLE-STRUCK CAPITAL P 2119
+DOUBLE-STRUCK CAPITAL Q 211A
+DOUBLE-STRUCK CAPITAL R 211D
+DOUBLE-STRUCK CAPITAL Z 2124
+DOWN TACK 22A4
+DOWN TACK BELOW, COMBINING 031E
+down, page 21DF
+DRACHMA SIGN 20AF
+dram 0292
+drop 264F
+Duplicates from Big 5 FA0C
+E, LATIN CAPITAL LETTER OPEN 0190
+E, LATIN CAPITAL LETTER REVERSED 018E
+e, latin capital letter turned 018E
+E, LATIN SMALL LETTER CLOSED OPEN 029A
+E, LATIN SMALL LETTER CLOSED REVERSED OPEN 025E
+E, LATIN SMALL LETTER OPEN 025B
+E, LATIN SMALL LETTER REVERSED 0258
+E, LATIN SMALL LETTER REVERSED OPEN 025C
+E, LATIN SMALL LETTER TURNED 01DD
+E, SCRIPT CAPITAL 2130
+E, SCRIPT SMALL 212F
+EARTH 2641
+Eastern Arabic-Indic Digits for Persian and Urdu 06F0
+ecu 20A0
+EIGHTH NOTE 266A
+EIGHTH NOTES, BEAMED 266B
+Eighths, Fractions 215B
+EK ONKAR, GURMUKHI 0A74
+el salvadorian currency 20A1
+ELECTRIC ARROW 2301
+electro-magnetic force, emf 2130
+electrolysis 21AF
+Electrotechnical Symbols from IR 181 238D
+ELEMENT OF 2208
+ELEMENT OF, NOT AN 2209
+ELEMENT OF, SMALL 220A
+element, unique 2129
+ELLIPSIS, HORIZONTAL 2026
+ELLIPSIS, MIDLINE HORIZONTAL 22EF
+ELLIPSIS, UP RIGHT DIAGONAL 22F0
+ELLIPSIS, VERTICAL 22EE
+elliptic function, weierstrass 2118
+EM DASH 2014
+EM QUAD 2001
+EM SPACE 2003
+EMBEDDING, LEFT-TO-RIGHT 202A
+EMBEDDING, RIGHT-TO-LEFT 202B
+emf 2130
+EMPHASIS MARK, ARMENIAN 055B
+EMPHASIS SYMBOL 2383
+EMPTY SET 2205
+EN DASH 2013
+EN QUAD 2000
+EN SPACE 2002
+Enclosed Alphanumerics 2460
+Enclosed CJK Letters and Ideographs 3200
+ENCLOSING CIRCLE BACKSLASH, COMBINING 20E0
+ENCLOSING CIRCLE, COMBINING 20DD
+Enclosing Diacritics 20DD
+ENCLOSING DIAMOND, COMBINING 20DF
+ENCLOSING KEYCAP, COMBINING 20E3
+ENCLOSING SCREEN, COMBINING 20E2
+ENCLOSING SQUARE, COMBINING 20DE
+end 21F2
+end of guarded area 0097
+end of medium 0019
+end of medium, graphic for 237F
+END OF MEDIUM, SYMBOL FOR 2419
+END OF PROOF 220E
+end of selected area 0087
+end of text 0003
+END OF TEXT, SYMBOL FOR 2403
+end of transmission 0004
+end of transmission block 0017
+END OF TRANSMISSION BLOCK, SYMBOL FOR 2417
+end of transmission, graphic for 2301
+END OF TRANSMISSION, SYMBOL FOR 2404
+ENG, LATIN SMALL LETTER 014B
+enotikon, greek 203F
+enquiry 0005
+ENQUIRY, SYMBOL FOR 2405
+enter key 2324
+ENTER SYMBOL 2386
+ENVELOPE 2709
+epsilon, latin capital letter 0190
+epsilon, latin small letter 025B
+epsilon, latin small letter closed 029A
+epsilon, latin small letter closed reversed 025E
+epsilon, reversed straight 220D
+epsilon, straight 220A
+EQUAL TO ABOVE, COMBINING ALMOST 034C
+equal to by definition 225C
+EQUAL TO BY DEFINITION 225D
+EQUAL TO, ALL 224C
+EQUAL TO, ALMOST 2248
+EQUAL TO, APPROXIMATELY 2245
+equal to, approximately 2257
+EQUAL TO, ASYMPTOTICALLY 2243
+EQUAL TO, DELTA 225C
+EQUAL TO, GEOMETRICALLY 2251
+EQUAL TO, GREATER-THAN OR 2265
+EQUAL TO, LESS-THAN OR 2264
+EQUAL TO, NOT 2260
+EQUAL TO, QUESTIONED 225F
+EQUAL TO, RING 2257
+EQUAL TO, RING IN 2256
+EQUALS COLON 2255
+EQUALS SIGN 003D
+EQUALS SIGN BELOW, COMBINING 0347
+EQUALS SIGN, SUBSCRIPT 208C
+EQUALS SIGN, SUPERSCRIPT 207C
+EQUALS, CIRCLED 229C
+EQUALS, REVERSED TILDE 22CD
+EQUALS, STAR 225B
+equiangular 225C
+EQUIANGULAR TO 225A
+EQUIVALENT TO 224D
+EQUIVALENT TO, GEOMETRICALLY 224E
+EQUIVALENT TO, STRICTLY 2263
+Era Names, Japanese 337B
+ERASE TO THE LEFT 232B
+ERASE TO THE RIGHT 2326
+error 212F
+escape 001B
+escape, data link 0010
+ESCAPE, SYMBOL FOR 241B
+ESCAPE, SYMBOL FOR DATA LINK 2410
+escudo 0024
+ESH LOOP, LATIN LETTER REVERSED 01AA
+ESH, LATIN CAPITAL LETTER 01A9
+ESH, LATIN SMALL LETTER 0283
+ESH, LATIN SMALL LETTER SQUAT REVERSED 0285
+ESTIMATED SYMBOL 212E
+ESTIMATES 2259
+eszett 00DF
+ET, TIRONIAN SIGN 204A
+ETH, LATIN SMALL LETTER 00F0
+ethel 0153
+Ethiopic 1200
+ETHIOPIC COLON 1365
+ETHIOPIC COMMA 1363
+Ethiopic Digits 1369
+ETHIOPIC FULL STOP 1362
+ETHIOPIC QUESTION MARK 1367
+ETHIOPIC SEMICOLON 1364
+ETHIOPIC WORDSPACE 1361
+EULER CONSTANT 2107
+EURO SIGN 20AC
+European Latin 0100
+european paragraph sign 00A7
+european section sign 00B6
+EXCESS 2239
+EXCLAMATION MARK 0021
+EXCLAMATION MARK ORNAMENT, HEAVY 2762
+EXCLAMATION MARK, ARMENIAN 055C
+EXCLAMATION MARK, DOUBLE 203C
+EXCLAMATION MARK, INVERTED 00A1
+exclamation mark, latin letter 01C3
+EXCLAMATION MARK, QUESTION 2048
+EXCLAMATION QUESTION MARK 2049
+EXISTS, THERE 2203
+Extended Additional, Latin 1E00
+Extended Arabic 0671
+Extended Cyrillic 048C
+Extended for Minnan and Hakka, Chinese Bopomofo 31A0
+Extended Greek 1F00
+Extended-A, Latin 0100
+Extended-B, Latin 0180
+Extension A, CJK Unified Ideographs 3400
+Extensions for Sanskrit and Tibetan, Mongolian 1880
+Extensions for Vietnamese, Latin 1EA0
+Extensions, Cyrillic 0450
+Extensions, IPA 0250
+EZH REVERSED, LATIN SMALL LETTER 01B9
+EZH, LATIN CAPITAL LETTER 01B7
+EZH, LATIN SMALL LETTER 0292
+F WITH HOOK, LATIN SMALL LETTER 0192
+F, SCRIPT CAPITAL 2131
+F, TURNED CAPITAL 2132
+FACE, BLACK SMILING 263B
+FACE, POSTAL MARK 3020
+FACE, WHITE FROWNING 2639
+FACE, WHITE SMILING 263A
+factorial 0021
+FAHRENHEIT, DEGREE 2109
+feet 2032
+FEMALE SIGN 2640
+FEMININE ORDINAL INDICATOR 00AA
+Fifths, Fractions 2155
+FIGURE DASH 2012
+FIGURE SPACE 2007
+file separator 001C
+FILE SEPARATOR, SYMBOL FOR 241C
+Finger Dingbats, Pointing Index 261A
+FIRST QUARTER MOON 263D
+first transfinite cardinal (countable) 2135
+FISHEYE 25C9
+fist 261E
+FIVE POINTED STAR, ARABIC 066D
+FIVE, LATIN SMALL LETTER TONE 01BD
+FLAT SIGN, MUSIC 266D
+FLOOR, LEFT 230A
+FLORAL HEART BULLET, REVERSED ROTATED 2619
+florin currency symbol 0192
+folder 0192
+FOR ALL 2200
+FORCES 22A9
+Form and Chart Components 2500
+form feed 000C
+form feed 21A1
+FORM FEED, SYMBOL FOR 240C
+Format Control, Syriac 070F
+Format Controls, Mongolian 180B
+Formatting Characters 200C
+Formatting Characters 2028
+Formatting Controls, Bidirectional 202A
+FORMATTING, POP DIRECTIONAL 202C
+forward difference 2206
+FOUR DOTS ABOVE, COMBINING 20DC
+FOUR-PER-EM SPACE 2005
+fourier transform 2131
+fourth derivative 20DC
+FOURTH ROOT 221C
+fourth transfinite cardinal 2138
+Fourths, Fractions 00BC
+FRACTION NUMERATOR ONE 215F
+FRACTION ONE HALF, VULGAR 00BD
+FRACTION ONE QUARTER, VULGAR 00BC
+FRACTION SLASH 2044
+FRACTION THREE QUARTERS, VULGAR 00BE
+Fractions 2153
+FRANC SIGN, FRENCH 20A3
+FRICATIVE, LATIN LETTER PHARYNGEAL VOICED 0295
+FROWN 2322
+FROWNING FACE, WHITE 2639
+FULL BLOCK 2588
+FULL STOP 002E
+FULL STOP, ARABIC 06D4
+FULL STOP, ARMENIAN 0589
+FULL STOP, ETHIOPIC 1362
+full stop, georgian 0589
+FULL STOP, IDEOGRAPHIC 3002
+FULL STOP, MONGOLIAN 1803
+Fullwidth ASCII Variants FF01
+Fullwidth Forms, Halfwidth and FF00
+Fullwidth Symbol Variants FFE0
+function symbol 0192
+function, gamma 0393
+G, LATIN LETTER SMALL CAPITAL 0262
+G, LATIN SMALL LETTER SCRIPT 0261
+G, SCRIPT SMALL 210A
+gamma function 0393
+GAMMA, LATIN CAPITAL LETTER 0194
+GAMMA, LATIN SMALL LETTER 0263
+gamma, latin small letter baby 0264
+GAMMA, MODIFIER LETTER SMALL 02E0
+GB 2312 (Chinese), Based on 3100
+GEMINI 264A
+General Punctuation 2000
+General Scripts Area 0000
+GEOMETRIC PROPORTION 223A
+Geometric Shapes 25A0
+GEOMETRICALLY EQUAL TO 2251
+GEOMETRICALLY EQUIVALENT TO 224E
+Georgian 10A0
+Georgian Capital Letters 10A0
+georgian comma 00B7
+georgian full stop 0589
+GEORGIAN PARAGRAPH SEPARATOR 10FB
+Georgian Small Letters 10D0
+german mark 2133
+GETA MARK 3013
+GIMEL SYMBOL 2137
+glottal stop 02BC
+GLOTTAL STOP, LATIN LETTER 0294
+GLOTTAL STOP, LATIN LETTER INVERTED 0296
+glottal stop, latin letter reversed 0295
+GLOTTAL STOP, MODIFIER LETTER 02C0
+GLOTTAL STOP, MODIFIER LETTER REVERSED 02C1
+GLOTTAL STOP, MODIFIER LETTER SMALL REVERSED 02E4
+Golden Number Runes 16EE
+Graphic Pictures for Control Codes 2400
+Graphics for Control Codes 237B
+Graphics, Control Code 25F0
+GRAVE ACCENT 0060
+GRAVE ACCENT BELOW, COMBINING 0316
+GRAVE ACCENT, COMBINING 0300
+GRAVE ACCENT, COMBINING DOUBLE 030F
+GRAVE ACCENT, DEVANAGARI 0953
+GRAVE ACCENT, MODIFIER LETTER 02CB
+GRAVE ACCENT, MODIFIER LETTER LOW 02CE
+grave accent, swedish 02DF
+GRAVE TONE MARK, COMBINING 0340
+grave, spacing 0060
+GREATER-THAN OR EQUAL TO 2265
+GREATER-THAN SIGN 003E
+GREATER-THAN, MUCH 226B
+GREATER-THAN, VERY MUCH 22D9
+Greek and Coptic 0370
+Greek Capital Letters 0391
+greek currency 20AF
+GREEK DIALYTIKA TONOS, COMBINING 0344
+greek enotikon 203F
+GREEK KORONIS, COMBINING 0343
+greek middle dot 00B7
+greek non-spacing iota below 0345
+GREEK PERISPOMENI, COMBINING 0342
+GREEK QUESTION MARK 037E
+GREEK SMALL LETTER IOTA, TURNED 2129
+Greek Small Letters 03B1
+Greek Symbols 03D0
+GREEK YPOGEGRAMMENI, COMBINING 0345
+Greek, Diacritics for 0342
+Greek, Extended 1F00
+group lock 21F0
+group separator 001D
+GROUP SEPARATOR, SYMBOL FOR 241D
+guarded area, end of 0097
+guarded area, start of 0096
+guillemet, left pointing 00AB
+guillemet, left pointing single 2039
+guillemet, right pointing 00BB
+guillemet, right pointing single 203A
+Gujarati 0A80
+Gujarati Digits 0AE6
+Gujarati Letters 0A85
+Gurmukhi 0A00
+Gurmukhi Digits 0A66
+Gurmukhi Letters 0A05
+H, BLACK-LETTER CAPITAL 210C
+H, DOUBLE-STRUCK CAPITAL 210D
+H, LATIN LETTER SMALL CAPITAL 029C
+H, LATIN SMALL LETTER TURNED 0265
+H, MODIFIER LETTER SMALL 02B0
+H, SCRIPT CAPITAL 210B
+hacek, combining 030C
+hacek, modifier letter 02C7
+HAIR SPACE 200A
+Hakka, Chinese Bopomofo Extended for Minnan and 31A0
+halant, bengali 09CD
+halant, devanagari 094D
+HALF FILL SPACE, IDEOGRAPHIC 303F
+HALF INTEGRAL, TOP 2320
+Half Marks, Combining FE20
+HALF RING BELOW, COMBINING LEFT 031C
+HALF RING BELOW, COMBINING RIGHT 0339
+HALF RING, MODIFIER LETTER CENTRED LEFT 02D3
+HALF RING, MODIFIER LETTER LEFT 02BF
+HALF TRIANGULAR COLON, MODIFIER LETTER 02D1
+HALF, COMBINING DOUBLE TILDE LEFT FE22
+HALF, COMBINING LIGATURE LEFT FE20
+HALF, VULGAR FRACTION ONE 00BD
+Halfwidth and Fullwidth Forms FF00
+Halfwidth Japanese Katakana Variants FF61
+Halfwidth Korean Hangul Variants FFA0
+hamiltonian function 210B
+HAMMER AND SICKLE 262D
+Han Ideographs 4E00
+Hand Symbols, Pointing 261A
+HAND, VICTORY 270C
+HAND, WRITING 270D
+HANGUL CHOSEONG FILLER 115F
+Hangul Compatibility Jamo, Korean 3130
+Hangul Elements, Circled Korean 3260
+Hangul Elements, Parenthesized Korean 3200
+HANGUL FILLER 3164
+Hangul Jamo Combining Alphabet, Korean 1100
+HANGUL JUNGSEONG FILLER 1160
+Hangul Syllables Area, Korean AC00
+Hangul Syllables, Circled Korean 326E
+Hangul Syllables, Parenthesized Korean 320E
+Hangul Variants, Halfwidth Korean FFA0
+Hangul, Based on KS C 5601 (Korean) 3130
+Hangzhou-style Numerals 3021
+HARPOON ABOVE, COMBINING LEFT 20D0
+hash 0023
+hat 0302
+hat 2229
+have a nice day! 263A
+Hazard Dingbats 2620
+heading, start of 0001
+HEADING, SYMBOL FOR START OF 2401
+Heart Ornaments 2763
+HEAVY BALLOT X 2718
+HEAVY CHECK MARK 2714
+HEAVY MULTIPLICATION X 2716
+Hebrew 0590
+Hebrew Cantillation Marks 0591
+hebrew currency 20AA
+Hebrew Letters 05D0
+Hebrew Points 05B0
+Hebrew Presentation Forms FB1D
+HELM SYMBOL 2388
+HERMITIAN CONJUGATE MATRIX 22B9
+High Surrogates D800
+HIGH-REVERSED-9 QUOTATION MARK, DOUBLE 201F
+HIGH-REVERSED-9 QUOTATION MARK, SINGLE 201B
+higher rank than 227B
+hilbert space 210C
+HIRAGANA ITERATION MARK 309D
+Hiragana, Based on JIS X 0208 (Japanese) 3040
+histogram marker 25AE
+Historic Letters, Cyrillic 0460
+home 21B8
+home 21F1
+HOMOTHETIC 223B
+HOMOTHETIC ABOVE, COMBINING 034B
+HOOK ABOVE, COMBINING 0309
+HOOK BELOW, COMBINING PALATALIZED 0321
+HOOK BELOW, COMBINING RETROFLEX 0322
+HOOK, MODIFIER LETTER RHOTIC 02DE
+hook, nasal 0328
+HORIZONTAL BAR 2015
+HORIZONTAL ELLIPSIS 2026
+HORIZONTAL ELLIPSIS, MIDLINE 22EF
+horizontal tabulation 0009
+HORIZONTAL TABULATION, SYMBOL FOR 2409
+HORN, COMBINING 031B
+HORN, LATIN SMALL LETTER RAMS 0264
+HOT SPRINGS 2668
+HOURGLASS 231B
+Hours, Telegraph Symbols for 3358
+HOUSE 2302
+HV, LATIN SMALL LETTER 0195
+HWAIR, LATIN CAPITAL LETTER 01F6
+HYPHEN 2010
+HYPHEN BULLET 2043
+hyphen or minus sign 002D
+HYPHEN, ARMENIAN 058A
+hyphen, discretionary 00AD
+HYPHEN, NON-BREAKING 2011
+HYPHEN, SOFT 00AD
+HYPHEN-MINUS 002D
+HYPHENATION POINT 2027
+hyphus 002D
+HYSTERESIS SYMBOL 238E
+I WITH DOT ABOVE, LATIN CAPITAL LETTER 0130
+I, BLACK-LETTER CAPITAL 2111
+I, LATIN LETTER SMALL CAPITAL 026A
+I, LATIN SMALL LETTER DOTLESS 0131
+I, SCRIPT CAPITAL 2110
+IBM CJK Compatibility Ideographs FA0E
+IDENTICAL TO 2261
+Ideographic Annotation, Japanese Kanbun 3190
+IDEOGRAPHIC CLOSING MARK 3006
+IDEOGRAPHIC COMMA 3001
+Ideographic Description Characters 2FF0
+IDEOGRAPHIC FULL STOP 3002
+IDEOGRAPHIC HALF FILL SPACE 303F
+IDEOGRAPHIC ITERATION MARK 3005
+IDEOGRAPHIC NUMBER ZERO 3007
+IDEOGRAPHIC SPACE 3000
+Ideographic Tone Marks 302A
+Ideographs Area, CJK 3400
+Ideographs Extension A, CJK Unified 3400
+Ideographs, Circled 3280
+Ideographs, CJK Compatibility F900
+Ideographs, CJK Unified 4E00
+Ideographs, Enclosed CJK Letters and 3200
+Ideographs, Han 4E00
+Ideographs, IBM CJK Compatibility FA0E
+Ideographs, Parenthesized 3220
+IDLE, SYMBOL FOR SYNCHRONOUS 2416
+idle, synchronous 0016
+IJ, LATIN SMALL LIGATURE 0133
+IMAGE OF 22B7
+IMAGE OF, SQUARE 228F
+imaginary part 2111
+implies 22A2
+inches 2033
+included in set 2282
+includes in set 2283
+incorporated, japanese 337F
+INCREMENT 2206
+index 0084
+Index Finger Dingbats, Pointing 261A
+indian currency 20A8
+inferior order to, of 2134
+INFINITY 221E
+INFORMATION SOURCE 2139
+INHIBIT ARABIC FORM SHAPING 206C
+INHIBIT SYMMETRIC SWAPPING 206A
+INSERTION POINT, CARET 2041
+INSERTION SYMBOL 2380
+integers, the set of 2124
+INTEGRAL 222B
+INTEGRAL, CLOCKWISE 2231
+INTEGRAL, CLOCKWISE CONTOUR 2232
+INTEGRAL, CONTOUR 222E
+INTEGRAL, DOUBLE 222C
+integral, riemann 211B
+INTEGRAL, SURFACE 222F
+INTEGRAL, TOP HALF 2320
+INTEGRAL, TRIPLE 222D
+INTEGRAL, VOLUME 2230
+INTERCALATE 22BA
+Interlinear Annotation FFF9
+International Phonetic Alphabet 0250
+INTERROBANG 203D
+INTERSECTION 2229
+INTERSECTION, DOUBLE 22D2
+INTERSECTION, N-ARY 22C2
+intersection, proper 22D4
+introducer, control sequence 009B
+introducer, single character 009A
+Inverse Numbers, Circled 2776
+INVERTED BREVE BELOW, COMBINING 032F
+INVERTED BREVE, COMBINING 0311
+INVERTED BREVE, COMBINING DOUBLE 0361
+INVERTED BRIDGE BELOW, COMBINING 033A
+INVERTED DOUBLE ARCH BELOW, COMBINING 032B
+INVERTED EXCLAMATION MARK 00A1
+INVERTED GLOTTAL STOP, LATIN LETTER 0296
+INVERTED LAZY S 223E
+INVERTED OHM SIGN 2127
+INVERTED QUESTION MARK 00BF
+INVERTED R, LATIN LETTER SMALL CAPITAL 0281
+INVERTED R, MODIFIER LETTER SMALL CAPITAL 02B6
+iota below, greek non-spacing 0345
+IOTA, LATIN CAPITAL LETTER 0196
+IOTA, LATIN SMALL LETTER 0269
+IOTA, TURNED GREEK SMALL LETTER 2129
+IPA Extensions 0250
+IPA, Diacritics for 0346
+IR 181, Electrotechnical Symbols from 238D
+iran, symbol of 262B
+irish punt 00A3
+ISCII 1988 (Devanagari), Based on 0901
+ISO 8859-1 (Latin-1), Based on 00A0
+ISO 8859-2, -3, -4, -9 (European Latin), Based on 0100
+ISO 8859-5 (Cyrillic), Based on 0400
+ISO 8859-6 (Arabic), Based on 0600
+ISO 8859-7 (Greek), Based on 0370
+ISO 8859-8 (Hebrew), Based on 05D0
+ISO 9995-7, Keyboard Symbols from 2380
+ISO 9995-7, Keyboard Symbols from 2396
+israeli currency 20AA
+italian currency 20A4
+ITC Zapf Dingbats Series 100 2700
+ITERATION MARK, HIRAGANA 309D
+ITERATION MARK, IDEOGRAPHIC 3005
+ITERATION MARK, KATAKANA 30FD
+ivy leaf 2767
+J, MODIFIER LETTER SMALL 02B2
+jack 2749
+Jamo Combining Alphabet, Korean Hangul 1100
+Jamo, Korean Hangul Compatibility 3130
+Japanese Era Names 337B
+Japanese Hiragana 3040
+japanese incorporated 337F
+JAPANESE INDUSTRIAL STANDARD SYMBOL 3004
+Japanese Kanbun (Ideographic Annotation) 3190
+Japanese Katakana 30A0
+Japanese Katakana Variants, Halfwidth FF61
+Japanese Katakana Words, Squared 3300
+Japanese Katakana, Circled 32D0
+japanese kome 203B
+JERUSALEM, CROSS OF 2629
+jis composition circle 20DD
+JIS X 0208, Based on 3040
+JOINER, ZERO WIDTH 200D
+jot, apl 2218
+JUPITER 2643
+justification, character tabulation with 0089
+K, LATIN SMALL LETTER TURNED 029E
+kabusiki-gaisya 337F
+Kana Repeat Marks 3031
+Kanbun (Ideographic Annotation), Japanese 3190
+Kangxi Radicals 2F00
+Kannada 0C80
+Kannada Digits 0CE6
+Kannada Letters 0C85
+KATAKANA ITERATION MARK 30FD
+KATAKANA MIDDLE DOT 30FB
+Katakana Variants, Halfwidth Japanese FF61
+Katakana Words, Squared Japanese 3300
+Katakana, Circled Japanese 32D0
+Katakana, Japanese 30A0
+KATAKANA-HIRAGANA PROLONGED SOUND MARK 30FC
+KATAKANA-HIRAGANA VOICED SOUND MARK 309B
+KATAKANA-HIRAGANA VOICED SOUND MARK, COMBINING 3099
+KELVIN SIGN 212A
+ket 232A
+KEY SYMBOL, ALTERNATIVE 2387
+KEY SYMBOL, DECIMAL SEPARATOR 2396
+key, clear 2327
+key, command 2318
+key, delete to the left 232B
+key, delete to the right 2326
+key, enter 2324
+KEY, OPTION 2325
+KEYBOARD 2328
+Keyboard Symbols from ISO 9995-7 2380
+Keyboard Symbols from ISO 9995-7 2396
+KEYCAP, COMBINING ENCLOSING 20E3
+Khmer 1780
+Khmer Digits 17E0
+KIP SIGN 20AD
+kome, japanese 203B
+Koranic Annotation Signs 06D6
+korean currency 20A9
+Korean Hangul Compatibility Jamo 3130
+Korean Hangul Elements, Circled 3260
+Korean Hangul Elements, Parenthesized 3200
+Korean Hangul Jamo Combining Alphabet 1100
+Korean Hangul Syllables Area AC00
+Korean Hangul Syllables, Circled 326E
+Korean Hangul Syllables, Parenthesized 320E
+Korean Hangul Variants, Halfwidth FFA0
+KOREAN STANDARD SYMBOL 327F
+KORONIS, COMBINING GREEK 0343
+KRA, LATIN SMALL LETTER 0138
+KS C 5601 (Korean Hangul), Based on 3130
+L B BAR SYMBOL 2114
+L WITH MIDDLE DOT, LATIN SMALL LETTER 0140
+L WITH MIDDLE TILDE, LATIN SMALL LETTER 026B
+L, LATIN LETTER SMALL CAPITAL 029F
+L, MODIFIER LETTER SMALL 02E1
+L, SCRIPT CAPITAL 2112
+L, SCRIPT SMALL 2113
+lambda bar, latin letter 019B
+Lao 0E80
+Lao Digits 0ED0
+Lao Letters 0E81
+laotian currency 20AD
+laplace operator 2206
+laplace operator 2207
+laplace symbol 2112
+LAST QUARTER MOON 263E
+LATERAL CLICK, LATIN LETTER 01C1
+Latin Abbreviations, Squared 3371
+Latin Capital Letters 0041
+LATIN CROSS 271D
+Latin Extended Additional 1E00
+Latin Extended-A 0100
+Latin Extended-B 0180
+Latin Extensions for Vietnamese 1EA0
+Latin Letters, Circled 24B6
+Latin Letters, Parenthesized 249C
+Latin Letters, Phonetic Modifiers Derived from 02B0
+Latin Ligatures FB00
+Latin Small Letters 0061
+Latin, Based on ISO 8859-2, -3, -4, -9 (European) 0100
+Latin, C0 Controls and Basic 0000
+Latin, European 0100
+Latin-1 Supplement, C1 Controls and 0080
+Latin-1, ISO 8859-1 aka 00A0
+lazy s 223D
+LAZY S, INVERTED 223E
+LEADER, ONE DOT 2024
+leader, three dot 2026
+LEADER, TWO DOT 2025
+leaf, aldus 2766
+leaf, ivy 2767
+LEFT ANGLE ABOVE, COMBINING 031A
+LEFT ANGLE BELOW, COMBINING 0349
+LEFT ANGLE BRACKET 3008
+LEFT ARROW ABOVE, COMBINING 20D6
+LEFT BLACK LENTICULAR BRACKET 3010
+LEFT CEILING 2308
+LEFT CORNER BRACKET 300C
+LEFT CORNER, TOP 231C
+LEFT CROP, TOP 230F
+LEFT CURLY BRACKET 007B
+LEFT DOUBLE ANGLE BRACKET 300A
+LEFT DOUBLE QUOTATION MARK 201C
+LEFT FLOOR 230A
+LEFT HALF RING BELOW, COMBINING 031C
+LEFT HALF RING, MODIFIER LETTER 02BF
+LEFT HALF RING, MODIFIER LETTER CENTRED 02D3
+LEFT HALF, COMBINING DOUBLE TILDE FE22
+LEFT HALF, COMBINING LIGATURE FE20
+LEFT HARPOON ABOVE, COMBINING 20D0
+left key, delete to the 232B
+LEFT PARENTHESIS 0028
+LEFT PARENTHESIS, ORNATE FD3E
+LEFT PARENTHESIS, SUBSCRIPT 208D
+LEFT PARENTHESIS, SUPERSCRIPT 207D
+left pointing guillemet 00AB
+LEFT POINTING INDEX, BLACK 261A
+left pointing single guillemet 2039
+LEFT RIGHT ARROW ABOVE, COMBINING 20E1
+LEFT RIGHT ARROW BELOW, COMBINING 034D
+LEFT SEMIDIRECT PRODUCT 22CB
+LEFT SINGLE QUOTATION MARK 2018
+LEFT SQUARE BRACKET 005B
+LEFT SQUARE BRACKET WITH QUILL 2045
+LEFT TACK 22A3
+LEFT TACK BELOW, COMBINING 0318
+LEFT TORTOISE SHELL BRACKET 3014
+LEFT WHITE CORNER BRACKET 300E
+LEFT WHITE LENTICULAR BRACKET 3016
+LEFT WHITE SQUARE BRACKET 301A
+LEFT WHITE TORTOISE SHELL BRACKET 3018
+LEFT-POINTING ANGLE BRACKET 2329
+LEFT-POINTING ANGLE QUOTATION MARK, SINGLE 2039
+LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00AB
+LEFT-TO-RIGHT EMBEDDING 202A
+LEFT-TO-RIGHT MARK 200E
+LEFT-TO-RIGHT OVERRIDE 202D
+leftward tab 21E4
+LEFTWARDS BULLET, BLACK 204C
+LENTICULAR BRACKET, LEFT BLACK 3010
+LENTICULAR BRACKET, LEFT WHITE 3016
+LEO 264C
+LESS-THAN OR EQUAL TO 2264
+LESS-THAN SIGN 003C
+LESS-THAN, MUCH 226A
+LESS-THAN, VERY MUCH 22D8
+Letterlike Symbols 2100
+level 2 lock 21EB
+level 3 lock 21EF
+level 3 select 21EE
+LEZH, LATIN SMALL LETTER 026E
+lf 000A
+LIBRA 264E
+ligature ae, latin small 00E6
+LIGATURE IJ, LATIN SMALL 0133
+LIGATURE LEFT HALF, COMBINING FE20
+LIGATURE OE, LATIN SMALL 0153
+Ligatures, Armenian FB13
+Ligatures, Latin FB00
+LIGHTNING 2607
+LIMIT, APPROACHES THE 2250
+LINE ABOVE, COMBINING DOUBLE VERTICAL 030E
+LINE ABOVE, COMBINING VERTICAL 030D
+LINE BELOW, COMBINING DOUBLE VERTICAL 0348
+LINE BELOW, COMBINING VERTICAL 0329
+line down, partial 008B
+line feed 000A
+line feed 21B4
+line feed, reverse 008D
+LINE FEED, SYMBOL FOR 240A
+line marker 2319
+LINE OVERLAY, COMBINING LONG VERTICAL 20D2
+LINE OVERLAY, COMBINING SHORT VERTICAL 20D3
+LINE SEPARATOR 2028
+LINE SYMBOL, CENTRE 2104
+line tabulation set 008A
+line up, partial 008C
+LINE WITH MIDDLE DOT, VERTICAL 237F
+line, beginning of 2310
+LINE, CENTRELINE LOW FE4E
+LINE, COMBINING DOUBLE LOW 0333
+LINE, COMBINING LOW 0332
+LINE, DASHED LOW FE4D
+LINE, DOUBLE LOW 2017
+LINE, DOUBLE VERTICAL 2016
+LINE, LOW 005F
+LINE, MODIFIER LETTER LOW VERTICAL 02CC
+LINE, MODIFIER LETTER VERTICAL 02C8
+line, new 21B5
+line, next 0085
+LINE, VERTICAL 007C
+LINE, WAVY 2307
+LINE, WAVY LOW FE4F
+LIRA SIGN 20A4
+liter 2113
+Livonian, Additions for 022A
+LOCATION SIGN, TELEPHONE 2706
+lock, caps 21EA
+lock, caps 21EC
+lock, group 21F0
+lock, level 2 21EB
+lock, level 3 21EF
+lock, numerics 21ED
+LOGICAL AND 2227
+LOGICAL AND, CURLY 22CF
+LOGICAL AND, N-ARY 22C0
+LOGICAL OR 2228
+LOGICAL OR, CURLY 22CE
+LOGICAL OR, N-ARY 22C1
+long 0304
+long cross 2020
+long dash 2015
+LONG S, LATIN SMALL LETTER 017F
+long slash overlay 0338
+LONG SOLIDUS OVERLAY, COMBINING 0338
+LONG STROKE OVERLAY, COMBINING 0336
+LONG VERTICAL LINE OVERLAY, COMBINING 20D2
+LORRAINE, CROSS OF 2628
+LOW ACUTE ACCENT, MODIFIER LETTER 02CF
+low double comma quotation mark 201E
+LOW DOUBLE PRIME QUOTATION MARK 301F
+LOW GRAVE ACCENT, MODIFIER LETTER 02CE
+LOW LINE 005F
+LOW LINE, CENTRELINE FE4E
+LOW LINE, COMBINING 0332
+LOW LINE, COMBINING DOUBLE 0333
+LOW LINE, DASHED FE4D
+LOW LINE, DOUBLE 2017
+LOW LINE, WAVY FE4F
+LOW MACRON, MODIFIER LETTER 02CD
+low single comma quotation mark 201A
+Low Surrogates DC00
+LOW VERTICAL LINE, MODIFIER LETTER 02CC
+LOW-9 QUOTATION MARK, DOUBLE 201E
+LOW-9 QUOTATION MARK, SINGLE 201A
+lower rank than 227A
+LOZENGE 25CA
+LOZENGE, SQUARE 2311
+lre 202A
+lrm 200E
+lro 202D
+M, LATIN CAPITAL LETTER TURNED 019C
+M, LATIN SMALL LETTER TURNED 026F
+M, SCRIPT CAPITAL 2133
+m-matrix 2133
+MACRON 00AF
+MACRON BELOW, COMBINING 0331
+MACRON, COMBINING 0304
+MACRON, MODIFIER LETTER 02C9
+MACRON, MODIFIER LETTER LOW 02CD
+macron, spacing 00AF
+Malayalam 0D00
+Malayalam Digits 0D66
+Malayalam Letters 0D05
+MALE SIGN 2642
+MALTESE CROSS 2720
+Manchu Letters, Mongolian 1873
+mark, german 2133
+marker, histogram 25AE
+mars 2642
+MASCULINE ORDINAL INDICATOR 00BA
+Mathematical Operators 2200
+MATRIX, HERMITIAN CONJUGATE 22B9
+MEASURED ANGLE 2221
+MEASURED BY 225E
+medium, end of 0019
+MEDIUM, SYMBOL FOR END OF 2419
+MEMBER, CONTAINS AS 220B
+MEMBER, SMALL CONTAINS AS 220D
+MERCURY 263F
+message waiting 0095
+message, privacy 009E
+mho 2127
+MICRO SIGN 00B5
+mid space 2005
+MIDDLE DOT 00B7
+middle dot, greek 00B7
+MIDDLE DOT, KATAKANA 30FB
+MIDDLE DOT, LATIN SMALL LETTER L WITH 0140
+MIDDLE DOT, VERTICAL LINE WITH 237F
+MIDDLE TILDE, LATIN CAPITAL LETTER O WITH 019F
+MIDDLE TILDE, LATIN SMALL LETTER L WITH 026B
+MIDLINE HORIZONTAL ELLIPSIS 22EF
+midpoint 00B7
+MILL SIGN 20A5
+MILLE SIGN, PER 2030
+milreis 0024
+minim 264F
+minim (alternate glyph) 264D
+Minnan and Hakka, Chinese Bopomofo Extended for 31A0
+MINUS SIGN 2212
+MINUS SIGN BELOW, COMBINING 0320
+minus sign, hyphen or 002D
+MINUS SIGN, MODIFIER LETTER 02D7
+MINUS TILDE 2242
+MINUS, CIRCLED 2296
+MINUS, DOT 2238
+MINUS, SET 2216
+MINUS, SQUARED 229F
+MINUS, SUBSCRIPT 208B
+MINUS, SUPERSCRIPT 207B
+MINUS-OR-PLUS SIGN 2213
+minutes 2032
+Miscellaneous Symbols 2600
+Miscellaneous Technical 2300
+MODELS 22A7
+Modifier Letters, Spacing 02B0
+Mongolian 1800
+MONGOLIAN COLON 1804
+MONGOLIAN COMMA 1802
+mongolian currency 20AE
+Mongolian Digits 1810
+Mongolian Extensions for Sanskrit and Tibetan 1880
+Mongolian Format Controls 180B
+MONGOLIAN FULL STOP 1803
+Mongolian Manchu Letters 1873
+Mongolian Sibe Letters 185D
+Mongolian Todo Letters 1843
+MONOSTABLE SYMBOL 238D
+Months, Enclosed CJK Letters and 3200
+Months, Telegraph Symbols for 32C0
+MOON, FIRST QUARTER 263D
+MOON, LAST QUARTER 263E
+most positive 223E
+MUCH GREATER-THAN 226B
+MUCH GREATER-THAN, VERY 22D9
+MUCH LESS-THAN 226A
+MUCH LESS-THAN, VERY 22D8
+MULTIMAP 22B8
+MULTIPLICATION SIGN 00D7
+MULTIPLICATION X 2715
+MULTIPLICATION X, HEAVY 2716
+MULTIPLICATION, MULTISET 228D
+MULTISET 228C
+MULTISET MULTIPLICATION 228D
+MULTISET UNION 228E
+MUSIC FLAT SIGN 266D
+MUSIC NATURAL SIGN 266E
+MUSIC SHARP SIGN 266F
+Musical Symbols 2669
+mutton 2003
+mutton quad 2001
+Myanmar 1000
+Myanmar Digits 1040
+N, DOUBLE-STRUCK CAPITAL 2115
+N, LATIN LETTER SMALL CAPITAL 0274
+N-ARY COPRODUCT 2210
+N-ARY INTERSECTION 22C2
+N-ARY LOGICAL AND 22C0
+N-ARY LOGICAL OR 22C1
+N-ARY PRODUCT 220F
+N-ARY SUMMATION 2211
+N-ARY UNION 22C3
+NABLA 2207
+NAIRA SIGN 20A6
+NAND 22BC
+nang 0323
+NARROW NO-BREAK SPACE 202F
+nasal hook 0328
+NATIONAL DIGIT SHAPES 206E
+natural number 2115
+NATURAL SIGN, MUSIC 266E
+negation 20D3
+negative acknowledge 0015
+negative acknowledge, graphic for 237B
+NEGATIVE ACKNOWLEDGE, SYMBOL FOR 2415
+NEPTUNE 2646
+new line 21B5
+NEW SHEQEL SIGN 20AA
+NEWLINE, SYMBOL FOR 2424
+next line 0085
+NEXT PAGE 2398
+NIB, BLACK 2712
+nigerian currency 20A6
+no break here 0083
+no break space, graphic for 237D
+NO-BREAK SPACE 00A0
+NO-BREAK SPACE, NARROW 202F
+NO-BREAK SPACE, ZERO WIDTH FEFF
+NODE, ASCENDING 260A
+NODE, DESCENDING 260B
+NOMINAL DIGIT SHAPES 206F
+NON-BREAKING HYPHEN 2011
+non-breaking space 00A0
+NON-JOINER, ZERO WIDTH 200C
+non-theorem 22A3
+NOR 22BD
+NORMAL SUBGROUP OF 22B2
+NORMAL SUBGROUP, CONTAINS AS 22B3
+not 223C
+Not a Character FFFE
+Not a Character FFFF
+NOT AN ELEMENT OF 2209
+NOT CHECK MARK 237B
+NOT EQUAL TO 2260
+NOT SIGN 00AC
+NOT SIGN, REVERSED 2310
+NOT SIGN, TURNED 2319
+NOT TILDE ABOVE, COMBINING 034A
+not yield, does 22A3
+NOTE, EIGHTH 266A
+NOTE, QUARTER 2669
+NOTES, BEAMED EIGHTH 266B
+NOTES, BEAMED SIXTEENTH 266C
+null 0000
+null set 2205
+NULL, SYMBOL FOR 2400
+Number Forms 2150
+Number Runes, Golden 16EE
+NUMBER SIGN 0023
+number symbol, real 210A
+NUMBER ZERO, IDEOGRAPHIC 3007
+number, natural 2115
+Numbers Period 2488
+Numbers, Circled 2460
+Numbers, Circled Inverse 2776
+Numbers, Parenthesized 2474
+numbers, the set of complex 2102
+numbers, the set of rational 211A
+numbers, the set of real 211D
+Numerals, Hangzhou-style 3021
+Numerals, Roman 2160
+NUMERATOR ONE, FRACTION 215F
+numerics lock 21ED
+NUMERO SIGN 2116
+nut 2002
+o bar 019F
+o bar 0275
+o e, latin small letter 0153
+O WITH MIDDLE TILDE, LATIN CAPITAL LETTER 019F
+o, latin capital letter barred 019F
+O, LATIN CAPITAL LETTER OPEN 0186
+O, LATIN SMALL LETTER BARRED 0275
+O, LATIN SMALL LETTER OPEN 0254
+O, SCRIPT SMALL 2134
+obelisk 2020
+obelisk, double 2021
+OBJECT REPLACEMENT CHARACTER FFFC
+OCR, Optical Character Recognition 2440
+octothorpe 0023
+OE, LATIN LETTER SMALL CAPITAL 0276
+OE, LATIN SMALL LIGATURE 0153
+Ogham 1680
+OGHAM SPACE MARK 1680
+OGONEK 02DB
+OGONEK, COMBINING 0328
+OHM SIGN 2126
+OHM SIGN, INVERTED 2127
+OI, LATIN SMALL LETTER 01A3
+OM, DEVANAGARI 0950
+OMEGA, LATIN SMALL LETTER CLOSED 0277
+ONE DOT LEADER 2024
+ONE HALF, VULGAR FRACTION 00BD
+ONE QUARTER, VULGAR FRACTION 00BC
+ONE, FRACTION NUMERATOR 215F
+ONE, SUPERSCRIPT 00B9
+OPEN BOX 2423
+OPEN BOX, SHOULDERED 237D
+OPEN E, LATIN CAPITAL LETTER 0190
+OPEN E, LATIN SMALL LETTER 025B
+OPEN E, LATIN SMALL LETTER CLOSED 029A
+OPEN E, LATIN SMALL LETTER CLOSED REVERSED 025E
+OPEN E, LATIN SMALL LETTER REVERSED 025C
+OPEN O, LATIN CAPITAL LETTER 0186
+OPEN O, LATIN SMALL LETTER 0254
+opening brace 007B
+opening curly bracket 007B
+opening parenthesis 0028
+opening square bracket 005B
+operating system command 009D
+OPERATOR, ASTERISK 2217
+OPERATOR, BULLET 2219
+OPERATOR, CIRCLED ASTERISK 229B
+OPERATOR, CIRCLED DOT 2299
+OPERATOR, CIRCLED RING 229A
+OPERATOR, DIAMOND 22C4
+OPERATOR, DOT 22C5
+OPERATOR, RING 2218
+OPERATOR, SQUARED DOT 22A1
+OPERATOR, STAR 22C6
+OPERATOR, TILDE 223C
+Operators, Mathematical 2200
+OPPOSITION 260D
+Optical Character Recognition (OCR) 2440
+OPTION KEY 2325
+OR, CURLY LOGICAL 22CE
+OR, LOGICAL 2228
+OR, N-ARY LOGICAL 22C1
+order 2134
+ORDINAL INDICATOR, FEMININE 00AA
+ORDINAL INDICATOR, MASCULINE 00BA
+ORIGIN, DIMENSION 2331
+ORIGINAL OF 22B6
+ORIGINAL OF, SQUARE 2290
+Oriya 0B00
+Oriya Digits 0B66
+Oriya Letters 0B05
+Ornaments, Heart 2763
+Ornaments, Punctuation 275B
+ORNATE LEFT PARENTHESIS FD3E
+ORTHODOX CROSS 2626
+orthogonal to 22A5
+OU, LATIN SMALL LETTER 0223
+OUNCE SIGN 2125
+overbar, apl 00AF
+OVERLAY, COMBINING CLOCKWISE RING 20D9
+OVERLAY, COMBINING LONG SOLIDUS 0338
+OVERLAY, COMBINING LONG STROKE 0336
+OVERLAY, COMBINING LONG VERTICAL LINE 20D2
+OVERLAY, COMBINING RING 20D8
+OVERLAY, COMBINING SHORT SOLIDUS 0337
+OVERLAY, COMBINING SHORT STROKE 0335
+OVERLAY, COMBINING SHORT VERTICAL LINE 20D3
+OVERLAY, COMBINING TILDE 0334
+overlay, long slash 0338
+overlay, short slash 0337
+overline 00AF
+OVERLINE 203E
+OVERLINE, CENTRELINE FE4A
+OVERLINE, COMBINING 0305
+OVERLINE, COMBINING DOUBLE 033F
+OVERLINE, DASHED FE49
+OVERLINE, DOUBLE WAVY FE4C
+OVERLINE, WAVY FE4B
+OVERRIDE, LEFT-TO-RIGHT 202D
+OVERRIDE, RIGHT-TO-LEFT 202E
+overscore 0305
+overscore, spacing 203E
+Overscores and Underscores FE49
+Overstruck Diacritics 0334
+oxia 0301
+P, DOUBLE-STRUCK CAPITAL 2119
+P, SCRIPT CAPITAL 2118
+page down 21DF
+page up 21DE
+PAGE, NEXT 2398
+PAGE, PREVIOUS 2397
+PALATALIZED HOOK BELOW, COMBINING 0321
+PARAGRAPH SEPARATOR 2029
+PARAGRAPH SEPARATOR, GEORGIAN 10FB
+paragraph separator, urdu 203B
+paragraph sign 00B6
+PARAGRAPH SIGN ORNAMENT, CURVED STEM 2761
+paragraph sign, european 00A7
+PARALLEL TO 2225
+PARALLELOGRAM, BLACK 25B0
+parenthesis, closing 0029
+PARENTHESIS, LEFT 0028
+parenthesis, opening 0028
+PARENTHESIS, ORNATE LEFT FD3E
+PARENTHESIS, RIGHT 0029
+PARENTHESIS, SUBSCRIPT LEFT 208D
+PARENTHESIS, SUPERSCRIPT LEFT 207D
+Parenthesized Ideographs 3220
+Parenthesized Korean Hangul Elements 3200
+Parenthesized Korean Hangul Syllables 320E
+Parenthesized Latin Letters 249C
+Parenthesized Numbers 2474
+parted rule 00A6
+PARTIAL DIFFERENTIAL 2202
+partial line down 008B
+partial line up 008C
+pdf 202C
+PEACE SYMBOL 262E
+Pencil Dingbats 270E
+PENCIL, UPPER RIGHT 2710
+per 2118
+PER MILLE SIGN 2030
+PER TEN THOUSAND SIGN 2031
+PERCENT SIGN 0025
+PERCENT SIGN, ARABIC 066A
+PERCUSSIVE, LATIN LETTER BIDENTAL 02AD
+PERCUSSIVE, LATIN LETTER BILABIAL 02AC
+period 002E
+PERISPOMENI, COMBINING GREEK 0342
+perpendicular 22A5
+Persian and Urdu, Eastern Arabic-Indic Digits for 06F0
+PERSPECTIVE 2306
+PESETA SIGN 20A7
+PHARYNGEAL VOICED FRICATIVE, LATIN LETTER 0295
+PHI, LATIN SMALL LETTER 0278
+Phonetic Alphabet, International 0250
+Phonetic Modifiers Derived from Latin Letters 02B0
+Phonetics and Symbols Area, CJK 2E00
+phonorecord sign 2117
+pi, mathematical constant 03C0
+Pictures for Control Codes, Graphic 2400
+PILCROW SIGN 00B6
+PILCROW SIGN, REVERSED 204B
+Pinyin Diacritic-vowel Combinations 01CD
+pipe 01C0
+pipe, double 01C1
+pipe, double-barred 01C2
+PISCES 2653
+PITCHFORK 22D4
+PLACE OF INTEREST SIGN 2318
+plaintiff 226C
+PLANCK CONSTANT 210E
+PLANCK CONSTANT OVER TWO PI 210F
+Planet Symbols 263F
+Playing Card Suits 2660
+PLUS SIGN 002B
+PLUS SIGN BELOW, COMBINING 031F
+PLUS SIGN, MODIFIER LETTER 02D6
+PLUS SIGN, SUBSCRIPT 208A
+PLUS SIGN, SUPERSCRIPT 207A
+PLUS, CIRCLED 2295
+PLUS, DOT 2214
+PLUS, SQUARED 229E
+PLUS-MINUS SIGN 00B1
+PLUTO 2647
+Pointers 25BA
+Points, Arabic 064B
+Points, Hebrew 05B0
+poison 2620
+Political Symbols, Religious and 2626
+POP DIRECTIONAL FORMATTING 202C
+POSITION INDICATOR 2316
+positive, most 223E
+POSTAL MARK 3012
+POSTAL MARK FACE 3020
+POSTAL MARK, CIRCLED 3036
+pound sign 0023
+POUND SIGN 00A3
+pound sterling 00A3
+pounds 2114
+power set 2118
+PRECEDES 227A
+PRECEDES UNDER RELATION 22B0
+PRESCRIPTION TAKE 211E
+Presentation Forms, Alphabetic FB00
+Presentation Forms, Hebrew FB1D
+Presentation Forms-A, Arabic FB50
+Presentation Forms-B, Arabic FE70
+PREVIOUS PAGE 2397
+PRIME 2032
+PRIME QUOTATION MARK, DOUBLE 301E
+PRIME QUOTATION MARK, LOW DOUBLE 301F
+PRIME QUOTATION MARK, REVERSED DOUBLE 301D
+PRIME, DOUBLE 2033
+PRIME, MODIFIER LETTER 02B9
+PRIME, MODIFIER LETTER DOUBLE 02BA
+PRIME, REVERSED 2035
+PRIME, REVERSED DOUBLE 2036
+PRIME, REVERSED TRIPLE 2037
+PRIME, TRIPLE 2034
+PRINT SCREEN SYMBOL 2399
+privacy message 009E
+Private Use Area E000
+private use one 0091
+private use two 0092
+product, direct 2299
+PRODUCT, LEFT SEMIDIRECT 22CB
+PRODUCT, N-ARY 220F
+product, tensor 2297
+PRODUCT, WREATH 2240
+PROFILE, ALL AROUND- 232E
+prohibition 20E0
+PROJECTIVE 2305
+PROOF, END OF 220E
+PROPORTION 2237
+PROPORTION, GEOMETRIC 223A
+PROPORTIONAL TO 221D
+proportional to, varies with 223C
+proves 22A2
+psili 0313
+published 2117
+Punctuation Ornaments 275B
+PUNCTUATION SPACE 2008
+Punctuation, CJK Symbols and 3000
+Punctuation, General 2000
+punt, irish 00A3
+Q, DOUBLE-STRUCK CAPITAL 211A
+Q, ROTATED CAPITAL 213A
+qed 220E
+QUAD, EM 2001
+QUAD, EN 2000
+quad, mutton 2001
+quadrature 25A1
+quantic 226C
+QUARTER MOON, FIRST 263D
+QUARTER MOON, LAST 263E
+QUARTER NOTE 2669
+Quarters, Fractions 00BC
+QUESTION EXCLAMATION MARK 2048
+QUESTION MARK 003F
+QUESTION MARK, ARABIC 061F
+QUESTION MARK, ARMENIAN 055E
+QUESTION MARK, ETHIOPIC 1367
+QUESTION MARK, EXCLAMATION 2049
+QUESTION MARK, GREEK 037E
+QUESTION MARK, INVERTED 00BF
+QUESTIONED EQUAL TO 225F
+QUILL, LEFT SQUARE BRACKET WITH 2045
+quotation dash 2015
+QUOTATION MARK 0022
+Quotation Mark Ornaments 275B
+quotation mark, double comma 201D
+QUOTATION MARK, DOUBLE HIGH-REVERSED-9 201F
+QUOTATION MARK, DOUBLE LOW-9 201E
+QUOTATION MARK, DOUBLE PRIME 301E
+quotation mark, double reversed comma 201F
+quotation mark, double turned comma 201C
+QUOTATION MARK, LEFT DOUBLE 201C
+QUOTATION MARK, LEFT SINGLE 2018
+QUOTATION MARK, LEFT-POINTING DOUBLE ANGLE 00AB
+quotation mark, low double comma 201E
+QUOTATION MARK, LOW DOUBLE PRIME 301F
+quotation mark, low single comma 201A
+QUOTATION MARK, REVERSED DOUBLE PRIME 301D
+QUOTATION MARK, RIGHT DOUBLE 201D
+QUOTATION MARK, RIGHT SINGLE 2019
+QUOTATION MARK, RIGHT-POINTING DOUBLE ANGLE 00BB
+quotation mark, single comma 2019
+QUOTATION MARK, SINGLE HIGH-REVERSED-9 201B
+QUOTATION MARK, SINGLE LEFT-POINTING ANGLE 2039
+QUOTATION MARK, SINGLE LOW-9 201A
+quotation mark, single reversed comma 201B
+QUOTATION MARK, SINGLE RIGHT-POINTING ANGLE 203A
+quotation mark, single turned comma 2018
+quote, apl 0022
+R, BLACK-LETTER CAPITAL 211C
+R, DOUBLE-STRUCK CAPITAL 211D
+R, LATIN LETTER SMALL CAPITAL 0280
+R, LATIN LETTER SMALL CAPITAL INVERTED 0281
+R, LATIN SMALL LETTER TURNED 0279
+R, MODIFIER LETTER SMALL 02B3
+R, MODIFIER LETTER SMALL CAPITAL INVERTED 02B6
+R, MODIFIER LETTER SMALL TURNED 02B4
+R, SCRIPT CAPITAL 211B
+radical sign 221A
+Radicals Supplement, CJK 2E80
+Radicals, Kangxi 2F00
+Radicals, Yi A490
+RADIOACTIVE SIGN 2622
+rainy weather 2602
+RAMS HORN, LATIN SMALL LETTER 0264
+RATIO 2236
+ratio, cross 211E
+rational numbers, the set of 211A
+real number symbol 210A
+real numbers, the set of 211D
+real part 211C
+recipe 211E
+record separator 001E
+RECORD SEPARATOR, SYMBOL FOR 241E
+RECORDER, TELEPHONE 2315
+RECORDING COPYRIGHT, SOUND 2117
+Rectangles 25AC
+reduces to 22A6
+reducible 22A2
+REFERENCE MARK 203B
+registered trade mark sign 00AE
+Religious and Political Symbols 2626
+Repeat Marks, Kana 3031
+REPLACEMENT CHARACTER FFFD
+REPLACEMENT CHARACTER, OBJECT FFFC
+resistance 2126
+RESPONSE 211F
+results in 22A8
+RETROFLEX CLICK, LATIN LETTER 01C3
+RETROFLEX HOOK BELOW, COMBINING 0322
+retroflex hook, latin small letter d 0256
+return, carriage 000D
+return, carriage 21B5
+RETURN, SYMBOL FOR CARRIAGE 240D
+reverse line feed 008D
+REVERSE SOLIDUS 005C
+reverse turnstile 22A3
+REVERSED COMMA ABOVE, COMBINING 0314
+reversed comma quotation mark, double 201F
+reversed comma quotation mark, single 201B
+REVERSED COMMA, MODIFIER LETTER 02BD
+REVERSED DOUBLE PRIME 2036
+REVERSED DOUBLE PRIME QUOTATION MARK 301D
+REVERSED E, LATIN CAPITAL LETTER 018E
+REVERSED E, LATIN SMALL LETTER 0258
+reversed epsilon, latin small letter closed 025E
+REVERSED ESH LOOP, LATIN LETTER 01AA
+REVERSED ESH, LATIN SMALL LETTER SQUAT 0285
+reversed glottal stop, latin letter 0295
+REVERSED GLOTTAL STOP, MODIFIER LETTER 02C1
+REVERSED GLOTTAL STOP, MODIFIER LETTER SMALL 02E4
+REVERSED NOT SIGN 2310
+REVERSED OPEN E, LATIN SMALL LETTER 025C
+REVERSED OPEN E, LATIN SMALL LETTER CLOSED 025E
+REVERSED PILCROW SIGN 204B
+REVERSED PRIME 2035
+reversed straight epsilon 220D
+REVERSED TILDE 223D
+REVERSED TILDE EQUALS 22CD
+REVERSED TRIPLE PRIME 2037
+REVERSED, LATIN SMALL LETTER EZH 01B9
+RHOTIC HOOK, MODIFIER LETTER 02DE
+riemann integral 211B
+RIGHT ANGLE 221F
+RIGHT ANGLE WITH ARC 22BE
+RIGHT CURLY BRACKET 007D
+RIGHT PARENTHESIS 0029
+right pointing guillemet 00BB
+right pointing single guillemet 203A
+RIGHT SQUARE BRACKET 005D
+RIGHT TRIANGLE 22BF
+RIGHT-POINTING ANGLE QUOTATION MARK, SINGLE 203A
+RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 00BB
+RIGHT-TO-LEFT EMBEDDING 202B
+RIGHT-TO-LEFT MARK 200F
+RIGHT-TO-LEFT OVERRIDE 202E
+RING ABOVE 02DA
+RING ABOVE, COMBINING 030A
+RING BELOW, COMBINING 0325
+RING BELOW, COMBINING LEFT HALF 031C
+RING BELOW, COMBINING RIGHT HALF 0339
+RING EQUAL TO 2257
+RING IN EQUAL TO 2256
+RING OPERATOR 2218
+RING OPERATOR, CIRCLED 229A
+RING OVERLAY, COMBINING 20D8
+RING OVERLAY, COMBINING CLOCKWISE 20D9
+RING, BENZENE 232C
+RING, MODIFIER LETTER CENTRED LEFT HALF 02D3
+RING, MODIFIER LETTER LEFT HALF 02BF
+rle 202B
+rlm 200F
+rlo 202E
+Roman Numerals 2160
+Romanian, Additions for 0218
+ROOT, CUBE 221B
+ROOT, FOURTH 221C
+ROOT, SQUARE 221A
+ROTATED CAPITAL Q 213A
+rotation 20D5
+rough breathing 0314
+rule, parted 00A6
+Runes, Golden Number 16EE
+Runic 16A0
+RUNOUT, TOTAL 2330
+RUPEE MARK, BENGALI 09F2
+RUPEE SIGN 20A8
+RUPEE SIGN, BENGALI 09F3
+Russian Alphabet, Basic 0410
+S, INVERTED LAZY 223E
+S, LATIN SMALL LETTER LONG 017F
+S, LATIN SMALL LETTER SHARP 00DF
+s, lazy 223D
+S, MODIFIER LETTER SMALL 02E2
+SAGITTARIUS 2650
+SALTIRE 2613
+Sanskrit and Tibetan, Mongolian Extensions for 1880
+satisfies 22A8
+SATURN 2644
+SCHWA, LATIN CAPITAL LETTER 018F
+SCHWA, LATIN SMALL LETTER 0259
+Scissors Dingbats 2701
+SCORPIUS 264F
+SCREEN, COMBINING ENCLOSING 20E2
+script a, latin small letter 0251
+SCRIPT CAPITAL B 212C
+SCRIPT CAPITAL E 2130
+SCRIPT CAPITAL F 2131
+SCRIPT CAPITAL H 210B
+SCRIPT CAPITAL I 2110
+SCRIPT CAPITAL L 2112
+SCRIPT CAPITAL M 2133
+SCRIPT CAPITAL P 2118
+SCRIPT CAPITAL R 211B
+script f, latin small letter 0192
+SCRIPT G, LATIN SMALL LETTER 0261
+SCRIPT SMALL E 212F
+SCRIPT SMALL G 210A
+SCRIPT SMALL L 2113
+SCRIPT SMALL O 2134
+script v, latin capital letter 01B2
+script v, latin small letter 028B
+Scripts Area, General 0000
+scrolling 21F3
+SCRUPLE 2108
+SEAGULL BELOW, COMBINING 033C
+second transfinite cardinal (the continuum) 2136
+seconds 2033
+SECTION SIGN 00A7
+section sign, european 00B6
+SECTOR 2314
+SEGMENT 2313
+selected area, end of 0087
+selected area, start of 0086
+SEMICOLON 003B
+SEMICOLON, ARABIC 061B
+SEMICOLON, ETHIOPIC 1364
+SEMIDIRECT PRODUCT, LEFT 22CB
+SEPARATOR KEY SYMBOL, DECIMAL 2396
+SEPARATOR, ARABIC DECIMAL 066B
+SEPARATOR, ARABIC THOUSANDS 066C
+separator, decimal 002C
+separator, devanagari phrase 0964
+separator, file 001C
+SEPARATOR, GEORGIAN PARAGRAPH 10FB
+separator, group 001D
+SEPARATOR, LINE 2028
+SEPARATOR, PARAGRAPH 2029
+separator, record 001E
+SEPARATOR, SYMBOL FOR FILE 241C
+SEPARATOR, SYMBOL FOR GROUP 241D
+SEPARATOR, SYMBOL FOR RECORD 241E
+SEPARATOR, SYMBOL FOR UNIT 241F
+separator, unit 001F
+separator, urdu paragraph 203B
+sequence introducer, control 009B
+Serbian Cyrillic Letters, Croatian Digraphs Matching 01C4
+SERVICE MARK 2120
+SET MINUS 2216
+set of complex numbers, the 2102
+set of integers, the 2124
+set of rational numbers, the 211A
+set of real numbers, the 211D
+set transmit state 0093
+SET, EMPTY 2205
+set, included in 2282
+set, includes in 2283
+set, null 2205
+set, power 2118
+sextile 2736
+Shade Characters 2591
+shamrock 2663
+Shapes, Geometric 25A0
+SHARP S, LATIN SMALL LETTER 00DF
+SHARP SIGN, MUSIC 266F
+SHEQEL SIGN, NEW 20AA
+shift 21E7
+shift in 000F
+SHIFT IN, SYMBOL FOR 240F
+shift out 000E
+SHIFT OUT, SYMBOL FOR 240E
+shilling 002F
+short 0306
+short slash overlay 0337
+SHORT SOLIDUS OVERLAY, COMBINING 0337
+SHORT STROKE OVERLAY, COMBINING 0335
+SHORT VERTICAL LINE OVERLAY, COMBINING 20D3
+SHOULDERED OPEN BOX 237D
+Sibe Letters, Mongolian 185D
+similar to 223C
+SINE WAVE 223F
+single character introducer 009A
+single comma quotation mark 2019
+single comma quotation mark, low 201A
+single guillemet, left pointing 2039
+single guillemet, right pointing 203A
+SINGLE HIGH-REVERSED-9 QUOTATION MARK 201B
+SINGLE LEFT-POINTING ANGLE QUOTATION MARK 2039
+SINGLE LOW-9 QUOTATION MARK 201A
+SINGLE QUOTATION MARK, LEFT 2018
+SINGLE QUOTATION MARK, RIGHT 2019
+single reversed comma quotation mark 201B
+SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 203A
+single shift three 008F
+single shift two 008E
+single turned comma quotation mark 2018
+Sinhala 0D80
+SIX-PER-EM SPACE 2006
+SIXTEENTH NOTES, BEAMED 266C
+Sixths, Fractions 2159
+SKULL AND CROSSBONES 2620
+slash 002F
+slash overlay, long 0338
+slash overlay, short 0337
+SLASH, CIRCLED DIVISION 2298
+SLASH, DIVISION 2215
+SLASH, FRACTION 2044
+SLOPE 2333
+Slovenian and Croatian, Additions for 0200
+SMALL CAPITAL B, LATIN LETTER 0299
+SMALL CAPITAL G, LATIN LETTER 0262
+SMALL CAPITAL H, LATIN LETTER 029C
+SMALL CAPITAL I, LATIN LETTER 026A
+SMALL CAPITAL INVERTED R, LATIN LETTER 0281
+SMALL CAPITAL INVERTED R, MODIFIER LETTER 02B6
+SMALL CAPITAL L, LATIN LETTER 029F
+SMALL CAPITAL N, LATIN LETTER 0274
+SMALL CAPITAL OE, LATIN LETTER 0276
+SMALL CAPITAL R, LATIN LETTER 0280
+SMALL CAPITAL Y, LATIN LETTER 028F
+small circle, black 2022
+SMALL CONTAINS AS MEMBER 220D
+SMALL ELEMENT OF 220A
+Small Form Variants FE50
+Small Letters, Armenian 0561
+Small Letters, Cyrillic 0430
+Small Letters, Georgian 10D0
+Small Letters, Greek 03B1
+Small Letters, Latin 0061
+SMILE 2323
+SMILING FACE, BLACK 263B
+SMILING FACE, WHITE 263A
+smooth breathing 0313
+Snowflake Dingbats 2744
+Snowflakes, Stars, Asterisks and 2721
+SNOWMAN 2603
+snowy weather 2603
+SOFT HYPHEN 00AD
+SOFTWARE-FUNCTION SYMBOL 2394
+solid 2588
+SOLIDUS 002F
+solidus 2044
+SOLIDUS OVERLAY, COMBINING LONG 0338
+SOLIDUS OVERLAY, COMBINING SHORT 0337
+SOLIDUS, REVERSE 005C
+SOUND RECORDING COPYRIGHT 2117
+SOURCE, INFORMATION 2139
+SPACE 0020
+SPACE MARK, OGHAM 1680
+SPACE, EM 2003
+SPACE, EN 2002
+SPACE, FIGURE 2007
+SPACE, FOUR-PER-EM 2005
+space, graphic for 2422
+space, graphic for 2423
+space, graphic for no break 237D
+SPACE, HAIR 200A
+SPACE, IDEOGRAPHIC 3000
+space, mid 2005
+SPACE, NARROW NO-BREAK 202F
+SPACE, NO-BREAK 00A0
+SPACE, PUNCTUATION 2008
+SPACE, SIX-PER-EM 2006
+SPACE, SYMBOL FOR 2420
+space, thick 2004
+SPACE, THIN 2009
+SPACE, THREE-PER-EM 2004
+SPACE, ZERO WIDTH 200B
+SPACE, ZERO WIDTH NO-BREAK FEFF
+Spaces 2000
+spacing acute 00B4
+spacing cedilla 00B8
+spacing circumflex 005E
+Spacing Clones of Diacritics 02D8
+spacing diaeresis 00A8
+spacing double underscore 2017
+spacing grave 0060
+spacing macron 00AF
+Spacing Modifier Letters 02B0
+spacing overscore 203E
+spacing underscore 005F
+spanish currency 20A7
+Specials FFF0
+Specials Area, Compatibility and F900
+SPHERICAL ANGLE 2222
+SQUARE BELOW, COMBINING 033B
+SQUARE BRACKET WITH QUILL, LEFT 2045
+square bracket, closing 005D
+SQUARE BRACKET, LEFT 005B
+SQUARE BRACKET, LEFT WHITE 301A
+square bracket, opening 005B
+SQUARE BRACKET, RIGHT 005D
+SQUARE CAP 2293
+SQUARE CORPORATION 337F
+SQUARE CUP 2294
+SQUARE IMAGE OF 228F
+SQUARE LOZENGE 2311
+SQUARE ORIGINAL OF 2290
+SQUARE ROOT 221A
+SQUARE, COMBINING ENCLOSING 20DE
+SQUARE, VIEWDATA 2317
+squared 00B2
+SQUARED DOT OPERATOR 22A1
+Squared Japanese Katakana Words 3300
+Squared Latin Abbreviations 3371
+SQUARED MINUS 229F
+SQUARED PLUS 229E
+SQUARED TIMES 22A0
+Squares 25A0
+SQUAT REVERSED ESH, LATIN SMALL LETTER 0285
+st. andrew's cross 2613
+star 002A
+STAR AND CRESCENT 262A
+Star Dingbats 2726
+STAR EQUALS 225B
+STAR OF DAVID 2721
+STAR OPERATOR 22C6
+STAR, ARABIC FIVE POINTED 066D
+STAR, BLACK 2605
+starburst 273A
+Stars, Asterisks and Snowflakes 2721
+start of guarded area 0096
+start of heading 0001
+START OF HEADING, SYMBOL FOR 2401
+start of selected area 0086
+start of string 0098
+start of text 0002
+START OF TEXT, SYMBOL FOR 2402
+statement is true 22A8
+sterling, pound 00A3
+stile, apl 2223
+straight epsilon 220A
+straight epsilon, reversed 220D
+stress mark 0301
+STRETCHED C, LATIN LETTER 0297
+STRICTLY EQUIVALENT TO 2263
+string terminator 009C
+string, device control 0090
+string, start of 0098
+STROKE OVERLAY, COMBINING LONG 0336
+STROKE OVERLAY, COMBINING SHORT 0335
+SUBGROUP OF, NORMAL 22B2
+SUBGROUP, CONTAINS AS NORMAL 22B3
+Subscript Digits 2080
+SUBSCRIPT EQUALS SIGN 208C
+SUBSCRIPT LEFT PARENTHESIS 208D
+SUBSCRIPT MINUS 208B
+SUBSCRIPT PLUS SIGN 208A
+subscript, iota 0345
+Subscripts 2080
+SUBSET OF 2282
+SUBSET, DOUBLE 22D0
+substitute 001A
+SUBSTITUTE FORM TWO, SYMBOL FOR 2426
+SUBSTITUTE, SYMBOL FOR 241A
+SUCCEEDS 227B
+SUCCEEDS UNDER RELATION 22B1
+such that 220B
+such that 2223
+Suits, Playing Card 2660
+sum, direct 2295
+SUMMATION, N-ARY 2211
+SUN 2609
+SUN WITH RAYS, BLACK 2600
+SUPERSCRIPT ALEF, ARABIC LETTER 0670
+Superscript Digits 2070
+SUPERSCRIPT EQUALS SIGN 207C
+SUPERSCRIPT LEFT PARENTHESIS 207D
+SUPERSCRIPT MINUS 207B
+SUPERSCRIPT ONE 00B9
+SUPERSCRIPT PLUS SIGN 207A
+SUPERSCRIPT THREE 00B3
+SUPERSCRIPT TWO 00B2
+SUPERSCRIPT ZERO 2070
+Superscripts 2070
+Superscripts and Subscripts 2070
+SUPERSET OF 2283
+SUPERSET, DOUBLE 22D1
+SURFACE INTEGRAL 222F
+Surrogates Area D800
+Surrogates, High D800
+Surrogates, Low DC00
+swedish grave accent 02DF
+swung dash 007E
+Syllabics, Unified Canadian Aboriginal 1400
+Syllables Area, Korean Hangul AC00
+Syllables, Yi A000
+Symbol Variants, Fullwidth FFE0
+Symbols and Punctuation, CJK 3000
+Symbols Area 2000
+Symbols Area, CJK Phonetics and 2E00
+Symbols for Control Codes, Graphic 2400
+Symbols, Combining Diacritical Marks for 20D0
+Symbols, Greek 03D0
+Symbols, Letterlike 2100
+Symbols, Miscellaneous 2600
+symmetric difference 2238
+symmetric difference 2296
+SYMMETRIC SWAPPING, ACTIVATE 206B
+SYMMETRIC SWAPPING, INHIBIT 206A
+SYMMETRY 232F
+synchronous idle 0016
+SYNCHRONOUS IDLE, SYMBOL FOR 2416
+Syriac 0700
+SYRIAC CROSS, EAST 2671
+SYRIAC CROSS, WEST 2670
+Syriac Format Control 070F
+T, LATIN SMALL LETTER TURNED 0287
+tab 0009
+tab with shift tab 21B9
+tab, leftward 21E4
+tab, rightward 21E5
+tab, symbol for 2409
+tabulation set, character 0088
+tabulation set, line 008A
+tabulation with justification, character 0089
+tabulation, horizontal 0009
+TABULATION, SYMBOL FOR HORIZONTAL 2409
+TABULATION, SYMBOL FOR VERTICAL 240B
+tabulation, vertical 000B
+TACK BELOW, COMBINING LEFT 0318
+TACK BELOW, COMBINING UP 031D
+TACK, LEFT 22A3
+TACK, MODIFIER LETTER UP 02D4
+TACK, RIGHT 22A2
+TACK, UP 22A5
+tainome (japanese, a kind of bullet) 25C9
+TAKE, PRESCRIPTION 211E
+Tamil 0B80
+Tamil Digits 0BE7
+Tamil Letters 0B85
+TAPE DRIVE 2707
+TAPER, CONICAL 2332
+TAURUS 2649
+tautology 22A8
+Technical, Miscellaneous 2300
+Telegraph Symbols for Days 33E0
+Telegraph Symbols for Hours 3358
+Telegraph Symbols for Months 32C0
+TELEPHONE LOCATION SIGN 2706
+TELEPHONE RECORDER 2315
+TELEPHONE SIGN 2121
+TELEPHONE, BLACK 260E
+Telugu 0C00
+Telugu Digits 0C66
+Telugu Letters 0C05
+TEN THOUSAND SIGN, PER 2031
+tensor 20E1
+tensor product 2297
+terminator, string 009C
+text, end of 0003
+text, start of 0002
+TEXT, SYMBOL FOR END OF 2403
+TEXT, SYMBOL FOR START OF 2402
+Thaana 0780
+Thai 0E00
+THAI CURRENCY SYMBOL BAHT 0E3F
+Thai Digits 0E50
+Thai Letters 0E01
+THERE EXISTS 2203
+THEREFORE 2234
+thick space 2004
+THIN SPACE 2009
+third derivative 20DB
+third transfinite cardinal (functions of a real variable) 2137
+Thirds, Fractions 2153
+THORN, LATIN CAPITAL LETTER 00DE
+THORN, LATIN SMALL LETTER 00FE
+THOUSANDS SEPARATOR, ARABIC 066C
+THOUSANDS SIGN, CYRILLIC 0482
+three dot leader 2026
+THREE DOTS ABOVE, COMBINING 20DB
+THREE QUARTERS, VULGAR FRACTION 00BE
+THREE, SUPERSCRIPT 00B3
+THREE-PER-EM SPACE 2004
+THUNDERSTORM 2608
+Tibetan 0F00
+Tibetan Digits 0F20
+Tibetan Letters 0F40
+Tibetan, Mongolian Extensions for Sanskrit and 1880
+TIE, CHARACTER 2040
+TILDE 007E
+TILDE ABOVE, COMBINING NOT 034A
+TILDE BELOW, COMBINING 0330
+TILDE EQUALS, REVERSED 22CD
+TILDE LEFT HALF, COMBINING DOUBLE FE22
+TILDE OPERATOR 223C
+TILDE OVERLAY, COMBINING 0334
+tilde, apl 223C
+TILDE, COMBINING 0303
+TILDE, COMBINING DOUBLE 0360
+TILDE, COMBINING VERTICAL 033E
+TILDE, MINUS 2242
+TILDE, REVERSED 223D
+TILDE, SMALL 02DC
+TILDE, TRIPLE 224B
+TIMES, CIRCLED 2297
+TIMES, DIVISION 22C7
+TIMES, SQUARED 22A0
+TIRONIAN SIGN ET 204A
+TIS 620-2529 (Thai), Based on 0E01
+Todo Letters, Mongolian 1843
+Tone Bar Letters 02E5
+TONE FIVE, LATIN SMALL LETTER 01BD
+TONE MARK, COMBINING ACUTE 0341
+TONE MARK, COMBINING GRAVE 0340
+Tone Marks, Ideographic 302A
+Tone Marks, Vietnamese 0340
+TONE SIX, LATIN SMALL LETTER 0185
+TONE TWO, LATIN SMALL LETTER 01A8
+tonos 0301
+TONOS, COMBINING GREEK DIALYTIKA 0344
+TOP HALF INTEGRAL 2320
+TOP LEFT CORNER 231C
+TOP LEFT CROP 230F
+TORTOISE SHELL BRACKET, LEFT 3014
+TORTOISE SHELL BRACKET, LEFT WHITE 3018
+TOTAL RUNOUT 2330
+TRADE MARK SIGN 2122
+trade mark sign, registered 00AE
+transfinite cardinal (countable), first 2135
+transfinite cardinal (functions of a real variable), third 2137
+transfinite cardinal (the continuum), second 2136
+transfinite cardinal, fourth 2138
+transmission block, end of 0017
+TRANSMISSION BLOCK, SYMBOL FOR END OF 2417
+transmission, end of 0004
+transmission, graphic for end of 2301
+TRANSMISSION, SYMBOL FOR END OF 2404
+transmit state, set 0093
+TRIANGLE, RIGHT 22BF
+Triangles 25B2
+TRIANGULAR BULLET 2023
+TRIANGULAR COLON, MODIFIER LETTER 02D0
+TRIANGULAR COLON, MODIFIER LETTER HALF 02D1
+Trigram Symbols, Yijing 2630
+trine 25B3
+TRIPLE INTEGRAL 222D
+TRIPLE PRIME 2034
+TRIPLE PRIME, REVERSED 2037
+TRIPLE TILDE 224B
+TRUE 22A8
+TUGRIK SIGN 20AE
+turbofan 274B
+turkish currency 20A4
+TURNED A, LATIN SMALL LETTER 0250
+TURNED ALPHA, LATIN SMALL LETTER 0252
+TURNED CAPITAL F 2132
+TURNED COMMA ABOVE, COMBINING 0312
+turned comma quotation mark, double 201C
+turned comma quotation mark, single 2018
+TURNED COMMA, MODIFIER LETTER 02BB
+TURNED DELTA, LATIN SMALL LETTER 018D
+turned e, latin capital letter 018E
+TURNED E, LATIN SMALL LETTER 01DD
+TURNED GREEK SMALL LETTER IOTA 2129
+TURNED H, LATIN SMALL LETTER 0265
+TURNED K, LATIN SMALL LETTER 029E
+TURNED M, LATIN CAPITAL LETTER 019C
+TURNED M, LATIN SMALL LETTER 026F
+TURNED NOT SIGN 2319
+turned question mark 00BF
+TURNED R, LATIN SMALL LETTER 0279
+TURNED R, MODIFIER LETTER SMALL 02B4
+TURNED T, LATIN SMALL LETTER 0287
+TURNED V, LATIN SMALL LETTER 028C
+TURNED W, LATIN SMALL LETTER 028D
+TURNED Y, LATIN SMALL LETTER 028E
+turnstile 22A2
+turnstile, reverse 22A3
+TWO DOT LEADER 2025
+TWO, SUPERSCRIPT 00B2
+UMBRELLA 2602
+umlaut 0308
+UNASPIRATED, MODIFIER LETTER 02ED
+underline 0332
+UNDERLINE SYMBOL, CONTINUOUS 2381
+UNDERLINE SYMBOL, DISCONTINUOUS 2382
+underline, double 0333
+underscore 0332
+underscore, double 0333
+underscore, spacing 005F
+underscore, spacing double 2017
+Underscores, Overscores and FE49
+UNDERTIE 203F
+UNDO SYMBOL 238C
+undoable delete 2425
+UNION 222A
+UNION, DOUBLE 22D3
+UNION, MULTISET 228E
+UNION, N-ARY 22C3
+unique element 2129
+unit separator 001F
+UNIT SEPARATOR, SYMBOL FOR 241F
+UP ARROWHEAD 2303
+UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS 2324
+UP RIGHT DIAGONAL ELLIPSIS 22F0
+UP TACK 22A5
+UP TACK BELOW, COMBINING 031D
+UP TACK, MODIFIER LETTER 02D4
+up, page 21DE
+UPPER BLADE SCISSORS 2701
+UPPER RIGHT PENCIL 2710
+UPSILON, LATIN CAPITAL LETTER 01B1
+UPSILON, LATIN SMALL LETTER 028A
+upstile, apl 2308
+UPWARDS ARROW BELOW, COMBINING 034E
+URANUS 2645
+urdu paragraph separator 203B
+Urdu, Eastern Arabic-Indic Digits for Persian and 06F0
+V WITH HOOK, LATIN CAPITAL LETTER 01B2
+v, latin capital letter script 01B2
+v, latin small letter script 028B
+V, LATIN SMALL LETTER TURNED 028C
+valentine 2665
+valid 22A8
+varia 0300
+varies with (proportional to) 223C
+vector 20D0
+vector 20D6
+vector pointing into page 2295
+vector pointing into page 2297
+vector pointing out of page 2299
+vee 2228
+vee above 030C
+venus 2640
+VERSICLE 2123
+vertical bar 007C
+Vertical Bar Dingbats 2758
+vertical bar, broken 00A6
+VERTICAL ELLIPSIS 22EE
+VERTICAL KANA REPEAT MARK 3031
+VERTICAL LINE 007C
+VERTICAL LINE ABOVE, COMBINING 030D
+VERTICAL LINE ABOVE, COMBINING DOUBLE 030E
+VERTICAL LINE BELOW, COMBINING 0329
+VERTICAL LINE BELOW, COMBINING DOUBLE 0348
+VERTICAL LINE OVERLAY, COMBINING LONG 20D2
+VERTICAL LINE OVERLAY, COMBINING SHORT 20D3
+VERTICAL LINE WITH MIDDLE DOT 237F
+VERTICAL LINE, DOUBLE 2016
+VERTICAL LINE, MODIFIER LETTER 02C8
+VERTICAL LINE, MODIFIER LETTER LOW 02CC
+vertical tabulation 000B
+VERTICAL TABULATION, SYMBOL FOR 240B
+VERTICAL TILDE, COMBINING 033E
+Vertical Variants, Glyphs for FE30
+VERY MUCH GREATER-THAN 22D9
+VERY MUCH LESS-THAN 22D8
+VICTORY HAND 270C
+vietnamese currency 20AB
+Vietnamese Tone Marks 0340
+Vietnamese, Latin Extensions for 1EA0
+VIEWDATA SQUARE 2317
+vinculum 0305
+VIRAMA, BENGALI SIGN 09CD
+VIRAMA, DEVANAGARI SIGN 094D
+VIRAMA, GUJARATI SIGN 0ACD
+VIRAMA, GURMUKHI SIGN 0A4D
+VIRAMA, KANNADA SIGN 0CCD
+VIRAMA, MALAYALAM SIGN 0D4D
+VIRAMA, ORIYA SIGN 0B4D
+VIRAMA, TAMIL SIGN 0BCD
+VIRAMA, TELUGU SIGN 0C4D
+VIRGO 264D
+virgule 002F
+VOICED FRICATIVE, LATIN LETTER PHARYNGEAL 0295
+VOICED SOUND MARK, COMBINING KATAKANA-HIRAGANA 3099
+VOICED SOUND MARK, KATAKANA-HIRAGANA 309B
+VOICING, MODIFIER LETTER 02EC
+VOLUME INTEGRAL 2230
+vrachy 0306
+W, LATIN SMALL LETTER TURNED 028D
+W, MODIFIER LETTER SMALL 02B7
+Warning Signs 2620
+WATCH 231A
+WAVE DASH 301C
+WAVE, SINE 223F
+WAVY DASH 3030
+WAVY LINE 2307
+WAVY LOW LINE FE4F
+WAVY OVERLINE FE4B
+WAVY OVERLINE, DOUBLE FE4C
+Weather and Astrological Symbols 2600
+wedge 028C
+wedge 2227
+weierstrass elliptic function 2118
+WHEEL OF DHARMA 2638
+WON SIGN 20A9
+Words, Squared Japanese Katakana 3300
+WORDSPACE, ETHIOPIC 1361
+WREATH PRODUCT 2240
+WRITING HAND 270D
+WYNN, LATIN CAPITAL LETTER 01F7
+WYNN, LATIN LETTER 01BF
+X ABOVE, COMBINING 033D
+X IN A RECTANGLE BOX 2327
+X, BALLOT 2717
+X, BALLOT BOX WITH 2612
+X, HEAVY BALLOT 2718
+X, HEAVY MULTIPLICATION 2716
+X, MODIFIER LETTER SMALL 02E3
+X, MULTIPLICATION 2715
+XOR 22BB
+Y, LATIN LETTER SMALL CAPITAL 028F
+Y, LATIN SMALL LETTER TURNED 028E
+Y, MODIFIER LETTER SMALL 02B8
+YANG, YIN 262F
+YEN SIGN 00A5
+Yi Radicals A490
+Yi Syllables A000
+Yiddish Digraphs 05F0
+yields 22A2
+Yijing Trigram Symbols 2630
+YIN YANG 262F
+yogh, latin capital letter 01B7
+YOGH, LATIN SMALL LETTER 021D
+yogh, latin small letter 0292
+YPOGEGRAMMENI, COMBINING GREEK 0345
+YR, LATIN LETTER 01A6
+yuan sign 00A5
+Z, BLACK-LETTER CAPITAL 2128
+Z, DOUBLE-STRUCK CAPITAL 2124
+Zapf Dingbats Series 100, ITC 2700
+ZERO WIDTH JOINER 200D
+ZERO WIDTH NO-BREAK SPACE FEFF
+ZERO WIDTH NON-JOINER 200C
+ZERO WIDTH SPACE 200B
+ZERO, CIRCLED DIGIT 24EA
+ZERO, IDEOGRAPHIC NUMBER 3007
+ZERO, SUPERSCRIPT 2070
+Zodiacal Symbols 2648
+zwj 200D
+zwnj 200C
diff --git a/contrib/perl5/lib/unicode/Is/ASCII.pl b/contrib/perl5/lib/unicode/Is/ASCII.pl
new file mode 100644
index 0000000..63f95ae
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/ASCII.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 007f
+END
diff --git a/contrib/perl5/lib/unicode/Is/Alnum.pl b/contrib/perl5/lib/unicode/Is/Alnum.pl
new file mode 100644
index 0000000..d44f744
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Alnum.pl
@@ -0,0 +1,276 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+0041 005a
+0061 007a
+00aa
+00b5
+00ba
+00c0 00d6
+00d8 00f6
+00f8 01c4
+01c6 01c7
+01c9 01ca
+01cc 01f1
+01f3 021f
+0222 0233
+0250 02ad
+0386
+0388 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0481
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0561 0587
+05d0 05ea
+05f0 05f2
+0621 063a
+0641 064a
+0660 0669
+0671 06d3
+06d5
+06f0 06fc
+0710
+0712 072c
+0780 07a5
+0905 0939
+093d
+0950
+0958 0961
+0966 096f
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09dc 09dd
+09df 09e1
+09e6 09f1
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a59 0a5c
+0a5e
+0a66 0a6f
+0a72 0a74
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd
+0ad0
+0ae0
+0ae6 0aef
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d
+0b5c 0b5d
+0b5f 0b61
+0b66 0b6f
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0be7 0bef
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c60 0c61
+0c66 0c6f
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cde
+0ce0 0ce1
+0ce6 0cef
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d60 0d61
+0d66 0d6f
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0e01 0e30
+0e32 0e33
+0e40 0e45
+0e50 0e59
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0ed0 0ed9
+0edc 0edd
+0f00
+0f20 0f29
+0f40 0f47
+0f49 0f6a
+0f88 0f8b
+1000 1021
+1023 1027
+1029 102a
+1040 1049
+1050 1055
+10a0 10c5
+10d0 10f6
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+1369 1371
+13a0 13f4
+1401 166c
+166f 1676
+1681 169a
+16a0 16ea
+1780 17b3
+17e0 17e9
+1810 1819
+1820 1842
+1844 1877
+1880 18a8
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1f87
+1f90 1f97
+1fa0 1fa7
+1fb0 1fb4
+1fb6 1fbb
+1fbe
+1fc2 1fc4
+1fc6 1fcb
+1fd0 1fd3
+1fd6 1fdb
+1fe0 1fec
+1ff2 1ff4
+1ff6 1ffb
+207f
+2102
+2107
+210a 2113
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+212f 2131
+2133 2139
+3006
+3041 3094
+30a1 30fa
+3105 312c
+3131 318e
+31a0 31b7
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe70 fe72
+fe74
+fe76 fefc
+ff10 ff19
+ff21 ff3a
+ff41 ff5a
+ff66 ff6f
+ff71 ff9d
+ffa0 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/Alpha.pl b/contrib/perl5/lib/unicode/Is/Alpha.pl
new file mode 100644
index 0000000..0e94688
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Alpha.pl
@@ -0,0 +1,258 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a
+0061 007a
+00aa
+00b5
+00ba
+00c0 00d6
+00d8 00f6
+00f8 01c4
+01c6 01c7
+01c9 01ca
+01cc 01f1
+01f3 021f
+0222 0233
+0250 02ad
+0386
+0388 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0481
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0561 0587
+05d0 05ea
+05f0 05f2
+0621 063a
+0641 064a
+0671 06d3
+06d5
+06fa 06fc
+0710
+0712 072c
+0780 07a5
+0905 0939
+093d
+0950
+0958 0961
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09dc 09dd
+09df 09e1
+09f0 09f1
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a59 0a5c
+0a5e
+0a72 0a74
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd
+0ad0
+0ae0
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d
+0b5c 0b5d
+0b5f 0b61
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c60 0c61
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cde
+0ce0 0ce1
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d60 0d61
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0e01 0e30
+0e32 0e33
+0e40 0e45
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0edc 0edd
+0f00
+0f40 0f47
+0f49 0f6a
+0f88 0f8b
+1000 1021
+1023 1027
+1029 102a
+1050 1055
+10a0 10c5
+10d0 10f6
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+13a0 13f4
+1401 166c
+166f 1676
+1681 169a
+16a0 16ea
+1780 17b3
+1820 1842
+1844 1877
+1880 18a8
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1f87
+1f90 1f97
+1fa0 1fa7
+1fb0 1fb4
+1fb6 1fbb
+1fbe
+1fc2 1fc4
+1fc6 1fcb
+1fd0 1fd3
+1fd6 1fdb
+1fe0 1fec
+1ff2 1ff4
+1ff6 1ffb
+207f
+2102
+2107
+210a 2113
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+212f 2131
+2133 2139
+3006
+3041 3094
+30a1 30fa
+3105 312c
+3131 318e
+31a0 31b7
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe70 fe72
+fe74
+fe76 fefc
+ff21 ff3a
+ff41 ff5a
+ff66 ff6f
+ff71 ff9d
+ffa0 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiAN.pl b/contrib/perl5/lib/unicode/Is/BidiAN.pl
new file mode 100644
index 0000000..4a71ae5
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiAN.pl
@@ -0,0 +1,7 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0660 0669
+066b 066c
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiB.pl b/contrib/perl5/lib/unicode/Is/BidiB.pl
new file mode 100644
index 0000000..e4ba165
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiB.pl
@@ -0,0 +1,10 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+000a
+000d
+001c 001e
+0085
+2029
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiCS.pl b/contrib/perl5/lib/unicode/Is/BidiCS.pl
new file mode 100644
index 0000000..f8d037d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiCS.pl
@@ -0,0 +1,16 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+002c
+002e
+003a
+00a0
+060c
+fe50
+fe52
+fe55
+ff0c
+ff0e
+ff1a
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiEN.pl b/contrib/perl5/lib/unicode/Is/BidiEN.pl
new file mode 100644
index 0000000..d63270a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiEN.pl
@@ -0,0 +1,15 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+00b2 00b3
+00b9
+06f0 06f9
+2070
+2074 2079
+2080 2089
+2460 249b
+24ea
+ff10 ff19
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiES.pl b/contrib/perl5/lib/unicode/Is/BidiES.pl
new file mode 100644
index 0000000..5a1a36a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiES.pl
@@ -0,0 +1,7 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+002f
+ff0f
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiET.pl b/contrib/perl5/lib/unicode/Is/BidiET.pl
new file mode 100644
index 0000000..5e7af2b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiET.pl
@@ -0,0 +1,29 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0023 0025
+002b
+002d
+00a2 00a5
+00b0 00b1
+066a
+09f2 09f3
+0e3f
+17db
+2030 2034
+207a 207b
+208a 208b
+20a0 20af
+212e
+2212 2213
+fb29
+fe5f
+fe62 fe63
+fe69 fe6a
+ff03 ff05
+ff0b
+ff0d
+ffe0 ffe1
+ffe5 ffe6
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiL.pl b/contrib/perl5/lib/unicode/Is/BidiL.pl
new file mode 100644
index 0000000..8dc4ca8
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiL.pl
@@ -0,0 +1,323 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a
+0061 007a
+00aa
+00b5
+00ba
+00c0 00d6
+00d8 00f6
+00f8 021f
+0222 0233
+0250 02ad
+02b0 02b8
+02bb 02c1
+02d0 02d1
+02e0 02e4
+02ee
+037a
+0386
+0388 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0482
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0559 055f
+0561 0587
+0589
+0903
+0905 0939
+093d 0940
+0949 094c
+0950
+0958 0961
+0964 0970
+0982 0983
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09be 09c0
+09c7 09c8
+09cb 09cc
+09d7
+09dc 09dd
+09df 09e1
+09e6 09f1
+09f4 09fa
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a3e 0a40
+0a59 0a5c
+0a5e
+0a66 0a6f
+0a72 0a74
+0a83
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd 0ac0
+0ac9
+0acb 0acc
+0ad0
+0ae0
+0ae6 0aef
+0b02 0b03
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d 0b3e
+0b40
+0b47 0b48
+0b4b 0b4c
+0b57
+0b5c 0b5d
+0b5f 0b61
+0b66 0b70
+0b83
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0bbe 0bbf
+0bc1 0bc2
+0bc6 0bc8
+0bca 0bcc
+0bd7
+0be7 0bf2
+0c01 0c03
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c41 0c44
+0c60 0c61
+0c66 0c6f
+0c82 0c83
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cbe
+0cc0 0cc4
+0cc7 0cc8
+0cca 0ccb
+0cd5 0cd6
+0cde
+0ce0 0ce1
+0ce6 0cef
+0d02 0d03
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d3e 0d40
+0d46 0d48
+0d4a 0d4c
+0d57
+0d60 0d61
+0d66 0d6f
+0d82 0d83
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0dcf 0dd1
+0dd8 0ddf
+0df2 0df4
+0e01 0e30
+0e32 0e33
+0e40 0e46
+0e4f 0e5b
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0ec6
+0ed0 0ed9
+0edc 0edd
+0f00 0f17
+0f1a 0f34
+0f36
+0f38
+0f3e 0f47
+0f49 0f6a
+0f7f
+0f85
+0f88 0f8b
+0fbe 0fc5
+0fc7 0fcc
+0fcf
+1000 1021
+1023 1027
+1029 102a
+102c
+1031
+1038
+1040 1057
+10a0 10c5
+10d0 10f6
+10fb
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+1361 137c
+13a0 13f4
+1401 1676
+1681 169a
+16a0 16f0
+1780 17b6
+17be 17c5
+17c7 17c8
+17d4 17da
+17dc
+17e0 17e9
+1810 1819
+1820 1877
+1880 18a8
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1fb4
+1fb6 1fbc
+1fbe
+1fc2 1fc4
+1fc6 1fcc
+1fd0 1fd3
+1fd6 1fdb
+1fe0 1fec
+1ff2 1ff4
+1ff6 1ffc
+200e
+207f
+2102
+2107
+210a 2113
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+212f 2131
+2133 2139
+2160 2183
+2336 237a
+2395
+249c 24e9
+3005 3007
+3021 3029
+3031 3035
+3038 303a
+3041 3094
+309d 309e
+30a1 30fa
+30fc 30fe
+3105 312c
+3131 318e
+3190 31b7
+3200 321c
+3220 3243
+3260 327b
+327f 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+d800 db7f
+db80 dbff
+dc00 dfff
+e000 f8ff
+f900 fa2d
+fb00 fb06
+fb13 fb17
+ff21 ff3a
+ff41 ff5a
+ff66 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiON.pl b/contrib/perl5/lib/unicode/Is/BidiON.pl
new file mode 100644
index 0000000..bde00ff
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiON.pl
@@ -0,0 +1,115 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0021 0022
+0026 002a
+003b 0040
+005b 0060
+007b 007e
+00a1
+00a6 00a9
+00ab 00af
+00b4
+00b6 00b8
+00bb 00bf
+00d7
+00f7
+02b9 02ba
+02c2 02cf
+02d2 02df
+02e5 02ed
+0374 0375
+037e
+0384 0385
+0387
+058a
+06e9
+0f3a 0f3d
+169b 169c
+1800 180a
+1fbd
+1fbf 1fc1
+1fcd 1fcf
+1fdd 1fdf
+1fed 1fef
+1ffd 1ffe
+2010 2027
+2035 2046
+2048 204d
+207c 207e
+208c 208e
+2100 2101
+2103 2106
+2108 2109
+2114
+2116 2118
+211e 2123
+2125
+2127
+2129
+2132
+213a
+2153 215f
+2190 21f3
+2200 2211
+2214 22f1
+2300 2335
+237b
+237d 2394
+2396 239a
+2400 2426
+2440 244a
+2500 2595
+25a0 25f7
+2600 2613
+2619 2671
+2701 2704
+2706 2709
+270c 2727
+2729 274b
+274d
+274f 2752
+2756
+2758 275e
+2761 2767
+2776 2794
+2798 27af
+27b1 27be
+2800 28ff
+2e80 2e99
+2e9b 2ef3
+2f00 2fd5
+2ff0 2ffb
+3001 3004
+3008 3020
+3030
+3036 3037
+303e 303f
+309b 309c
+30fb
+a490 a4a1
+a4a4 a4b3
+a4b5 a4c0
+a4c2 a4c4
+a4c6
+fd3e fd3f
+fe30 fe44
+fe49 fe4f
+fe51
+fe54
+fe56 fe5e
+fe60 fe61
+fe64 fe66
+fe68
+fe6b
+ff01 ff02
+ff06 ff0a
+ff1b ff20
+ff3b ff40
+ff5b ff5e
+ff61 ff65
+ffe2 ffe4
+ffe8 ffee
+fffc fffd
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiR.pl b/contrib/perl5/lib/unicode/Is/BidiR.pl
new file mode 100644
index 0000000..fccc1f6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiR.pl
@@ -0,0 +1,19 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+05be
+05c0
+05c3
+05d0 05ea
+05f0 05f4
+200f
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fb4f
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiS.pl b/contrib/perl5/lib/unicode/Is/BidiS.pl
new file mode 100644
index 0000000..b28b331
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiS.pl
@@ -0,0 +1,8 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0009
+000b
+001f
+END
diff --git a/contrib/perl5/lib/unicode/Is/BidiWS.pl b/contrib/perl5/lib/unicode/Is/BidiWS.pl
new file mode 100644
index 0000000..25d8b8f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/BidiWS.pl
@@ -0,0 +1,12 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+000c
+0020
+1680
+2000 200a
+2028
+202f
+3000
+END
diff --git a/contrib/perl5/lib/unicode/Is/C.pl b/contrib/perl5/lib/unicode/Is/C.pl
new file mode 100644
index 0000000..0db83c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/C.pl
@@ -0,0 +1,18 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 001f
+007f 009f
+070f
+180b 180e
+200c 200f
+202a 202e
+206a 206f
+d800 db7f
+db80 dbff
+dc00 dfff
+e000 f8ff
+feff
+fff9 fffb
+END
diff --git a/contrib/perl5/lib/unicode/Is/Cc.pl b/contrib/perl5/lib/unicode/Is/Cc.pl
new file mode 100644
index 0000000..d7184e3
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Cc.pl
@@ -0,0 +1,7 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 001f
+007f 009f
+END
diff --git a/contrib/perl5/lib/unicode/Is/Cn.pl b/contrib/perl5/lib/unicode/Is/Cn.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Cn.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/Cntrl.pl b/contrib/perl5/lib/unicode/Is/Cntrl.pl
new file mode 100644
index 0000000..0db83c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Cntrl.pl
@@ -0,0 +1,18 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 001f
+007f 009f
+070f
+180b 180e
+200c 200f
+202a 202e
+206a 206f
+d800 db7f
+db80 dbff
+dc00 dfff
+e000 f8ff
+feff
+fff9 fffb
+END
diff --git a/contrib/perl5/lib/unicode/Is/Co.pl b/contrib/perl5/lib/unicode/Is/Co.pl
new file mode 100644
index 0000000..c456d33
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Co.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+e000 f8ff
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCcircle.pl b/contrib/perl5/lib/unicode/Is/DCcircle.pl
new file mode 100644
index 0000000..4c47b28
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCcircle.pl
@@ -0,0 +1,10 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2460 2473
+24b6 24ea
+3260 327b
+3280 32b0
+32d0 32fe
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCcompat.pl b/contrib/perl5/lib/unicode/Is/DCcompat.pl
new file mode 100644
index 0000000..75d2569
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCcompat.pl
@@ -0,0 +1,69 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00a8
+00af
+00b4 00b5
+00b8
+0132 0133
+013f 0140
+0149
+017f
+01c4 01cc
+01f1 01f3
+02d8 02dd
+037a
+0384
+03d0 03d2
+03d5 03d6
+03f0 03f2
+0587
+0675 0678
+0e33
+0eb3
+0edc 0edd
+0f77
+0f79
+1e9a
+1fbd
+1fbf 1fc0
+1ffe
+2002 2006
+2008 200a
+2017
+2024 2026
+2033 2034
+2036 2037
+203c
+203e
+2048 2049
+20a8
+2100 2101
+2103
+2105 2107
+2109
+2116
+2121
+2135 2138
+2160 217f
+222c 222d
+222f 2230
+2474 24b5
+2e9f
+2ef3
+2f00 2fd5
+3036
+3038 303a
+309b 309c
+3131 318e
+3200 321c
+3220 3243
+32c0 32cb
+3358 3370
+33e0 33fe
+fb00 fb06
+fb13 fb17
+fb4f
+fe49 fe4f
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCfinal.pl b/contrib/perl5/lib/unicode/Is/DCfinal.pl
new file mode 100644
index 0000000..33fbf6a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCfinal.pl
@@ -0,0 +1,118 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fb51
+fb53
+fb57
+fb5b
+fb5f
+fb63
+fb67
+fb6b
+fb6f
+fb73
+fb77
+fb7b
+fb7f
+fb83
+fb85
+fb87
+fb89
+fb8b
+fb8d
+fb8f
+fb93
+fb97
+fb9b
+fb9f
+fba1
+fba5
+fba7
+fbab
+fbaf
+fbb1
+fbd4
+fbd8
+fbda
+fbdc
+fbdf
+fbe1
+fbe3
+fbe5
+fbeb
+fbed
+fbef
+fbf1
+fbf3
+fbf5
+fbf7
+fbfa
+fbfd
+fc64 fc96
+fd11 fd2c
+fd3c
+fd51
+fd58
+fd5a fd5b
+fd5e fd5f
+fd62
+fd64
+fd66 fd67
+fd69 fd6a
+fd6c
+fd6e fd6f
+fd71
+fd74 fd76
+fd78 fd7c
+fd7e fd82
+fd84 fd85
+fd87
+fd8b
+fd96 fd97
+fd99 fd9c
+fd9e fdb3
+fdb6 fdb7
+fdb9
+fdbb fdc2
+fdc6 fdc7
+fe82
+fe84
+fe86
+fe88
+fe8a
+fe8e
+fe90
+fe94
+fe96
+fe9a
+fe9e
+fea2
+fea6
+feaa
+feac
+feae
+feb0
+feb2
+feb6
+feba
+febe
+fec2
+fec6
+feca
+fece
+fed2
+fed6
+feda
+fede
+fee2
+fee6
+feea
+feee
+fef0
+fef2
+fef6
+fef8
+fefa
+fefc
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCfont.pl b/contrib/perl5/lib/unicode/Is/DCfont.pl
new file mode 100644
index 0000000..c72234b
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCfont.pl
@@ -0,0 +1,16 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2102
+210a 2113
+2115
+2119 211d
+2124
+2128
+212c 212d
+212f 2131
+2133 2134
+2139
+fb20 fb29
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCinital.pl b/contrib/perl5/lib/unicode/Is/DCinital.pl
new file mode 100644
index 0000000..2c9cf47
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCinital.pl
@@ -0,0 +1,59 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fb55
+fb59
+fb5d
+fb61
+fb65
+fb69
+fb6d
+fb71
+fb75
+fb79
+fb7d
+fb81
+fb91
+fb95
+fb99
+fb9d
+fba3
+fba9
+fbad
+fbd6
+fbe7
+fbe9
+fbff
+fcdf fcf4
+fd34 fd3b
+fe71
+fe77
+fe79
+fe7b
+fe7d
+fe7f
+fe8c
+fe92
+fe98
+fe9c
+fea0
+fea4
+fea8
+feb4
+feb8
+febc
+fec0
+fec4
+fec8
+fecc
+fed0
+fed4
+fed8
+fedc
+fee0
+fee4
+fee8
+feec
+fef4
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCinitial.pl b/contrib/perl5/lib/unicode/Is/DCinitial.pl
new file mode 100644
index 0000000..0145b7d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCinitial.pl
@@ -0,0 +1,80 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fb54
+fb58
+fb5c
+fb60
+fb64
+fb68
+fb6c
+fb70
+fb74
+fb78
+fb7c
+fb80
+fb90
+fb94
+fb98
+fb9c
+fba2
+fba8
+fbac
+fbd5
+fbe6
+fbe8
+fbf8
+fbfb
+fbfe
+fc97 fcde
+fd2d fd33
+fd50
+fd52 fd57
+fd59
+fd5c fd5d
+fd60 fd61
+fd63
+fd65
+fd68
+fd6b
+fd6d
+fd70
+fd72 fd73
+fd77
+fd7d
+fd83
+fd86
+fd88 fd8a
+fd8c fd8f
+fd92 fd95
+fd98
+fd9d
+fdb4 fdb5
+fdb8
+fdba
+fdc3 fdc5
+fe8b
+fe91
+fe97
+fe9b
+fe9f
+fea3
+fea7
+feb3
+feb7
+febb
+febf
+fec3
+fec7
+fecb
+fecf
+fed3
+fed7
+fedb
+fedf
+fee3
+fee7
+feeb
+fef3
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCisolated.pl b/contrib/perl5/lib/unicode/Is/DCisolated.pl
new file mode 100644
index 0000000..cc8541e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCisolated.pl
@@ -0,0 +1,103 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fb50
+fb52
+fb56
+fb5a
+fb5e
+fb62
+fb66
+fb6a
+fb6e
+fb72
+fb76
+fb7a
+fb7e
+fb82
+fb84
+fb86
+fb88
+fb8a
+fb8c
+fb8e
+fb92
+fb96
+fb9a
+fb9e
+fba0
+fba4
+fba6
+fbaa
+fbae
+fbb0
+fbd3
+fbd7
+fbd9
+fbdb
+fbdd fbde
+fbe0
+fbe2
+fbe4
+fbea
+fbec
+fbee
+fbf0
+fbf2
+fbf4
+fbf6
+fbf9
+fbfc
+fc00 fc63
+fcf5 fd10
+fd3d
+fdf0 fdfb
+fe70
+fe72
+fe74
+fe76
+fe78
+fe7a
+fe7c
+fe7e
+fe80 fe81
+fe83
+fe85
+fe87
+fe89
+fe8d
+fe8f
+fe93
+fe95
+fe99
+fe9d
+fea1
+fea5
+fea9
+feab
+fead
+feaf
+feb1
+feb5
+feb9
+febd
+fec1
+fec5
+fec9
+fecd
+fed1
+fed5
+fed9
+fedd
+fee1
+fee5
+fee9
+feed
+feef
+fef1
+fef5
+fef7
+fef9
+fefb
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCnarrow.pl b/contrib/perl5/lib/unicode/Is/DCnarrow.pl
new file mode 100644
index 0000000..9417de1
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCnarrow.pl
@@ -0,0 +1,11 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+ff61 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+ffe8 ffee
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCnoBreak.pl b/contrib/perl5/lib/unicode/Is/DCnoBreak.pl
new file mode 100644
index 0000000..1fd9e87
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCnoBreak.pl
@@ -0,0 +1,10 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00a0
+0f0c
+2007
+2011
+202f
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCsmall.pl b/contrib/perl5/lib/unicode/Is/DCsmall.pl
new file mode 100644
index 0000000..f6c8069
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCsmall.pl
@@ -0,0 +1,8 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fe50 fe52
+fe54 fe66
+fe68 fe6b
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCsquare.pl b/contrib/perl5/lib/unicode/Is/DCsquare.pl
new file mode 100644
index 0000000..b55fdd9
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCsquare.pl
@@ -0,0 +1,8 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3300 3357
+3371 3376
+337b 33dd
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCsub.pl b/contrib/perl5/lib/unicode/Is/DCsub.pl
new file mode 100644
index 0000000..98c4dfa
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCsub.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2080 208e
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCsuper.pl b/contrib/perl5/lib/unicode/Is/DCsuper.pl
new file mode 100644
index 0000000..865a26d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCsuper.pl
@@ -0,0 +1,15 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00aa
+00b2 00b3
+00b9 00ba
+02b0 02b8
+02e0 02e4
+2070
+2074 207f
+2120
+2122
+3192 319f
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCvertical.pl b/contrib/perl5/lib/unicode/Is/DCvertical.pl
new file mode 100644
index 0000000..5d55483
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCvertical.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+fe30 fe44
+END
diff --git a/contrib/perl5/lib/unicode/Is/DCwide.pl b/contrib/perl5/lib/unicode/Is/DCwide.pl
new file mode 100644
index 0000000..09dae19
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DCwide.pl
@@ -0,0 +1,8 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+3000
+ff01 ff5e
+ffe0 ffe6
+END
diff --git a/contrib/perl5/lib/unicode/Is/DecoCanon.pl b/contrib/perl5/lib/unicode/Is/DecoCanon.pl
new file mode 100644
index 0000000..c5a59f6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DecoCanon.pl
@@ -0,0 +1,212 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00c0 00c5
+00c7 00cf
+00d1 00d6
+00d9 00dd
+00e0 00e5
+00e7 00ef
+00f1 00f6
+00f9 00fd
+00ff 010f
+0112 0125
+0128 0130
+0134 0137
+0139 013e
+0143 0148
+014c 0151
+0154 0165
+0168 017e
+01a0 01a1
+01af 01b0
+01cd 01dc
+01de 01e3
+01e6 01f0
+01f4 01f5
+01f8 021b
+021e 021f
+0226 0233
+0340 0341
+0343 0344
+0374
+037e
+0385 038a
+038c
+038e 0390
+03aa 03b0
+03ca 03ce
+03d3 03d4
+0400 0401
+0403
+0407
+040c 040e
+0419
+0439
+0450 0451
+0453
+0457
+045c 045e
+0476 0477
+04c1 04c2
+04d0 04d3
+04d6 04d7
+04da 04df
+04e2 04e7
+04ea 04f5
+04f8 04f9
+0622 0626
+06c0
+06c2
+06d3
+0929
+0931
+0934
+0958 095f
+09cb 09cc
+09dc 09dd
+09df
+0a33
+0a36
+0a59 0a5b
+0a5e
+0b48
+0b4b 0b4c
+0b5c 0b5d
+0b94
+0bca 0bcc
+0c48
+0cc0
+0cc7 0cc8
+0cca 0ccb
+0d4a 0d4c
+0dda
+0ddc 0dde
+0f43
+0f4d
+0f52
+0f57
+0f5c
+0f69
+0f73
+0f75 0f76
+0f78
+0f81
+0f93
+0f9d
+0fa2
+0fa7
+0fac
+0fb9
+1026
+1e00 1e99
+1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1fb4
+1fb6 1fbc
+1fbe
+1fc1 1fc4
+1fc6 1fd3
+1fd6 1fdb
+1fdd 1fef
+1ff2 1ff4
+1ff6 1ffd
+2000 2001
+2126
+212a 212b
+219a 219b
+21ae
+21cd 21cf
+2204
+2209
+220c
+2224
+2226
+2241
+2244
+2247
+2249
+2260
+2262
+226d 2271
+2274 2275
+2278 2279
+2280 2281
+2284 2285
+2288 2289
+22ac 22af
+22e0 22e3
+22ea 22ed
+2329 232a
+304c
+304e
+3050
+3052
+3054
+3056
+3058
+305a
+305c
+305e
+3060
+3062
+3065
+3067
+3069
+3070 3071
+3073 3074
+3076 3077
+3079 307a
+307c 307d
+3094
+309e
+30ac
+30ae
+30b0
+30b2
+30b4
+30b6
+30b8
+30ba
+30bc
+30be
+30c0
+30c2
+30c5
+30c7
+30c9
+30d0 30d1
+30d3 30d4
+30d6 30d7
+30d9 30da
+30dc 30dd
+30f4
+30f7 30fa
+30fe
+f900 fa0d
+fa10
+fa12
+fa15 fa1e
+fa20
+fa22
+fa25 fa26
+fa2a fa2d
+fb1d
+fb1f
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fb4e
+END
diff --git a/contrib/perl5/lib/unicode/Is/DecoCompat.pl b/contrib/perl5/lib/unicode/Is/DecoCompat.pl
new file mode 100644
index 0000000..43d34fc
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/DecoCompat.pl
@@ -0,0 +1,107 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00a0
+00a8
+00aa
+00af
+00b2 00b5
+00b8 00ba
+00bc 00be
+0132 0133
+013f 0140
+0149
+017f
+01c4 01cc
+01f1 01f3
+02b0 02b8
+02d8 02dd
+02e0 02e4
+037a
+0384
+03d0 03d2
+03d5 03d6
+03f0 03f2
+0587
+0675 0678
+0e33
+0eb3
+0edc 0edd
+0f0c
+0f77
+0f79
+1e9a
+1fbd
+1fbf 1fc0
+1ffe
+2002 200a
+2011
+2017
+2024 2026
+202f
+2033 2034
+2036 2037
+203c
+203e
+2048 2049
+2070
+2074 208e
+20a8
+2100 2103
+2105 2107
+2109 2113
+2115 2116
+2119 211d
+2120 2122
+2124
+2128
+212c 212d
+212f 2131
+2133 2139
+2153 217f
+222c 222d
+222f 2230
+2460 24ea
+2e9f
+2ef3
+2f00 2fd5
+3000
+3036
+3038 303a
+309b 309c
+3131 318e
+3192 319f
+3200 321c
+3220 3243
+3260 327b
+3280 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+fb00 fb06
+fb13 fb17
+fb20 fb29
+fb4f fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe30 fe44
+fe49 fe52
+fe54 fe66
+fe68 fe6b
+fe70 fe72
+fe74
+fe76 fefc
+ff01 ff5e
+ff61 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+ffe0 ffe6
+ffe8 ffee
+END
diff --git a/contrib/perl5/lib/unicode/Is/Digit.pl b/contrib/perl5/lib/unicode/Is/Digit.pl
new file mode 100644
index 0000000..2ab8156
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Digit.pl
@@ -0,0 +1,25 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+0660 0669
+06f0 06f9
+0966 096f
+09e6 09ef
+0a66 0a6f
+0ae6 0aef
+0b66 0b6f
+0be7 0bef
+0c66 0c6f
+0ce6 0cef
+0d66 0d6f
+0e50 0e59
+0ed0 0ed9
+0f20 0f29
+1040 1049
+1369 1371
+17e0 17e9
+1810 1819
+ff10 ff19
+END
diff --git a/contrib/perl5/lib/unicode/Is/Graph.pl b/contrib/perl5/lib/unicode/Is/Graph.pl
new file mode 100644
index 0000000..9c94bb7
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Graph.pl
@@ -0,0 +1,362 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0021 007e
+00a0 021f
+0222 0233
+0250 02ad
+02b0 02ee
+0300 034e
+0360 0362
+0374 0375
+037a
+037e
+0384 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0486
+0488 0489
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0559 055f
+0561 0587
+0589 058a
+0591 05a1
+05a3 05b9
+05bb 05c4
+05d0 05ea
+05f0 05f4
+060c
+061b
+061f
+0621 063a
+0640 0655
+0660 066d
+0670 06ed
+06f0 06fe
+0700 070d
+0710 072c
+0730 074a
+0780 07b0
+0901 0903
+0905 0939
+093c 094d
+0950 0954
+0958 0970
+0981 0983
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09bc
+09be 09c4
+09c7 09c8
+09cb 09cd
+09d7
+09dc 09dd
+09df 09e3
+09e6 09fa
+0a02
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a3c
+0a3e 0a42
+0a47 0a48
+0a4b 0a4d
+0a59 0a5c
+0a5e
+0a66 0a74
+0a81 0a83
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abc 0ac5
+0ac7 0ac9
+0acb 0acd
+0ad0
+0ae0
+0ae6 0aef
+0b01 0b03
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3c 0b43
+0b47 0b48
+0b4b 0b4d
+0b56 0b57
+0b5c 0b5d
+0b5f 0b61
+0b66 0b70
+0b82 0b83
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0bbe 0bc2
+0bc6 0bc8
+0bca 0bcd
+0bd7
+0be7 0bf2
+0c01 0c03
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c3e 0c44
+0c46 0c48
+0c4a 0c4d
+0c55 0c56
+0c60 0c61
+0c66 0c6f
+0c82 0c83
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cbe 0cc4
+0cc6 0cc8
+0cca 0ccd
+0cd5 0cd6
+0cde
+0ce0 0ce1
+0ce6 0cef
+0d02 0d03
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d3e 0d43
+0d46 0d48
+0d4a 0d4d
+0d57
+0d60 0d61
+0d66 0d6f
+0d82 0d83
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0dca
+0dcf 0dd4
+0dd6
+0dd8 0ddf
+0df2 0df4
+0e01 0e3a
+0e3f 0e5b
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb9
+0ebb 0ebd
+0ec0 0ec4
+0ec6
+0ec8 0ecd
+0ed0 0ed9
+0edc 0edd
+0f00 0f47
+0f49 0f6a
+0f71 0f8b
+0f90 0f97
+0f99 0fbc
+0fbe 0fcc
+0fcf
+1000 1021
+1023 1027
+1029 102a
+102c 1032
+1036 1039
+1040 1059
+10a0 10c5
+10d0 10f6
+10fb
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+1361 137c
+13a0 13f4
+1401 1676
+1680 169c
+16a0 16f0
+1780 17dc
+17e0 17e9
+1800 180a
+1810 1819
+1820 1877
+1880 18a9
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1fb4
+1fb6 1fc4
+1fc6 1fd3
+1fd6 1fdb
+1fdd 1fef
+1ff2 1ff4
+1ff6 1ffe
+2000 200b
+2010 2029
+202f 2046
+2048 204d
+2070
+2074 208e
+20a0 20af
+20d0 20e3
+2100 213a
+2153 2183
+2190 21f3
+2200 22f1
+2300 237b
+237d 239a
+2400 2426
+2440 244a
+2460 24ea
+2500 2595
+25a0 25f7
+2600 2613
+2619 2671
+2701 2704
+2706 2709
+270c 2727
+2729 274b
+274d
+274f 2752
+2756
+2758 275e
+2761 2767
+2776 2794
+2798 27af
+27b1 27be
+2800 28ff
+2e80 2e99
+2e9b 2ef3
+2f00 2fd5
+2ff0 2ffb
+3000 303a
+303e 303f
+3041 3094
+3099 309e
+30a1 30fe
+3105 312c
+3131 318e
+3190 31b7
+3200 321c
+3220 3243
+3260 327b
+327f 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+3400 4db5
+4e00 9fa5
+a000 a48c
+a490 a4a1
+a4a4 a4b3
+a4b5 a4c0
+a4c2 a4c4
+a4c6
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3f
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe20 fe23
+fe30 fe44
+fe49 fe52
+fe54 fe66
+fe68 fe6b
+fe70 fe72
+fe74
+fe76 fefc
+ff01 ff5e
+ff61 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+ffe0 ffe6
+ffe8 ffee
+fffc fffd
+END
diff --git a/contrib/perl5/lib/unicode/Is/L.pl b/contrib/perl5/lib/unicode/Is/L.pl
new file mode 100644
index 0000000..c32f830
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/L.pl
@@ -0,0 +1,260 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a
+0061 007a
+00aa
+00b5
+00ba
+00c0 00d6
+00d8 00f6
+00f8 021f
+0222 0233
+0250 02ad
+02b0 02b8
+02bb 02c1
+02d0 02d1
+02e0 02e4
+02ee
+037a
+0386
+0388 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0481
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0559
+0561 0587
+05d0 05ea
+05f0 05f2
+0621 063a
+0640 064a
+0671 06d3
+06d5
+06e5 06e6
+06fa 06fc
+0710
+0712 072c
+0780 07a5
+0905 0939
+093d
+0950
+0958 0961
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09dc 09dd
+09df 09e1
+09f0 09f1
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a59 0a5c
+0a5e
+0a72 0a74
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd
+0ad0
+0ae0
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d
+0b5c 0b5d
+0b5f 0b61
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c60 0c61
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cde
+0ce0 0ce1
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d60 0d61
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0e01 0e30
+0e32 0e33
+0e40 0e46
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0ec6
+0edc 0edd
+0f00
+0f40 0f47
+0f49 0f6a
+0f88 0f8b
+1000 1021
+1023 1027
+1029 102a
+1050 1055
+10a0 10c5
+10d0 10f6
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+13a0 13f4
+1401 166c
+166f 1676
+1681 169a
+16a0 16ea
+1780 17b3
+1820 1877
+1880 18a8
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1fb4
+1fb6 1fbc
+1fbe
+1fc2 1fc4
+1fc6 1fcc
+1fd0 1fd3
+1fd6 1fdb
+1fe0 1fec
+1ff2 1ff4
+1ff6 1ffc
+207f
+2102
+2107
+210a 2113
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+212f 2131
+2133 2139
+3005 3006
+3031 3035
+3041 3094
+309d 309e
+30a1 30fa
+30fc 30fe
+3105 312c
+3131 318e
+31a0 31b7
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe70 fe72
+fe74
+fe76 fefc
+ff21 ff3a
+ff41 ff5a
+ff66 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/Ll.pl b/contrib/perl5/lib/unicode/Is/Ll.pl
new file mode 100644
index 0000000..2814794
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Ll.pl
@@ -0,0 +1,379 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0061 007a
+00aa
+00b5
+00ba
+00df 00f6
+00f8 00ff
+0101
+0103
+0105
+0107
+0109
+010b
+010d
+010f
+0111
+0113
+0115
+0117
+0119
+011b
+011d
+011f
+0121
+0123
+0125
+0127
+0129
+012b
+012d
+012f
+0131
+0133
+0135
+0137 0138
+013a
+013c
+013e
+0140
+0142
+0144
+0146
+0148 0149
+014b
+014d
+014f
+0151
+0153
+0155
+0157
+0159
+015b
+015d
+015f
+0161
+0163
+0165
+0167
+0169
+016b
+016d
+016f
+0171
+0173
+0175
+0177
+017a
+017c
+017e 0180
+0183
+0185
+0188
+018c 018d
+0192
+0195
+0199 019b
+019e
+01a1
+01a3
+01a5
+01a8
+01aa 01ab
+01ad
+01b0
+01b4
+01b6
+01b9 01ba
+01bd 01bf
+01c6
+01c9
+01cc
+01ce
+01d0
+01d2
+01d4
+01d6
+01d8
+01da
+01dc 01dd
+01df
+01e1
+01e3
+01e5
+01e7
+01e9
+01eb
+01ed
+01ef 01f0
+01f3
+01f5
+01f9
+01fb
+01fd
+01ff
+0201
+0203
+0205
+0207
+0209
+020b
+020d
+020f
+0211
+0213
+0215
+0217
+0219
+021b
+021d
+021f
+0223
+0225
+0227
+0229
+022b
+022d
+022f
+0231
+0233
+0250 02ad
+0390
+03ac 03ce
+03d0 03d1
+03d5 03d7
+03db
+03dd
+03df
+03e1
+03e3
+03e5
+03e7
+03e9
+03eb
+03ed
+03ef 03f3
+0430 045f
+0461
+0463
+0465
+0467
+0469
+046b
+046d
+046f
+0471
+0473
+0475
+0477
+0479
+047b
+047d
+047f
+0481
+048d
+048f
+0491
+0493
+0495
+0497
+0499
+049b
+049d
+049f
+04a1
+04a3
+04a5
+04a7
+04a9
+04ab
+04ad
+04af
+04b1
+04b3
+04b5
+04b7
+04b9
+04bb
+04bd
+04bf
+04c2
+04c4
+04c8
+04cc
+04d1
+04d3
+04d5
+04d7
+04d9
+04db
+04dd
+04df
+04e1
+04e3
+04e5
+04e7
+04e9
+04eb
+04ed
+04ef
+04f1
+04f3
+04f5
+04f9
+0561 0587
+1e01
+1e03
+1e05
+1e07
+1e09
+1e0b
+1e0d
+1e0f
+1e11
+1e13
+1e15
+1e17
+1e19
+1e1b
+1e1d
+1e1f
+1e21
+1e23
+1e25
+1e27
+1e29
+1e2b
+1e2d
+1e2f
+1e31
+1e33
+1e35
+1e37
+1e39
+1e3b
+1e3d
+1e3f
+1e41
+1e43
+1e45
+1e47
+1e49
+1e4b
+1e4d
+1e4f
+1e51
+1e53
+1e55
+1e57
+1e59
+1e5b
+1e5d
+1e5f
+1e61
+1e63
+1e65
+1e67
+1e69
+1e6b
+1e6d
+1e6f
+1e71
+1e73
+1e75
+1e77
+1e79
+1e7b
+1e7d
+1e7f
+1e81
+1e83
+1e85
+1e87
+1e89
+1e8b
+1e8d
+1e8f
+1e91
+1e93
+1e95 1e9b
+1ea1
+1ea3
+1ea5
+1ea7
+1ea9
+1eab
+1ead
+1eaf
+1eb1
+1eb3
+1eb5
+1eb7
+1eb9
+1ebb
+1ebd
+1ebf
+1ec1
+1ec3
+1ec5
+1ec7
+1ec9
+1ecb
+1ecd
+1ecf
+1ed1
+1ed3
+1ed5
+1ed7
+1ed9
+1edb
+1edd
+1edf
+1ee1
+1ee3
+1ee5
+1ee7
+1ee9
+1eeb
+1eed
+1eef
+1ef1
+1ef3
+1ef5
+1ef7
+1ef9
+1f00 1f07
+1f10 1f15
+1f20 1f27
+1f30 1f37
+1f40 1f45
+1f50 1f57
+1f60 1f67
+1f70 1f7d
+1f80 1f87
+1f90 1f97
+1fa0 1fa7
+1fb0 1fb4
+1fb6 1fb7
+1fbe
+1fc2 1fc4
+1fc6 1fc7
+1fd0 1fd3
+1fd6 1fd7
+1fe0 1fe7
+1ff2 1ff4
+1ff6 1ff7
+207f
+210a
+210e 210f
+2113
+212f
+2134
+2139
+fb00 fb06
+fb13 fb17
+ff41 ff5a
+END
diff --git a/contrib/perl5/lib/unicode/Is/Lm.pl b/contrib/perl5/lib/unicode/Is/Lm.pl
new file mode 100644
index 0000000..4380afe
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Lm.pl
@@ -0,0 +1,23 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+02b0 02b8
+02bb 02c1
+02d0 02d1
+02e0 02e4
+02ee
+037a
+0559
+0640
+06e5 06e6
+0e46
+0ec6
+1843
+3005
+3031 3035
+309d 309e
+30fc 30fe
+ff70
+ff9e ff9f
+END
diff --git a/contrib/perl5/lib/unicode/Is/Lo.pl b/contrib/perl5/lib/unicode/Is/Lo.pl
new file mode 100644
index 0000000..78fab4c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Lo.pl
@@ -0,0 +1,191 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+01bb
+01c0 01c3
+05d0 05ea
+05f0 05f2
+0621 063a
+0641 064a
+0671 06d3
+06d5
+06fa 06fc
+0710
+0712 072c
+0780 07a5
+0905 0939
+093d
+0950
+0958 0961
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09dc 09dd
+09df 09e1
+09f0 09f1
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a59 0a5c
+0a5e
+0a72 0a74
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd
+0ad0
+0ae0
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d
+0b5c 0b5d
+0b5f 0b61
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c60 0c61
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cde
+0ce0 0ce1
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d60 0d61
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0e01 0e30
+0e32 0e33
+0e40 0e45
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0edc 0edd
+0f00
+0f40 0f47
+0f49 0f6a
+0f88 0f8b
+1000 1021
+1023 1027
+1029 102a
+1050 1055
+10d0 10f6
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+13a0 13f4
+1401 166c
+166f 1676
+1681 169a
+16a0 16ea
+1780 17b3
+1820 1842
+1844 1877
+1880 18a8
+2135 2138
+3006
+3041 3094
+30a1 30fa
+3105 312c
+3131 318e
+31a0 31b7
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+f900 fa2d
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe70 fe72
+fe74
+fe76 fefc
+ff66 ff6f
+ff71 ff9d
+ffa0 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/Lower.pl b/contrib/perl5/lib/unicode/Is/Lower.pl
new file mode 100644
index 0000000..2814794
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Lower.pl
@@ -0,0 +1,379 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0061 007a
+00aa
+00b5
+00ba
+00df 00f6
+00f8 00ff
+0101
+0103
+0105
+0107
+0109
+010b
+010d
+010f
+0111
+0113
+0115
+0117
+0119
+011b
+011d
+011f
+0121
+0123
+0125
+0127
+0129
+012b
+012d
+012f
+0131
+0133
+0135
+0137 0138
+013a
+013c
+013e
+0140
+0142
+0144
+0146
+0148 0149
+014b
+014d
+014f
+0151
+0153
+0155
+0157
+0159
+015b
+015d
+015f
+0161
+0163
+0165
+0167
+0169
+016b
+016d
+016f
+0171
+0173
+0175
+0177
+017a
+017c
+017e 0180
+0183
+0185
+0188
+018c 018d
+0192
+0195
+0199 019b
+019e
+01a1
+01a3
+01a5
+01a8
+01aa 01ab
+01ad
+01b0
+01b4
+01b6
+01b9 01ba
+01bd 01bf
+01c6
+01c9
+01cc
+01ce
+01d0
+01d2
+01d4
+01d6
+01d8
+01da
+01dc 01dd
+01df
+01e1
+01e3
+01e5
+01e7
+01e9
+01eb
+01ed
+01ef 01f0
+01f3
+01f5
+01f9
+01fb
+01fd
+01ff
+0201
+0203
+0205
+0207
+0209
+020b
+020d
+020f
+0211
+0213
+0215
+0217
+0219
+021b
+021d
+021f
+0223
+0225
+0227
+0229
+022b
+022d
+022f
+0231
+0233
+0250 02ad
+0390
+03ac 03ce
+03d0 03d1
+03d5 03d7
+03db
+03dd
+03df
+03e1
+03e3
+03e5
+03e7
+03e9
+03eb
+03ed
+03ef 03f3
+0430 045f
+0461
+0463
+0465
+0467
+0469
+046b
+046d
+046f
+0471
+0473
+0475
+0477
+0479
+047b
+047d
+047f
+0481
+048d
+048f
+0491
+0493
+0495
+0497
+0499
+049b
+049d
+049f
+04a1
+04a3
+04a5
+04a7
+04a9
+04ab
+04ad
+04af
+04b1
+04b3
+04b5
+04b7
+04b9
+04bb
+04bd
+04bf
+04c2
+04c4
+04c8
+04cc
+04d1
+04d3
+04d5
+04d7
+04d9
+04db
+04dd
+04df
+04e1
+04e3
+04e5
+04e7
+04e9
+04eb
+04ed
+04ef
+04f1
+04f3
+04f5
+04f9
+0561 0587
+1e01
+1e03
+1e05
+1e07
+1e09
+1e0b
+1e0d
+1e0f
+1e11
+1e13
+1e15
+1e17
+1e19
+1e1b
+1e1d
+1e1f
+1e21
+1e23
+1e25
+1e27
+1e29
+1e2b
+1e2d
+1e2f
+1e31
+1e33
+1e35
+1e37
+1e39
+1e3b
+1e3d
+1e3f
+1e41
+1e43
+1e45
+1e47
+1e49
+1e4b
+1e4d
+1e4f
+1e51
+1e53
+1e55
+1e57
+1e59
+1e5b
+1e5d
+1e5f
+1e61
+1e63
+1e65
+1e67
+1e69
+1e6b
+1e6d
+1e6f
+1e71
+1e73
+1e75
+1e77
+1e79
+1e7b
+1e7d
+1e7f
+1e81
+1e83
+1e85
+1e87
+1e89
+1e8b
+1e8d
+1e8f
+1e91
+1e93
+1e95 1e9b
+1ea1
+1ea3
+1ea5
+1ea7
+1ea9
+1eab
+1ead
+1eaf
+1eb1
+1eb3
+1eb5
+1eb7
+1eb9
+1ebb
+1ebd
+1ebf
+1ec1
+1ec3
+1ec5
+1ec7
+1ec9
+1ecb
+1ecd
+1ecf
+1ed1
+1ed3
+1ed5
+1ed7
+1ed9
+1edb
+1edd
+1edf
+1ee1
+1ee3
+1ee5
+1ee7
+1ee9
+1eeb
+1eed
+1eef
+1ef1
+1ef3
+1ef5
+1ef7
+1ef9
+1f00 1f07
+1f10 1f15
+1f20 1f27
+1f30 1f37
+1f40 1f45
+1f50 1f57
+1f60 1f67
+1f70 1f7d
+1f80 1f87
+1f90 1f97
+1fa0 1fa7
+1fb0 1fb4
+1fb6 1fb7
+1fbe
+1fc2 1fc4
+1fc6 1fc7
+1fd0 1fd3
+1fd6 1fd7
+1fe0 1fe7
+1ff2 1ff4
+1ff6 1ff7
+207f
+210a
+210e 210f
+2113
+212f
+2134
+2139
+fb00 fb06
+fb13 fb17
+ff41 ff5a
+END
diff --git a/contrib/perl5/lib/unicode/Is/Lt.pl b/contrib/perl5/lib/unicode/Is/Lt.pl
new file mode 100644
index 0000000..809c37a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Lt.pl
@@ -0,0 +1,15 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+01c5
+01c8
+01cb
+01f2
+1f88 1f8f
+1f98 1f9f
+1fa8 1faf
+1fbc
+1fcc
+1ffc
+END
diff --git a/contrib/perl5/lib/unicode/Is/Lu.pl b/contrib/perl5/lib/unicode/Is/Lu.pl
new file mode 100644
index 0000000..8dde274
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Lu.pl
@@ -0,0 +1,376 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a
+00c0 00d6
+00d8 00de
+0100
+0102
+0104
+0106
+0108
+010a
+010c
+010e
+0110
+0112
+0114
+0116
+0118
+011a
+011c
+011e
+0120
+0122
+0124
+0126
+0128
+012a
+012c
+012e
+0130
+0132
+0134
+0136
+0139
+013b
+013d
+013f
+0141
+0143
+0145
+0147
+014a
+014c
+014e
+0150
+0152
+0154
+0156
+0158
+015a
+015c
+015e
+0160
+0162
+0164
+0166
+0168
+016a
+016c
+016e
+0170
+0172
+0174
+0176
+0178 0179
+017b
+017d
+0181 0182
+0184
+0186 0187
+0189 018b
+018e 0191
+0193 0194
+0196 0198
+019c 019d
+019f 01a0
+01a2
+01a4
+01a6 01a7
+01a9
+01ac
+01ae 01af
+01b1 01b3
+01b5
+01b7 01b8
+01bc
+01c4
+01c7
+01ca
+01cd
+01cf
+01d1
+01d3
+01d5
+01d7
+01d9
+01db
+01de
+01e0
+01e2
+01e4
+01e6
+01e8
+01ea
+01ec
+01ee
+01f1
+01f4
+01f6 01f8
+01fa
+01fc
+01fe
+0200
+0202
+0204
+0206
+0208
+020a
+020c
+020e
+0210
+0212
+0214
+0216
+0218
+021a
+021c
+021e
+0222
+0224
+0226
+0228
+022a
+022c
+022e
+0230
+0232
+0386
+0388 038a
+038c
+038e 038f
+0391 03a1
+03a3 03ab
+03d2 03d4
+03da
+03dc
+03de
+03e0
+03e2
+03e4
+03e6
+03e8
+03ea
+03ec
+03ee
+0400 042f
+0460
+0462
+0464
+0466
+0468
+046a
+046c
+046e
+0470
+0472
+0474
+0476
+0478
+047a
+047c
+047e
+0480
+048c
+048e
+0490
+0492
+0494
+0496
+0498
+049a
+049c
+049e
+04a0
+04a2
+04a4
+04a6
+04a8
+04aa
+04ac
+04ae
+04b0
+04b2
+04b4
+04b6
+04b8
+04ba
+04bc
+04be
+04c0 04c1
+04c3
+04c7
+04cb
+04d0
+04d2
+04d4
+04d6
+04d8
+04da
+04dc
+04de
+04e0
+04e2
+04e4
+04e6
+04e8
+04ea
+04ec
+04ee
+04f0
+04f2
+04f4
+04f8
+0531 0556
+10a0 10c5
+1e00
+1e02
+1e04
+1e06
+1e08
+1e0a
+1e0c
+1e0e
+1e10
+1e12
+1e14
+1e16
+1e18
+1e1a
+1e1c
+1e1e
+1e20
+1e22
+1e24
+1e26
+1e28
+1e2a
+1e2c
+1e2e
+1e30
+1e32
+1e34
+1e36
+1e38
+1e3a
+1e3c
+1e3e
+1e40
+1e42
+1e44
+1e46
+1e48
+1e4a
+1e4c
+1e4e
+1e50
+1e52
+1e54
+1e56
+1e58
+1e5a
+1e5c
+1e5e
+1e60
+1e62
+1e64
+1e66
+1e68
+1e6a
+1e6c
+1e6e
+1e70
+1e72
+1e74
+1e76
+1e78
+1e7a
+1e7c
+1e7e
+1e80
+1e82
+1e84
+1e86
+1e88
+1e8a
+1e8c
+1e8e
+1e90
+1e92
+1e94
+1ea0
+1ea2
+1ea4
+1ea6
+1ea8
+1eaa
+1eac
+1eae
+1eb0
+1eb2
+1eb4
+1eb6
+1eb8
+1eba
+1ebc
+1ebe
+1ec0
+1ec2
+1ec4
+1ec6
+1ec8
+1eca
+1ecc
+1ece
+1ed0
+1ed2
+1ed4
+1ed6
+1ed8
+1eda
+1edc
+1ede
+1ee0
+1ee2
+1ee4
+1ee6
+1ee8
+1eea
+1eec
+1eee
+1ef0
+1ef2
+1ef4
+1ef6
+1ef8
+1f08 1f0f
+1f18 1f1d
+1f28 1f2f
+1f38 1f3f
+1f48 1f4d
+1f59
+1f5b
+1f5d
+1f5f
+1f68 1f6f
+1fb8 1fbb
+1fc8 1fcb
+1fd8 1fdb
+1fe8 1fec
+1ff8 1ffb
+2102
+2107
+210b 210d
+2110 2112
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+2130 2131
+2133
+ff21 ff3a
+END
diff --git a/contrib/perl5/lib/unicode/Is/M.pl b/contrib/perl5/lib/unicode/Is/M.pl
new file mode 100644
index 0000000..9367775
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/M.pl
@@ -0,0 +1,105 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0300 034e
+0360 0362
+0483 0486
+0488 0489
+0591 05a1
+05a3 05b9
+05bb 05bd
+05bf
+05c1 05c2
+05c4
+064b 0655
+0670
+06d6 06e4
+06e7 06e8
+06ea 06ed
+0711
+0730 074a
+07a6 07b0
+0901 0903
+093c
+093e 094d
+0951 0954
+0962 0963
+0981 0983
+09bc
+09be 09c4
+09c7 09c8
+09cb 09cd
+09d7
+09e2 09e3
+0a02
+0a3c
+0a3e 0a42
+0a47 0a48
+0a4b 0a4d
+0a70 0a71
+0a81 0a83
+0abc
+0abe 0ac5
+0ac7 0ac9
+0acb 0acd
+0b01 0b03
+0b3c
+0b3e 0b43
+0b47 0b48
+0b4b 0b4d
+0b56 0b57
+0b82 0b83
+0bbe 0bc2
+0bc6 0bc8
+0bca 0bcd
+0bd7
+0c01 0c03
+0c3e 0c44
+0c46 0c48
+0c4a 0c4d
+0c55 0c56
+0c82 0c83
+0cbe 0cc4
+0cc6 0cc8
+0cca 0ccd
+0cd5 0cd6
+0d02 0d03
+0d3e 0d43
+0d46 0d48
+0d4a 0d4d
+0d57
+0d82 0d83
+0dca
+0dcf 0dd4
+0dd6
+0dd8 0ddf
+0df2 0df3
+0e31
+0e34 0e3a
+0e47 0e4e
+0eb1
+0eb4 0eb9
+0ebb 0ebc
+0ec8 0ecd
+0f18 0f19
+0f35
+0f37
+0f39
+0f3e 0f3f
+0f71 0f84
+0f86 0f87
+0f90 0f97
+0f99 0fbc
+0fc6
+102c 1032
+1036 1039
+1056 1059
+17b4 17d3
+18a9
+20d0 20e3
+302a 302f
+3099 309a
+fb1e
+fe20 fe23
+END
diff --git a/contrib/perl5/lib/unicode/Is/Mc.pl b/contrib/perl5/lib/unicode/Is/Mc.pl
new file mode 100644
index 0000000..937d8d4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Mc.pl
@@ -0,0 +1,56 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0903
+093e 0940
+0949 094c
+0982 0983
+09be 09c0
+09c7 09c8
+09cb 09cc
+09d7
+0a3e 0a40
+0a83
+0abe 0ac0
+0ac9
+0acb 0acc
+0b02 0b03
+0b3e
+0b40
+0b47 0b48
+0b4b 0b4c
+0b57
+0b83
+0bbe 0bbf
+0bc1 0bc2
+0bc6 0bc8
+0bca 0bcc
+0bd7
+0c01 0c03
+0c41 0c44
+0c82 0c83
+0cbe
+0cc0 0cc4
+0cc7 0cc8
+0cca 0ccb
+0cd5 0cd6
+0d02 0d03
+0d3e 0d40
+0d46 0d48
+0d4a 0d4c
+0d57
+0d82 0d83
+0dcf 0dd1
+0dd8 0ddf
+0df2 0df3
+0f3e 0f3f
+0f7f
+102c
+1031
+1038
+1056 1057
+17b4 17b6
+17be 17c5
+17c7 17c8
+END
diff --git a/contrib/perl5/lib/unicode/Is/Mirrored.pl b/contrib/perl5/lib/unicode/Is/Mirrored.pl
new file mode 100644
index 0000000..e2c55a6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Mirrored.pl
@@ -0,0 +1,48 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0028 0029
+003c
+003e
+005b
+005d
+007b
+007d
+00ab
+00bb
+2039 203a
+2045 2046
+207d 207e
+208d 208e
+2201 2204
+2208 220d
+2211
+2215 2216
+221a 221d
+221f 2222
+2224
+2226
+222b 2233
+2239
+223b 224c
+2252 2255
+225f 2260
+2262
+2264 226b
+226e 228c
+228f 2292
+2298
+22a2 22a3
+22a6 22b8
+22be 22bf
+22c9 22cd
+22d0 22d1
+22d6 22ed
+22f0 22f1
+2308 230b
+2320 2321
+2329 232a
+3008 3011
+3014 301b
+END
diff --git a/contrib/perl5/lib/unicode/Is/Mn.pl b/contrib/perl5/lib/unicode/Is/Mn.pl
new file mode 100644
index 0000000..aba40af
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Mn.pl
@@ -0,0 +1,98 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0300 034e
+0360 0362
+0483 0486
+0591 05a1
+05a3 05b9
+05bb 05bd
+05bf
+05c1 05c2
+05c4
+064b 0655
+0670
+06d6 06dc
+06df 06e4
+06e7 06e8
+06ea 06ed
+0711
+0730 074a
+07a6 07b0
+0901 0902
+093c
+0941 0948
+094d
+0951 0954
+0962 0963
+0981
+09bc
+09c1 09c4
+09cd
+09e2 09e3
+0a02
+0a3c
+0a41 0a42
+0a47 0a48
+0a4b 0a4d
+0a70 0a71
+0a81 0a82
+0abc
+0ac1 0ac5
+0ac7 0ac8
+0acd
+0b01
+0b3c
+0b3f
+0b41 0b43
+0b4d
+0b56
+0b82
+0bc0
+0bcd
+0c3e 0c40
+0c46 0c48
+0c4a 0c4d
+0c55 0c56
+0cbf
+0cc6
+0ccc 0ccd
+0d41 0d43
+0d4d
+0dca
+0dd2 0dd4
+0dd6
+0e31
+0e34 0e3a
+0e47 0e4e
+0eb1
+0eb4 0eb9
+0ebb 0ebc
+0ec8 0ecd
+0f18 0f19
+0f35
+0f37
+0f39
+0f71 0f7e
+0f80 0f84
+0f86 0f87
+0f90 0f97
+0f99 0fbc
+0fc6
+102d 1030
+1032
+1036 1037
+1039
+1058 1059
+17b7 17bd
+17c6
+17c9 17d3
+18a9
+20d0 20dc
+20e1
+302a 302f
+3099 309a
+fb1e
+fe20 fe23
+END
diff --git a/contrib/perl5/lib/unicode/Is/N.pl b/contrib/perl5/lib/unicode/Is/N.pl
new file mode 100644
index 0000000..1291f27
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/N.pl
@@ -0,0 +1,43 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+00b2 00b3
+00b9
+00bc 00be
+0660 0669
+06f0 06f9
+0966 096f
+09e6 09ef
+09f4 09f9
+0a66 0a6f
+0ae6 0aef
+0b66 0b6f
+0be7 0bf2
+0c66 0c6f
+0ce6 0cef
+0d66 0d6f
+0e50 0e59
+0ed0 0ed9
+0f20 0f33
+1040 1049
+1369 137c
+16ee 16f0
+17e0 17e9
+1810 1819
+2070
+2074 2079
+2080 2089
+2153 2183
+2460 249b
+24ea
+2776 2793
+3007
+3021 3029
+3038 303a
+3192 3195
+3220 3229
+3280 3289
+ff10 ff19
+END
diff --git a/contrib/perl5/lib/unicode/Is/Nd.pl b/contrib/perl5/lib/unicode/Is/Nd.pl
new file mode 100644
index 0000000..2ab8156
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Nd.pl
@@ -0,0 +1,25 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+0660 0669
+06f0 06f9
+0966 096f
+09e6 09ef
+0a66 0a6f
+0ae6 0aef
+0b66 0b6f
+0be7 0bef
+0c66 0c6f
+0ce6 0cef
+0d66 0d6f
+0e50 0e59
+0ed0 0ed9
+0f20 0f29
+1040 1049
+1369 1371
+17e0 17e9
+1810 1819
+ff10 ff19
+END
diff --git a/contrib/perl5/lib/unicode/Is/No.pl b/contrib/perl5/lib/unicode/Is/No.pl
new file mode 100644
index 0000000..6a57dc5
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/No.pl
@@ -0,0 +1,23 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00b2 00b3
+00b9
+00bc 00be
+09f4 09f9
+0bf0 0bf2
+0f2a 0f33
+1372 137c
+16ee 16f0
+2070
+2074 2079
+2080 2089
+2153 215f
+2460 249b
+24ea
+2776 2793
+3192 3195
+3220 3229
+3280 3289
+END
diff --git a/contrib/perl5/lib/unicode/Is/P.pl b/contrib/perl5/lib/unicode/Is/P.pl
new file mode 100644
index 0000000..8fd1e8e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/P.pl
@@ -0,0 +1,80 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0021 0023
+0025 002a
+002c 002f
+003a 003b
+003f 0040
+005b 005d
+005f
+007b
+007d
+00a1
+00ab
+00ad
+00b7
+00bb
+00bf
+037e
+0387
+055a 055f
+0589 058a
+05be
+05c0
+05c3
+05f3 05f4
+060c
+061b
+061f
+066a 066d
+06d4
+0700 070d
+0964 0965
+0970
+0df4
+0e4f
+0e5a 0e5b
+0f04 0f12
+0f3a 0f3d
+0f85
+104a 104f
+10fb
+1361 1368
+166d 166e
+169b 169c
+16eb 16ed
+17d4 17da
+17dc
+1800 180a
+2010 2027
+2030 2043
+2045 2046
+2048 204d
+207d 207e
+208d 208e
+2329 232a
+3001 3003
+3008 3011
+3014 301f
+3030
+30fb
+fd3e fd3f
+fe30 fe44
+fe49 fe52
+fe54 fe61
+fe63
+fe68
+fe6a fe6b
+ff01 ff03
+ff05 ff0a
+ff0c ff0f
+ff1a ff1b
+ff1f ff20
+ff3b ff3d
+ff3f
+ff5b
+ff5d
+ff61 ff65
+END
diff --git a/contrib/perl5/lib/unicode/Is/Pd.pl b/contrib/perl5/lib/unicode/Is/Pd.pl
new file mode 100644
index 0000000..58997ca
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Pd.pl
@@ -0,0 +1,16 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+002d
+00ad
+058a
+1806
+2010 2015
+301c
+3030
+fe31 fe32
+fe58
+fe63
+ff0d
+END
diff --git a/contrib/perl5/lib/unicode/Is/Pe.pl b/contrib/perl5/lib/unicode/Is/Pe.pl
new file mode 100644
index 0000000..8879191
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Pe.pl
@@ -0,0 +1,41 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0029
+005d
+007d
+0f3b
+0f3d
+169c
+2046
+207e
+208e
+232a
+3009
+300b
+300d
+300f
+3011
+3015
+3017
+3019
+301b
+301e 301f
+fd3f
+fe36
+fe38
+fe3a
+fe3c
+fe3e
+fe40
+fe42
+fe44
+fe5a
+fe5c
+fe5e
+ff09
+ff3d
+ff5d
+ff63
+END
diff --git a/contrib/perl5/lib/unicode/Is/Po.pl b/contrib/perl5/lib/unicode/Is/Po.pl
new file mode 100644
index 0000000..e6b8b02
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Po.pl
@@ -0,0 +1,70 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0021 0023
+0025 0027
+002a
+002c
+002e 002f
+003a 003b
+003f 0040
+005c
+00a1
+00b7
+00bf
+037e
+0387
+055a 055f
+0589
+05be
+05c0
+05c3
+05f3 05f4
+060c
+061b
+061f
+066a 066d
+06d4
+0700 070d
+0964 0965
+0970
+0df4
+0e4f
+0e5a 0e5b
+0f04 0f12
+0f85
+104a 104f
+10fb
+1361 1368
+166d 166e
+16eb 16ed
+17d4 17da
+17dc
+1800 1805
+1807 180a
+2016 2017
+2020 2027
+2030 2038
+203b 203e
+2041 2043
+2048 204d
+3001 3003
+fe30
+fe49 fe4c
+fe50 fe52
+fe54 fe57
+fe5f fe61
+fe68
+fe6a fe6b
+ff01 ff03
+ff05 ff07
+ff0a
+ff0c
+ff0e ff0f
+ff1a ff1b
+ff1f ff20
+ff3c
+ff61
+ff64
+END
diff --git a/contrib/perl5/lib/unicode/Is/Print.pl b/contrib/perl5/lib/unicode/Is/Print.pl
new file mode 100644
index 0000000..9560586
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Print.pl
@@ -0,0 +1,362 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0020 007e
+00a0 021f
+0222 0233
+0250 02ad
+02b0 02ee
+0300 034e
+0360 0362
+0374 0375
+037a
+037e
+0384 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0486
+0488 0489
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0559 055f
+0561 0587
+0589 058a
+0591 05a1
+05a3 05b9
+05bb 05c4
+05d0 05ea
+05f0 05f4
+060c
+061b
+061f
+0621 063a
+0640 0655
+0660 066d
+0670 06ed
+06f0 06fe
+0700 070d
+0710 072c
+0730 074a
+0780 07b0
+0901 0903
+0905 0939
+093c 094d
+0950 0954
+0958 0970
+0981 0983
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09bc
+09be 09c4
+09c7 09c8
+09cb 09cd
+09d7
+09dc 09dd
+09df 09e3
+09e6 09fa
+0a02
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a3c
+0a3e 0a42
+0a47 0a48
+0a4b 0a4d
+0a59 0a5c
+0a5e
+0a66 0a74
+0a81 0a83
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abc 0ac5
+0ac7 0ac9
+0acb 0acd
+0ad0
+0ae0
+0ae6 0aef
+0b01 0b03
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3c 0b43
+0b47 0b48
+0b4b 0b4d
+0b56 0b57
+0b5c 0b5d
+0b5f 0b61
+0b66 0b70
+0b82 0b83
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0bbe 0bc2
+0bc6 0bc8
+0bca 0bcd
+0bd7
+0be7 0bf2
+0c01 0c03
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c3e 0c44
+0c46 0c48
+0c4a 0c4d
+0c55 0c56
+0c60 0c61
+0c66 0c6f
+0c82 0c83
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cbe 0cc4
+0cc6 0cc8
+0cca 0ccd
+0cd5 0cd6
+0cde
+0ce0 0ce1
+0ce6 0cef
+0d02 0d03
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d3e 0d43
+0d46 0d48
+0d4a 0d4d
+0d57
+0d60 0d61
+0d66 0d6f
+0d82 0d83
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0dca
+0dcf 0dd4
+0dd6
+0dd8 0ddf
+0df2 0df4
+0e01 0e3a
+0e3f 0e5b
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb9
+0ebb 0ebd
+0ec0 0ec4
+0ec6
+0ec8 0ecd
+0ed0 0ed9
+0edc 0edd
+0f00 0f47
+0f49 0f6a
+0f71 0f8b
+0f90 0f97
+0f99 0fbc
+0fbe 0fcc
+0fcf
+1000 1021
+1023 1027
+1029 102a
+102c 1032
+1036 1039
+1040 1059
+10a0 10c5
+10d0 10f6
+10fb
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+1361 137c
+13a0 13f4
+1401 1676
+1680 169c
+16a0 16f0
+1780 17dc
+17e0 17e9
+1800 180a
+1810 1819
+1820 1877
+1880 18a9
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1fb4
+1fb6 1fc4
+1fc6 1fd3
+1fd6 1fdb
+1fdd 1fef
+1ff2 1ff4
+1ff6 1ffe
+2000 200b
+2010 2029
+202f 2046
+2048 204d
+2070
+2074 208e
+20a0 20af
+20d0 20e3
+2100 213a
+2153 2183
+2190 21f3
+2200 22f1
+2300 237b
+237d 239a
+2400 2426
+2440 244a
+2460 24ea
+2500 2595
+25a0 25f7
+2600 2613
+2619 2671
+2701 2704
+2706 2709
+270c 2727
+2729 274b
+274d
+274f 2752
+2756
+2758 275e
+2761 2767
+2776 2794
+2798 27af
+27b1 27be
+2800 28ff
+2e80 2e99
+2e9b 2ef3
+2f00 2fd5
+2ff0 2ffb
+3000 303a
+303e 303f
+3041 3094
+3099 309e
+30a1 30fe
+3105 312c
+3131 318e
+3190 31b7
+3200 321c
+3220 3243
+3260 327b
+327f 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+3400 4db5
+4e00 9fa5
+a000 a48c
+a490 a4a1
+a4a4 a4b3
+a4b5 a4c0
+a4c2 a4c4
+a4c6
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3f
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe20 fe23
+fe30 fe44
+fe49 fe52
+fe54 fe66
+fe68 fe6b
+fe70 fe72
+fe74
+fe76 fefc
+ff01 ff5e
+ff61 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+ffe0 ffe6
+ffe8 ffee
+fffc fffd
+END
diff --git a/contrib/perl5/lib/unicode/Is/Ps.pl b/contrib/perl5/lib/unicode/Is/Ps.pl
new file mode 100644
index 0000000..a7dee37
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Ps.pl
@@ -0,0 +1,43 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0028
+005b
+007b
+0f3a
+0f3c
+169b
+201a
+201e
+2045
+207d
+208d
+2329
+3008
+300a
+300c
+300e
+3010
+3014
+3016
+3018
+301a
+301d
+fd3e
+fe35
+fe37
+fe39
+fe3b
+fe3d
+fe3f
+fe41
+fe43
+fe59
+fe5b
+fe5d
+ff08
+ff3b
+ff5b
+ff62
+END
diff --git a/contrib/perl5/lib/unicode/Is/Punct.pl b/contrib/perl5/lib/unicode/Is/Punct.pl
new file mode 100644
index 0000000..8fd1e8e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Punct.pl
@@ -0,0 +1,80 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0021 0023
+0025 002a
+002c 002f
+003a 003b
+003f 0040
+005b 005d
+005f
+007b
+007d
+00a1
+00ab
+00ad
+00b7
+00bb
+00bf
+037e
+0387
+055a 055f
+0589 058a
+05be
+05c0
+05c3
+05f3 05f4
+060c
+061b
+061f
+066a 066d
+06d4
+0700 070d
+0964 0965
+0970
+0df4
+0e4f
+0e5a 0e5b
+0f04 0f12
+0f3a 0f3d
+0f85
+104a 104f
+10fb
+1361 1368
+166d 166e
+169b 169c
+16eb 16ed
+17d4 17da
+17dc
+1800 180a
+2010 2027
+2030 2043
+2045 2046
+2048 204d
+207d 207e
+208d 208e
+2329 232a
+3001 3003
+3008 3011
+3014 301f
+3030
+30fb
+fd3e fd3f
+fe30 fe44
+fe49 fe52
+fe54 fe61
+fe63
+fe68
+fe6a fe6b
+ff01 ff03
+ff05 ff0a
+ff0c ff0f
+ff1a ff1b
+ff1f ff20
+ff3b ff3d
+ff3f
+ff5b
+ff5d
+ff61 ff65
+END
diff --git a/contrib/perl5/lib/unicode/Is/S.pl b/contrib/perl5/lib/unicode/Is/S.pl
new file mode 100644
index 0000000..8851766
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/S.pl
@@ -0,0 +1,131 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0024
+002b
+003c 003e
+005e
+0060
+007c
+007e
+00a2 00a9
+00ac
+00ae 00b1
+00b4
+00b6
+00b8
+00d7
+00f7
+02b9 02ba
+02c2 02cf
+02d2 02df
+02e5 02ed
+0374 0375
+0384 0385
+0482
+06e9
+06fd 06fe
+09f2 09f3
+09fa
+0b70
+0e3f
+0f01 0f03
+0f13 0f17
+0f1a 0f1f
+0f34
+0f36
+0f38
+0fbe 0fc5
+0fc7 0fcc
+0fcf
+17db
+1fbd
+1fbf 1fc1
+1fcd 1fcf
+1fdd 1fdf
+1fed 1fef
+1ffd 1ffe
+2044
+207a 207c
+208a 208c
+20a0 20af
+2100 2101
+2103 2106
+2108 2109
+2114
+2116 2118
+211e 2123
+2125
+2127
+2129
+212e
+2132
+213a
+2190 21f3
+2200 22f1
+2300 2328
+232b 237b
+237d 239a
+2400 2426
+2440 244a
+249c 24e9
+2500 2595
+25a0 25f7
+2600 2613
+2619 2671
+2701 2704
+2706 2709
+270c 2727
+2729 274b
+274d
+274f 2752
+2756
+2758 275e
+2761 2767
+2794
+2798 27af
+27b1 27be
+2800 28ff
+2e80 2e99
+2e9b 2ef3
+2f00 2fd5
+2ff0 2ffb
+3004
+3012 3013
+3020
+3036 3037
+303e 303f
+309b 309c
+3190 3191
+3196 319f
+3200 321c
+322a 3243
+3260 327b
+327f
+328a 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+a490 a4a1
+a4a4 a4b3
+a4b5 a4c0
+a4c2 a4c4
+a4c6
+fb29
+fe62
+fe64 fe66
+fe69
+ff04
+ff0b
+ff1c ff1e
+ff3e
+ff40
+ff5c
+ff5e
+ffe0 ffe6
+ffe8 ffee
+fffc fffd
+END
diff --git a/contrib/perl5/lib/unicode/Is/Sc.pl b/contrib/perl5/lib/unicode/Is/Sc.pl
new file mode 100644
index 0000000..5776bd6
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Sc.pl
@@ -0,0 +1,15 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0024
+00a2 00a5
+09f2 09f3
+0e3f
+17db
+20a0 20af
+fe69
+ff04
+ffe0 ffe1
+ffe5 ffe6
+END
diff --git a/contrib/perl5/lib/unicode/Is/Sm.pl b/contrib/perl5/lib/unicode/Is/Sm.pl
new file mode 100644
index 0000000..ae9424c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Sm.pl
@@ -0,0 +1,40 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+002b
+003c 003e
+007c
+007e
+00ac
+00b1
+00d7
+00f7
+2044
+207a 207c
+208a 208c
+2190 2194
+219a 219b
+21a0
+21a3
+21a6
+21ae
+21ce 21cf
+21d2
+21d4
+2200 22f1
+2308 230b
+2320 2321
+25b7
+25c1
+266f
+fb29
+fe62
+fe64 fe66
+ff0b
+ff1c ff1e
+ff5c
+ff5e
+ffe2
+ffe9 ffec
+END
diff --git a/contrib/perl5/lib/unicode/Is/So.pl b/contrib/perl5/lib/unicode/Is/So.pl
new file mode 100644
index 0000000..4e9dfc2
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/So.pl
@@ -0,0 +1,103 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+00a6 00a7
+00a9
+00ae
+00b0
+00b6
+0482
+06e9
+06fd 06fe
+09fa
+0b70
+0f01 0f03
+0f13 0f17
+0f1a 0f1f
+0f34
+0f36
+0f38
+0fbe 0fc5
+0fc7 0fcc
+0fcf
+2100 2101
+2103 2106
+2108 2109
+2114
+2116 2118
+211e 2123
+2125
+2127
+2129
+212e
+2132
+213a
+2195 2199
+219c 219f
+21a1 21a2
+21a4 21a5
+21a7 21ad
+21af 21cd
+21d0 21d1
+21d3
+21d5 21f3
+2300 2307
+230c 231f
+2322 2328
+232b 237b
+237d 239a
+2400 2426
+2440 244a
+249c 24e9
+2500 2595
+25a0 25b6
+25b8 25c0
+25c2 25f7
+2600 2613
+2619 266e
+2670 2671
+2701 2704
+2706 2709
+270c 2727
+2729 274b
+274d
+274f 2752
+2756
+2758 275e
+2761 2767
+2794
+2798 27af
+27b1 27be
+2800 28ff
+2e80 2e99
+2e9b 2ef3
+2f00 2fd5
+2ff0 2ffb
+3004
+3012 3013
+3020
+3036 3037
+303e 303f
+3190 3191
+3196 319f
+3200 321c
+322a 3243
+3260 327b
+327f
+328a 32b0
+32c0 32cb
+32d0 32fe
+3300 3376
+337b 33dd
+33e0 33fe
+a490 a4a1
+a4a4 a4b3
+a4b5 a4c0
+a4c2 a4c4
+a4c6
+ffe4
+ffe8
+ffed ffee
+fffc fffd
+END
diff --git a/contrib/perl5/lib/unicode/Is/Space.pl b/contrib/perl5/lib/unicode/Is/Space.pl
new file mode 100644
index 0000000..4121ef4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Space.pl
@@ -0,0 +1,14 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0009 000a
+000c 000d
+0020
+00a0
+1680
+2000 200b
+2028 2029
+202f
+3000
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylA.pl b/contrib/perl5/lib/unicode/Is/SylA.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylA.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylC.pl b/contrib/perl5/lib/unicode/Is/SylC.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylC.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylE.pl b/contrib/perl5/lib/unicode/Is/SylE.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylE.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylI.pl b/contrib/perl5/lib/unicode/Is/SylI.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylI.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylO.pl b/contrib/perl5/lib/unicode/Is/SylO.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylO.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylU.pl b/contrib/perl5/lib/unicode/Is/SylU.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylU.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylV.pl b/contrib/perl5/lib/unicode/Is/SylV.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylV.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylWA.pl b/contrib/perl5/lib/unicode/Is/SylWA.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylWA.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylWC.pl b/contrib/perl5/lib/unicode/Is/SylWC.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylWC.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylWE.pl b/contrib/perl5/lib/unicode/Is/SylWE.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylWE.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylWI.pl b/contrib/perl5/lib/unicode/Is/SylWI.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylWI.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/SylWV.pl b/contrib/perl5/lib/unicode/Is/SylWV.pl
new file mode 100644
index 0000000..ec287c4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/SylWV.pl
@@ -0,0 +1,5 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+END
diff --git a/contrib/perl5/lib/unicode/Is/Syllable.pl b/contrib/perl5/lib/unicode/Is/Syllable.pl
new file mode 100644
index 0000000..707ad94
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Syllable.pl
@@ -0,0 +1,4 @@
+return <<'END';
+0d00 0d7f
+1200 135a
+END
diff --git a/contrib/perl5/lib/unicode/Is/Upper.pl b/contrib/perl5/lib/unicode/Is/Upper.pl
new file mode 100644
index 0000000..8dde274
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Upper.pl
@@ -0,0 +1,376 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a
+00c0 00d6
+00d8 00de
+0100
+0102
+0104
+0106
+0108
+010a
+010c
+010e
+0110
+0112
+0114
+0116
+0118
+011a
+011c
+011e
+0120
+0122
+0124
+0126
+0128
+012a
+012c
+012e
+0130
+0132
+0134
+0136
+0139
+013b
+013d
+013f
+0141
+0143
+0145
+0147
+014a
+014c
+014e
+0150
+0152
+0154
+0156
+0158
+015a
+015c
+015e
+0160
+0162
+0164
+0166
+0168
+016a
+016c
+016e
+0170
+0172
+0174
+0176
+0178 0179
+017b
+017d
+0181 0182
+0184
+0186 0187
+0189 018b
+018e 0191
+0193 0194
+0196 0198
+019c 019d
+019f 01a0
+01a2
+01a4
+01a6 01a7
+01a9
+01ac
+01ae 01af
+01b1 01b3
+01b5
+01b7 01b8
+01bc
+01c4
+01c7
+01ca
+01cd
+01cf
+01d1
+01d3
+01d5
+01d7
+01d9
+01db
+01de
+01e0
+01e2
+01e4
+01e6
+01e8
+01ea
+01ec
+01ee
+01f1
+01f4
+01f6 01f8
+01fa
+01fc
+01fe
+0200
+0202
+0204
+0206
+0208
+020a
+020c
+020e
+0210
+0212
+0214
+0216
+0218
+021a
+021c
+021e
+0222
+0224
+0226
+0228
+022a
+022c
+022e
+0230
+0232
+0386
+0388 038a
+038c
+038e 038f
+0391 03a1
+03a3 03ab
+03d2 03d4
+03da
+03dc
+03de
+03e0
+03e2
+03e4
+03e6
+03e8
+03ea
+03ec
+03ee
+0400 042f
+0460
+0462
+0464
+0466
+0468
+046a
+046c
+046e
+0470
+0472
+0474
+0476
+0478
+047a
+047c
+047e
+0480
+048c
+048e
+0490
+0492
+0494
+0496
+0498
+049a
+049c
+049e
+04a0
+04a2
+04a4
+04a6
+04a8
+04aa
+04ac
+04ae
+04b0
+04b2
+04b4
+04b6
+04b8
+04ba
+04bc
+04be
+04c0 04c1
+04c3
+04c7
+04cb
+04d0
+04d2
+04d4
+04d6
+04d8
+04da
+04dc
+04de
+04e0
+04e2
+04e4
+04e6
+04e8
+04ea
+04ec
+04ee
+04f0
+04f2
+04f4
+04f8
+0531 0556
+10a0 10c5
+1e00
+1e02
+1e04
+1e06
+1e08
+1e0a
+1e0c
+1e0e
+1e10
+1e12
+1e14
+1e16
+1e18
+1e1a
+1e1c
+1e1e
+1e20
+1e22
+1e24
+1e26
+1e28
+1e2a
+1e2c
+1e2e
+1e30
+1e32
+1e34
+1e36
+1e38
+1e3a
+1e3c
+1e3e
+1e40
+1e42
+1e44
+1e46
+1e48
+1e4a
+1e4c
+1e4e
+1e50
+1e52
+1e54
+1e56
+1e58
+1e5a
+1e5c
+1e5e
+1e60
+1e62
+1e64
+1e66
+1e68
+1e6a
+1e6c
+1e6e
+1e70
+1e72
+1e74
+1e76
+1e78
+1e7a
+1e7c
+1e7e
+1e80
+1e82
+1e84
+1e86
+1e88
+1e8a
+1e8c
+1e8e
+1e90
+1e92
+1e94
+1ea0
+1ea2
+1ea4
+1ea6
+1ea8
+1eaa
+1eac
+1eae
+1eb0
+1eb2
+1eb4
+1eb6
+1eb8
+1eba
+1ebc
+1ebe
+1ec0
+1ec2
+1ec4
+1ec6
+1ec8
+1eca
+1ecc
+1ece
+1ed0
+1ed2
+1ed4
+1ed6
+1ed8
+1eda
+1edc
+1ede
+1ee0
+1ee2
+1ee4
+1ee6
+1ee8
+1eea
+1eec
+1eee
+1ef0
+1ef2
+1ef4
+1ef6
+1ef8
+1f08 1f0f
+1f18 1f1d
+1f28 1f2f
+1f38 1f3f
+1f48 1f4d
+1f59
+1f5b
+1f5d
+1f5f
+1f68 1f6f
+1fb8 1fbb
+1fc8 1fcb
+1fd8 1fdb
+1fe8 1fec
+1ff8 1ffb
+2102
+2107
+210b 210d
+2110 2112
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+2130 2131
+2133
+ff21 ff3a
+END
diff --git a/contrib/perl5/lib/unicode/Is/Word.pl b/contrib/perl5/lib/unicode/Is/Word.pl
new file mode 100644
index 0000000..23186bd
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Word.pl
@@ -0,0 +1,277 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+0041 005a
+005f
+0061 007a
+00aa
+00b5
+00ba
+00c0 00d6
+00d8 00f6
+00f8 01c4
+01c6 01c7
+01c9 01ca
+01cc 01f1
+01f3 021f
+0222 0233
+0250 02ad
+0386
+0388 038a
+038c
+038e 03a1
+03a3 03ce
+03d0 03d7
+03da 03f3
+0400 0481
+048c 04c4
+04c7 04c8
+04cb 04cc
+04d0 04f5
+04f8 04f9
+0531 0556
+0561 0587
+05d0 05ea
+05f0 05f2
+0621 063a
+0641 064a
+0660 0669
+0671 06d3
+06d5
+06f0 06fc
+0710
+0712 072c
+0780 07a5
+0905 0939
+093d
+0950
+0958 0961
+0966 096f
+0985 098c
+098f 0990
+0993 09a8
+09aa 09b0
+09b2
+09b6 09b9
+09dc 09dd
+09df 09e1
+09e6 09f1
+0a05 0a0a
+0a0f 0a10
+0a13 0a28
+0a2a 0a30
+0a32 0a33
+0a35 0a36
+0a38 0a39
+0a59 0a5c
+0a5e
+0a66 0a6f
+0a72 0a74
+0a85 0a8b
+0a8d
+0a8f 0a91
+0a93 0aa8
+0aaa 0ab0
+0ab2 0ab3
+0ab5 0ab9
+0abd
+0ad0
+0ae0
+0ae6 0aef
+0b05 0b0c
+0b0f 0b10
+0b13 0b28
+0b2a 0b30
+0b32 0b33
+0b36 0b39
+0b3d
+0b5c 0b5d
+0b5f 0b61
+0b66 0b6f
+0b85 0b8a
+0b8e 0b90
+0b92 0b95
+0b99 0b9a
+0b9c
+0b9e 0b9f
+0ba3 0ba4
+0ba8 0baa
+0bae 0bb5
+0bb7 0bb9
+0be7 0bef
+0c05 0c0c
+0c0e 0c10
+0c12 0c28
+0c2a 0c33
+0c35 0c39
+0c60 0c61
+0c66 0c6f
+0c85 0c8c
+0c8e 0c90
+0c92 0ca8
+0caa 0cb3
+0cb5 0cb9
+0cde
+0ce0 0ce1
+0ce6 0cef
+0d05 0d0c
+0d0e 0d10
+0d12 0d28
+0d2a 0d39
+0d60 0d61
+0d66 0d6f
+0d85 0d96
+0d9a 0db1
+0db3 0dbb
+0dbd
+0dc0 0dc6
+0e01 0e30
+0e32 0e33
+0e40 0e45
+0e50 0e59
+0e81 0e82
+0e84
+0e87 0e88
+0e8a
+0e8d
+0e94 0e97
+0e99 0e9f
+0ea1 0ea3
+0ea5
+0ea7
+0eaa 0eab
+0ead 0eb0
+0eb2 0eb3
+0ebd
+0ec0 0ec4
+0ed0 0ed9
+0edc 0edd
+0f00
+0f20 0f29
+0f40 0f47
+0f49 0f6a
+0f88 0f8b
+1000 1021
+1023 1027
+1029 102a
+1040 1049
+1050 1055
+10a0 10c5
+10d0 10f6
+1100 1159
+115f 11a2
+11a8 11f9
+1200 1206
+1208 1246
+1248
+124a 124d
+1250 1256
+1258
+125a 125d
+1260 1286
+1288
+128a 128d
+1290 12ae
+12b0
+12b2 12b5
+12b8 12be
+12c0
+12c2 12c5
+12c8 12ce
+12d0 12d6
+12d8 12ee
+12f0 130e
+1310
+1312 1315
+1318 131e
+1320 1346
+1348 135a
+1369 1371
+13a0 13f4
+1401 166c
+166f 1676
+1681 169a
+16a0 16ea
+1780 17b3
+17e0 17e9
+1810 1819
+1820 1842
+1844 1877
+1880 18a8
+1e00 1e9b
+1ea0 1ef9
+1f00 1f15
+1f18 1f1d
+1f20 1f45
+1f48 1f4d
+1f50 1f57
+1f59
+1f5b
+1f5d
+1f5f 1f7d
+1f80 1f87
+1f90 1f97
+1fa0 1fa7
+1fb0 1fb4
+1fb6 1fbb
+1fbe
+1fc2 1fc4
+1fc6 1fcb
+1fd0 1fd3
+1fd6 1fdb
+1fe0 1fec
+1ff2 1ff4
+1ff6 1ffb
+207f
+2102
+2107
+210a 2113
+2115
+2119 211d
+2124
+2126
+2128
+212a 212d
+212f 2131
+2133 2139
+3006
+3041 3094
+30a1 30fa
+3105 312c
+3131 318e
+31a0 31b7
+3400 4db5
+4e00 9fa5
+a000 a48c
+ac00 d7a3
+f900 fa2d
+fb00 fb06
+fb13 fb17
+fb1d
+fb1f fb28
+fb2a fb36
+fb38 fb3c
+fb3e
+fb40 fb41
+fb43 fb44
+fb46 fbb1
+fbd3 fd3d
+fd50 fd8f
+fd92 fdc7
+fdf0 fdfb
+fe70 fe72
+fe74
+fe76 fefc
+ff10 ff19
+ff21 ff3a
+ff41 ff5a
+ff66 ff6f
+ff71 ff9d
+ffa0 ffbe
+ffc2 ffc7
+ffca ffcf
+ffd2 ffd7
+ffda ffdc
+END
diff --git a/contrib/perl5/lib/unicode/Is/XDigit.pl b/contrib/perl5/lib/unicode/Is/XDigit.pl
new file mode 100644
index 0000000..e556825
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/XDigit.pl
@@ -0,0 +1,8 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039
+0041 0046
+0061 0066
+END
diff --git a/contrib/perl5/lib/unicode/Is/Z.pl b/contrib/perl5/lib/unicode/Is/Z.pl
new file mode 100644
index 0000000..22a9792
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Z.pl
@@ -0,0 +1,12 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0020
+00a0
+1680
+2000 200b
+2028 2029
+202f
+3000
+END
diff --git a/contrib/perl5/lib/unicode/Is/Zl.pl b/contrib/perl5/lib/unicode/Is/Zl.pl
new file mode 100644
index 0000000..0989e1d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Zl.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2028
+END
diff --git a/contrib/perl5/lib/unicode/Is/Zp.pl b/contrib/perl5/lib/unicode/Is/Zp.pl
new file mode 100644
index 0000000..3b23446
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Zp.pl
@@ -0,0 +1,6 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+2029
+END
diff --git a/contrib/perl5/lib/unicode/Is/Zs.pl b/contrib/perl5/lib/unicode/Is/Zs.pl
new file mode 100644
index 0000000..db18055
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Is/Zs.pl
@@ -0,0 +1,11 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0020
+00a0
+1680
+2000 200b
+202f
+3000
+END
diff --git a/contrib/perl5/lib/unicode/Jamo.txt b/contrib/perl5/lib/unicode/Jamo.txt
new file mode 100644
index 0000000..6910ab9
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Jamo.txt
@@ -0,0 +1,69 @@
+#Value; Short Name; Unicode Name
+U+1100; G; HANGUL CHOSEONG KIYEOK
+U+1101; GG; HANGUL CHOSEONG SSANGKIYEOK
+U+1102; N; HANGUL CHOSEONG NIEUN
+U+1103; D; HANGUL CHOSEONG TIKEUT
+U+1104; DD; HANGUL CHOSEONG SSANGTIKEUT
+U+1105; R; HANGUL CHOSEONG RIEUL
+U+1106; M; HANGUL CHOSEONG MIEUM
+U+1107; B; HANGUL CHOSEONG PIEUP
+U+1108; BB; HANGUL CHOSEONG SSANGPIEUP
+U+1109; S; HANGUL CHOSEONG SIOS
+U+110A; SS; HANGUL CHOSEONG SSANGSIOS
+U+110B; ; HANGUL CHOSEONG IEUNG
+U+110C; J; HANGUL CHOSEONG CIEUC
+U+110D; JJ; HANGUL CHOSEONG SSANGCIEUC
+U+110E; C; HANGUL CHOSEONG CHIEUCH
+U+110F; K; HANGUL CHOSEONG KHIEUKH
+U+1110; T; HANGUL CHOSEONG THIEUTH
+U+1111; P; HANGUL CHOSEONG PHIEUPH
+U+1112; H; HANGUL CHOSEONG HIEUH
+U+1161; A; HANGUL JUNGSEONG A
+U+1162; AE; HANGUL JUNGSEONG AE
+U+1163; YA; HANGUL JUNGSEONG YA
+U+1164; YAE; HANGUL JUNGSEONG YAE
+U+1165; EO; HANGUL JUNGSEONG EO
+U+1166; E; HANGUL JUNGSEONG E
+U+1167; YEO; HANGUL JUNGSEONG YEO
+U+1168; YE; HANGUL JUNGSEONG YE
+U+1169; O; HANGUL JUNGSEONG O
+U+116A; WA; HANGUL JUNGSEONG WA
+U+116B; WAE; HANGUL JUNGSEONG WAE
+U+116C; OE; HANGUL JUNGSEONG OE
+U+116D; YO; HANGUL JUNGSEONG YO
+U+116E; U; HANGUL JUNGSEONG U
+U+116F; WEO; HANGUL JUNGSEONG WEO
+U+1170; WE; HANGUL JUNGSEONG WE
+U+1171; WI; HANGUL JUNGSEONG WI
+U+1172; YU; HANGUL JUNGSEONG YU
+U+1173; EU; HANGUL JUNGSEONG EU
+U+1174; YI; HANGUL JUNGSEONG YI
+U+1175; I; HANGUL JUNGSEONG I
+U+11A8; G; HANGUL JONGSEONG KIYEOK
+U+11A9; GG; HANGUL JONGSEONG SSANGKIYEOK
+U+11AA; GS; HANGUL JONGSEONG KIYEOK-SIOS
+U+11AB; N; HANGUL JONGSEONG NIEUN
+U+11AC; NJ; HANGUL JONGSEONG NIEUN-CIEUC
+U+11AD; NH; HANGUL JONGSEONG NIEUN-HIEUH
+U+11AE; D; HANGUL JONGSEONG TIKEUT
+U+11AF; L; HANGUL JONGSEONG RIEUL
+U+11B0; LG; HANGUL JONGSEONG RIEUL-KIYEOK
+U+11B1; LM; HANGUL JONGSEONG RIEUL-MIEUM
+U+11B2; LB; HANGUL JONGSEONG RIEUL-PIEUP
+U+11B3; LS; HANGUL JONGSEONG RIEUL-SIOS
+U+11B4; LT; HANGUL JONGSEONG RIEUL-THIEUTH
+U+11B5; LP; HANGUL JONGSEONG RIEUL-PHIEUPH
+U+11B6; LH; HANGUL JONGSEONG RIEUL-HIEUH
+U+11B7; M; HANGUL JONGSEONG MIEUM
+U+11B8; B; HANGUL JONGSEONG PIEUP
+U+11B9; BS; HANGUL JONGSEONG PIEUP-SIOS
+U+11BA; S; HANGUL JONGSEONG SIOS
+U+11BB; SS; HANGUL JONGSEONG SSANGSIOS
+U+11BC; NG; HANGUL JONGSEONG IEUNG
+U+11BD; J; HANGUL JONGSEONG CIEUC
+U+11BE; C; HANGUL JONGSEONG CHIEUCH
+U+11BF; K; HANGUL JONGSEONG KHIEUKH
+U+11C0; T; HANGUL JONGSEONG THIEUTH
+U+11C1; P; HANGUL JONGSEONG PHIEUPH
+U+11C2; H; HANGUL JONGSEONG HIEUH
+
diff --git a/contrib/perl5/lib/unicode/JamoShort.pl b/contrib/perl5/lib/unicode/JamoShort.pl
new file mode 100644
index 0000000..760bcba
--- /dev/null
+++ b/contrib/perl5/lib/unicode/JamoShort.pl
@@ -0,0 +1,72 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+1100 G
+1101 GG
+1102 N
+1103 D
+1104 DD
+1105 R
+1106 M
+1107 B
+1108 BB
+1109 S
+110a SS
+110b
+110c J
+110d JJ
+110e C
+110f K
+1110 T
+1111 P
+1112 H
+1161 A
+1162 AE
+1163 YA
+1164 YAE
+1165 EO
+1166 E
+1167 YEO
+1168 YE
+1169 O
+116a WA
+116b WAE
+116c OE
+116d YO
+116e U
+116f WEO
+1170 WE
+1171 WI
+1172 YU
+1173 EU
+1174 YI
+1175 I
+11a8 G
+11a9 GG
+11aa GS
+11ab N
+11ac NJ
+11ad NH
+11ae D
+11af L
+11b0 LG
+11b1 LM
+11b2 LB
+11b3 LS
+11b4 LT
+11b5 LP
+11b6 LH
+11b7 M
+11b8 B
+11b9 BS
+11ba S
+11bb SS
+11bc NG
+11bd J
+11be C
+11bf K
+11c0 T
+11c1 P
+11c2 H
+END
diff --git a/contrib/perl5/lib/unicode/LineBrk.txt b/contrib/perl5/lib/unicode/LineBrk.txt
new file mode 100644
index 0000000..48f6c50
--- /dev/null
+++ b/contrib/perl5/lib/unicode/LineBrk.txt
@@ -0,0 +1,10643 @@
+# LineBreak-5.txt
+#
+# Line Break Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains both normative and informative data.
+# The format is three fields separated by semicolons.
+# Field 1: Unicode value
+# Field 2: LineBreak property, consisting of one of the following values:
+# Normative:
+# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW"
+# Informative:
+# "XX", "OP", "CL", "QU", "NS", "EX", "SY",
+# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
+# "BB", "BA", "SA", "AI", "B2"
+# - Assigned characters that are not listed explicitly are given the value
+# "AL".
+# - Unassigned characters are given the value "XX".
+# - Characters within ranges marked by "First>" and "Last>" are omitted,
+# as in UnicodeData.txt. For example, the following means that
+# all characters between 3400 and 4DB5 have the value "ID"
+# 3400;ID;<CJK Ideograph Extension A, First>
+# 4DB5;ID;<CJK Ideograph Extension A, Last>
+# Field 3: Unicode name (this is purely informative)
+#
+# See UTR #14: Line Breaking Properties for more information
+0000;CM;<control>
+0001;CM;<control>
+0002;CM;<control>
+0003;CM;<control>
+0004;CM;<control>
+0005;CM;<control>
+0006;CM;<control>
+0007;CM;<control>
+0008;CM;<control>
+0009;BA;<control>
+000A;LF;<control>
+000B;CM;<control>
+000C;BK;<control>
+000D;CR;<control>
+000E;CM;<control>
+000F;CM;<control>
+0010;CM;<control>
+0011;CM;<control>
+0012;CM;<control>
+0013;CM;<control>
+0014;CM;<control>
+0015;CM;<control>
+0016;CM;<control>
+0017;CM;<control>
+0018;CM;<control>
+0019;CM;<control>
+001A;CM;<control>
+001B;CM;<control>
+001C;CM;<control>
+001D;CM;<control>
+001E;CM;<control>
+001F;CM;<control>
+0020;SP;SPACE
+0021;EX;EXCLAMATION MARK
+0022;QU;QUOTATION MARK
+0023;AL;NUMBER SIGN
+0024;PR;DOLLAR SIGN
+0025;PO;PERCENT SIGN
+0026;AL;AMPERSAND
+0027;QU;APOSTROPHE
+0028;OP;LEFT PARENTHESIS
+0029;CL;RIGHT PARENTHESIS
+002A;AL;ASTERISK
+002B;PR;PLUS SIGN
+002C;IS;COMMA
+002D;HY;HYPHEN-MINUS
+002E;IS;FULL STOP
+002F;SY;SOLIDUS
+0030;NU;DIGIT ZERO
+0031;NU;DIGIT ONE
+0032;NU;DIGIT TWO
+0033;NU;DIGIT THREE
+0034;NU;DIGIT FOUR
+0035;NU;DIGIT FIVE
+0036;NU;DIGIT SIX
+0037;NU;DIGIT SEVEN
+0038;NU;DIGIT EIGHT
+0039;NU;DIGIT NINE
+003A;IS;COLON
+003B;IS;SEMICOLON
+003C;AL;LESS-THAN SIGN
+003D;AL;EQUALS SIGN
+003E;AL;GREATER-THAN SIGN
+003F;EX;QUESTION MARK
+0040;AL;COMMERCIAL AT
+0041;AL;LATIN CAPITAL LETTER A
+0042;AL;LATIN CAPITAL LETTER B
+0043;AL;LATIN CAPITAL LETTER C
+0044;AL;LATIN CAPITAL LETTER D
+0045;AL;LATIN CAPITAL LETTER E
+0046;AL;LATIN CAPITAL LETTER F
+0047;AL;LATIN CAPITAL LETTER G
+0048;AL;LATIN CAPITAL LETTER H
+0049;AL;LATIN CAPITAL LETTER I
+004A;AL;LATIN CAPITAL LETTER J
+004B;AL;LATIN CAPITAL LETTER K
+004C;AL;LATIN CAPITAL LETTER L
+004D;AL;LATIN CAPITAL LETTER M
+004E;AL;LATIN CAPITAL LETTER N
+004F;AL;LATIN CAPITAL LETTER O
+0050;AL;LATIN CAPITAL LETTER P
+0051;AL;LATIN CAPITAL LETTER Q
+0052;AL;LATIN CAPITAL LETTER R
+0053;AL;LATIN CAPITAL LETTER S
+0054;AL;LATIN CAPITAL LETTER T
+0055;AL;LATIN CAPITAL LETTER U
+0056;AL;LATIN CAPITAL LETTER V
+0057;AL;LATIN CAPITAL LETTER W
+0058;AL;LATIN CAPITAL LETTER X
+0059;AL;LATIN CAPITAL LETTER Y
+005A;AL;LATIN CAPITAL LETTER Z
+005B;OP;LEFT SQUARE BRACKET
+005C;PR;REVERSE SOLIDUS
+005D;CL;RIGHT SQUARE BRACKET
+005E;AL;CIRCUMFLEX ACCENT
+005F;AL;LOW LINE
+0060;AL;GRAVE ACCENT
+0061;AL;LATIN SMALL LETTER A
+0062;AL;LATIN SMALL LETTER B
+0063;AL;LATIN SMALL LETTER C
+0064;AL;LATIN SMALL LETTER D
+0065;AL;LATIN SMALL LETTER E
+0066;AL;LATIN SMALL LETTER F
+0067;AL;LATIN SMALL LETTER G
+0068;AL;LATIN SMALL LETTER H
+0069;AL;LATIN SMALL LETTER I
+006A;AL;LATIN SMALL LETTER J
+006B;AL;LATIN SMALL LETTER K
+006C;AL;LATIN SMALL LETTER L
+006D;AL;LATIN SMALL LETTER M
+006E;AL;LATIN SMALL LETTER N
+006F;AL;LATIN SMALL LETTER O
+0070;AL;LATIN SMALL LETTER P
+0071;AL;LATIN SMALL LETTER Q
+0072;AL;LATIN SMALL LETTER R
+0073;AL;LATIN SMALL LETTER S
+0074;AL;LATIN SMALL LETTER T
+0075;AL;LATIN SMALL LETTER U
+0076;AL;LATIN SMALL LETTER V
+0077;AL;LATIN SMALL LETTER W
+0078;AL;LATIN SMALL LETTER X
+0079;AL;LATIN SMALL LETTER Y
+007A;AL;LATIN SMALL LETTER Z
+007B;OP;LEFT CURLY BRACKET
+007C;BA;VERTICAL LINE
+007D;CL;RIGHT CURLY BRACKET
+007E;AL;TILDE
+007F;CM;<control>
+0080;CM;<control>
+0081;CM;<control>
+0082;CM;<control>
+0083;CM;<control>
+0084;CM;<control>
+0085;CM;<control>
+0086;CM;<control>
+0087;CM;<control>
+0088;CM;<control>
+0089;CM;<control>
+008A;CM;<control>
+008B;CM;<control>
+008C;CM;<control>
+008D;CM;<control>
+008E;CM;<control>
+008F;CM;<control>
+0090;CM;<control>
+0091;CM;<control>
+0092;CM;<control>
+0093;CM;<control>
+0094;CM;<control>
+0095;CM;<control>
+0096;CM;<control>
+0097;CM;<control>
+0098;CM;<control>
+0099;CM;<control>
+009A;CM;<control>
+009B;CM;<control>
+009C;CM;<control>
+009D;CM;<control>
+009E;CM;<control>
+009F;CM;<control>
+00A0;GL;NO-BREAK SPACE
+00A1;AI;INVERTED EXCLAMATION MARK
+00A2;PO;CENT SIGN
+00A3;PR;POUND SIGN
+00A4;PR;CURRENCY SIGN
+00A5;PR;YEN SIGN
+00A6;AL;BROKEN BAR
+00A7;AI;SECTION SIGN
+00A8;AI;DIAERESIS
+00A9;AL;COPYRIGHT SIGN
+00AA;AI;FEMININE ORDINAL INDICATOR
+00AB;QU;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC;AL;NOT SIGN
+00AD;BA;SOFT HYPHEN
+00AE;AL;REGISTERED SIGN
+00AF;AL;MACRON
+00B0;PO;DEGREE SIGN
+00B1;PR;PLUS-MINUS SIGN
+00B2;AI;SUPERSCRIPT TWO
+00B3;AI;SUPERSCRIPT THREE
+00B4;BA;ACUTE ACCENT
+00B5;AL;MICRO SIGN
+00B6;AI;PILCROW SIGN
+00B7;AI;MIDDLE DOT
+00B8;AI;CEDILLA
+00B9;AI;SUPERSCRIPT ONE
+00BA;AI;MASCULINE ORDINAL INDICATOR
+00BB;QU;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC;AI;VULGAR FRACTION ONE QUARTER
+00BD;AI;VULGAR FRACTION ONE HALF
+00BE;AI;VULGAR FRACTION THREE QUARTERS
+00BF;AI;INVERTED QUESTION MARK
+00C0;AL;LATIN CAPITAL LETTER A WITH GRAVE
+00C1;AL;LATIN CAPITAL LETTER A WITH ACUTE
+00C2;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;AL;LATIN CAPITAL LETTER A WITH TILDE
+00C4;AL;LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;AL;LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6;AI;LATIN CAPITAL LETTER AE
+00C7;AL;LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;AL;LATIN CAPITAL LETTER E WITH GRAVE
+00C9;AL;LATIN CAPITAL LETTER E WITH ACUTE
+00CA;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;AL;LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;AL;LATIN CAPITAL LETTER I WITH GRAVE
+00CD;AL;LATIN CAPITAL LETTER I WITH ACUTE
+00CE;AL;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;AL;LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0;AI;LATIN CAPITAL LETTER ETH
+00D1;AL;LATIN CAPITAL LETTER N WITH TILDE
+00D2;AL;LATIN CAPITAL LETTER O WITH GRAVE
+00D3;AL;LATIN CAPITAL LETTER O WITH ACUTE
+00D4;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;AL;LATIN CAPITAL LETTER O WITH TILDE
+00D6;AL;LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7;AI;MULTIPLICATION SIGN
+00D8;AI;LATIN CAPITAL LETTER O WITH STROKE
+00D9;AL;LATIN CAPITAL LETTER U WITH GRAVE
+00DA;AL;LATIN CAPITAL LETTER U WITH ACUTE
+00DB;AL;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;AL;LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;AL;LATIN CAPITAL LETTER Y WITH ACUTE
+00DE;AI;LATIN CAPITAL LETTER THORN
+00DF;AI;LATIN SMALL LETTER SHARP S
+00E0;AI;LATIN SMALL LETTER A WITH GRAVE
+00E1;AI;LATIN SMALL LETTER A WITH ACUTE
+00E2;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;AL;LATIN SMALL LETTER A WITH TILDE
+00E4;AL;LATIN SMALL LETTER A WITH DIAERESIS
+00E5;AL;LATIN SMALL LETTER A WITH RING ABOVE
+00E6;AI;LATIN SMALL LETTER AE
+00E7;AL;LATIN SMALL LETTER C WITH CEDILLA
+00E8;AI;LATIN SMALL LETTER E WITH GRAVE
+00E9;AI;LATIN SMALL LETTER E WITH ACUTE
+00EA;AI;LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;AL;LATIN SMALL LETTER E WITH DIAERESIS
+00EC;AI;LATIN SMALL LETTER I WITH GRAVE
+00ED;AI;LATIN SMALL LETTER I WITH ACUTE
+00EE;AL;LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;AL;LATIN SMALL LETTER I WITH DIAERESIS
+00F0;AI;LATIN SMALL LETTER ETH
+00F1;AL;LATIN SMALL LETTER N WITH TILDE
+00F2;AI;LATIN SMALL LETTER O WITH GRAVE
+00F3;AI;LATIN SMALL LETTER O WITH ACUTE
+00F4;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;AL;LATIN SMALL LETTER O WITH TILDE
+00F6;AL;LATIN SMALL LETTER O WITH DIAERESIS
+00F7;AI;DIVISION SIGN
+00F8;AI;LATIN SMALL LETTER O WITH STROKE
+00F9;AI;LATIN SMALL LETTER U WITH GRAVE
+00FA;AI;LATIN SMALL LETTER U WITH ACUTE
+00FB;AL;LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;AI;LATIN SMALL LETTER U WITH DIAERESIS
+00FD;AL;LATIN SMALL LETTER Y WITH ACUTE
+00FE;AI;LATIN SMALL LETTER THORN
+00FF;AL;LATIN SMALL LETTER Y WITH DIAERESIS
+0100;AL;LATIN CAPITAL LETTER A WITH MACRON
+0101;AI;LATIN SMALL LETTER A WITH MACRON
+0102;AL;LATIN CAPITAL LETTER A WITH BREVE
+0103;AL;LATIN SMALL LETTER A WITH BREVE
+0104;AL;LATIN CAPITAL LETTER A WITH OGONEK
+0105;AL;LATIN SMALL LETTER A WITH OGONEK
+0106;AL;LATIN CAPITAL LETTER C WITH ACUTE
+0107;AL;LATIN SMALL LETTER C WITH ACUTE
+0108;AL;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;AL;LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;AL;LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;AL;LATIN SMALL LETTER C WITH DOT ABOVE
+010C;AL;LATIN CAPITAL LETTER C WITH CARON
+010D;AL;LATIN SMALL LETTER C WITH CARON
+010E;AL;LATIN CAPITAL LETTER D WITH CARON
+010F;AL;LATIN SMALL LETTER D WITH CARON
+0110;AL;LATIN CAPITAL LETTER D WITH STROKE
+0111;AI;LATIN SMALL LETTER D WITH STROKE
+0112;AL;LATIN CAPITAL LETTER E WITH MACRON
+0113;AI;LATIN SMALL LETTER E WITH MACRON
+0114;AL;LATIN CAPITAL LETTER E WITH BREVE
+0115;AL;LATIN SMALL LETTER E WITH BREVE
+0116;AL;LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;AL;LATIN SMALL LETTER E WITH DOT ABOVE
+0118;AL;LATIN CAPITAL LETTER E WITH OGONEK
+0119;AL;LATIN SMALL LETTER E WITH OGONEK
+011A;AL;LATIN CAPITAL LETTER E WITH CARON
+011B;AI;LATIN SMALL LETTER E WITH CARON
+011C;AL;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;AL;LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;AL;LATIN CAPITAL LETTER G WITH BREVE
+011F;AL;LATIN SMALL LETTER G WITH BREVE
+0120;AL;LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;AL;LATIN SMALL LETTER G WITH DOT ABOVE
+0122;AL;LATIN CAPITAL LETTER G WITH CEDILLA
+0123;AL;LATIN SMALL LETTER G WITH CEDILLA
+0124;AL;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;AL;LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126;AI;LATIN CAPITAL LETTER H WITH STROKE
+0127;AI;LATIN SMALL LETTER H WITH STROKE
+0128;AL;LATIN CAPITAL LETTER I WITH TILDE
+0129;AL;LATIN SMALL LETTER I WITH TILDE
+012A;AL;LATIN CAPITAL LETTER I WITH MACRON
+012B;AI;LATIN SMALL LETTER I WITH MACRON
+012C;AL;LATIN CAPITAL LETTER I WITH BREVE
+012D;AL;LATIN SMALL LETTER I WITH BREVE
+012E;AL;LATIN CAPITAL LETTER I WITH OGONEK
+012F;AL;LATIN SMALL LETTER I WITH OGONEK
+0130;AL;LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131;AI;LATIN SMALL LETTER DOTLESS I
+0132;AI;LATIN CAPITAL LIGATURE IJ
+0133;AI;LATIN SMALL LIGATURE IJ
+0134;AL;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;AL;LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;AL;LATIN CAPITAL LETTER K WITH CEDILLA
+0137;AL;LATIN SMALL LETTER K WITH CEDILLA
+0138;AI;LATIN SMALL LETTER KRA
+0139;AL;LATIN CAPITAL LETTER L WITH ACUTE
+013A;AL;LATIN SMALL LETTER L WITH ACUTE
+013B;AL;LATIN CAPITAL LETTER L WITH CEDILLA
+013C;AL;LATIN SMALL LETTER L WITH CEDILLA
+013D;AL;LATIN CAPITAL LETTER L WITH CARON
+013E;AL;LATIN SMALL LETTER L WITH CARON
+013F;AI;LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;AI;LATIN SMALL LETTER L WITH MIDDLE DOT
+0141;AI;LATIN CAPITAL LETTER L WITH STROKE
+0142;AI;LATIN SMALL LETTER L WITH STROKE
+0143;AL;LATIN CAPITAL LETTER N WITH ACUTE
+0144;AI;LATIN SMALL LETTER N WITH ACUTE
+0145;AL;LATIN CAPITAL LETTER N WITH CEDILLA
+0146;AL;LATIN SMALL LETTER N WITH CEDILLA
+0147;AL;LATIN CAPITAL LETTER N WITH CARON
+0148;AI;LATIN SMALL LETTER N WITH CARON
+0149;AI;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A;AI;LATIN CAPITAL LETTER ENG
+014B;AL;LATIN SMALL LETTER ENG
+014C;AL;LATIN CAPITAL LETTER O WITH MACRON
+014D;AI;LATIN SMALL LETTER O WITH MACRON
+014E;AL;LATIN CAPITAL LETTER O WITH BREVE
+014F;AL;LATIN SMALL LETTER O WITH BREVE
+0150;AL;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;AL;LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152;AI;LATIN CAPITAL LIGATURE OE
+0153;AI;LATIN SMALL LIGATURE OE
+0154;AL;LATIN CAPITAL LETTER R WITH ACUTE
+0155;AL;LATIN SMALL LETTER R WITH ACUTE
+0156;AL;LATIN CAPITAL LETTER R WITH CEDILLA
+0157;AL;LATIN SMALL LETTER R WITH CEDILLA
+0158;AL;LATIN CAPITAL LETTER R WITH CARON
+0159;AL;LATIN SMALL LETTER R WITH CARON
+015A;AL;LATIN CAPITAL LETTER S WITH ACUTE
+015B;AL;LATIN SMALL LETTER S WITH ACUTE
+015C;AL;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;AL;LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;AL;LATIN CAPITAL LETTER S WITH CEDILLA
+015F;AL;LATIN SMALL LETTER S WITH CEDILLA
+0160;AL;LATIN CAPITAL LETTER S WITH CARON
+0161;AL;LATIN SMALL LETTER S WITH CARON
+0162;AL;LATIN CAPITAL LETTER T WITH CEDILLA
+0163;AL;LATIN SMALL LETTER T WITH CEDILLA
+0164;AL;LATIN CAPITAL LETTER T WITH CARON
+0165;AL;LATIN SMALL LETTER T WITH CARON
+0166;AI;LATIN CAPITAL LETTER T WITH STROKE
+0167;AI;LATIN SMALL LETTER T WITH STROKE
+0168;AL;LATIN CAPITAL LETTER U WITH TILDE
+0169;AL;LATIN SMALL LETTER U WITH TILDE
+016A;AL;LATIN CAPITAL LETTER U WITH MACRON
+016B;AI;LATIN SMALL LETTER U WITH MACRON
+016C;AL;LATIN CAPITAL LETTER U WITH BREVE
+016D;AL;LATIN SMALL LETTER U WITH BREVE
+016E;AL;LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;AL;LATIN SMALL LETTER U WITH RING ABOVE
+0170;AL;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;AL;LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;AL;LATIN CAPITAL LETTER U WITH OGONEK
+0173;AL;LATIN SMALL LETTER U WITH OGONEK
+0174;AL;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;AL;LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;AL;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;AL;LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;AL;LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;AL;LATIN CAPITAL LETTER Z WITH ACUTE
+017A;AL;LATIN SMALL LETTER Z WITH ACUTE
+017B;AL;LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;AL;LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;AL;LATIN CAPITAL LETTER Z WITH CARON
+017E;AL;LATIN SMALL LETTER Z WITH CARON
+017F;AL;LATIN SMALL LETTER LONG S
+0180;AL;LATIN SMALL LETTER B WITH STROKE
+0181;AL;LATIN CAPITAL LETTER B WITH HOOK
+0182;AL;LATIN CAPITAL LETTER B WITH TOPBAR
+0183;AL;LATIN SMALL LETTER B WITH TOPBAR
+0184;AL;LATIN CAPITAL LETTER TONE SIX
+0185;AL;LATIN SMALL LETTER TONE SIX
+0186;AL;LATIN CAPITAL LETTER OPEN O
+0187;AL;LATIN CAPITAL LETTER C WITH HOOK
+0188;AL;LATIN SMALL LETTER C WITH HOOK
+0189;AL;LATIN CAPITAL LETTER AFRICAN D
+018A;AL;LATIN CAPITAL LETTER D WITH HOOK
+018B;AL;LATIN CAPITAL LETTER D WITH TOPBAR
+018C;AL;LATIN SMALL LETTER D WITH TOPBAR
+018D;AL;LATIN SMALL LETTER TURNED DELTA
+018E;AL;LATIN CAPITAL LETTER REVERSED E
+018F;AL;LATIN CAPITAL LETTER SCHWA
+0190;AL;LATIN CAPITAL LETTER OPEN E
+0191;AL;LATIN CAPITAL LETTER F WITH HOOK
+0192;AL;LATIN SMALL LETTER F WITH HOOK
+0193;AL;LATIN CAPITAL LETTER G WITH HOOK
+0194;AL;LATIN CAPITAL LETTER GAMMA
+0195;AL;LATIN SMALL LETTER HV
+0196;AL;LATIN CAPITAL LETTER IOTA
+0197;AL;LATIN CAPITAL LETTER I WITH STROKE
+0198;AL;LATIN CAPITAL LETTER K WITH HOOK
+0199;AL;LATIN SMALL LETTER K WITH HOOK
+019A;AL;LATIN SMALL LETTER L WITH BAR
+019B;AL;LATIN SMALL LETTER LAMBDA WITH STROKE
+019C;AL;LATIN CAPITAL LETTER TURNED M
+019D;AL;LATIN CAPITAL LETTER N WITH LEFT HOOK
+019E;AL;LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019F;AL;LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0;AL;LATIN CAPITAL LETTER O WITH HORN
+01A1;AL;LATIN SMALL LETTER O WITH HORN
+01A2;AL;LATIN CAPITAL LETTER OI
+01A3;AL;LATIN SMALL LETTER OI
+01A4;AL;LATIN CAPITAL LETTER P WITH HOOK
+01A5;AL;LATIN SMALL LETTER P WITH HOOK
+01A6;AL;LATIN LETTER YR
+01A7;AL;LATIN CAPITAL LETTER TONE TWO
+01A8;AL;LATIN SMALL LETTER TONE TWO
+01A9;AL;LATIN CAPITAL LETTER ESH
+01AA;AL;LATIN LETTER REVERSED ESH LOOP
+01AB;AL;LATIN SMALL LETTER T WITH PALATAL HOOK
+01AC;AL;LATIN CAPITAL LETTER T WITH HOOK
+01AD;AL;LATIN SMALL LETTER T WITH HOOK
+01AE;AL;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF;AL;LATIN CAPITAL LETTER U WITH HORN
+01B0;AL;LATIN SMALL LETTER U WITH HORN
+01B1;AL;LATIN CAPITAL LETTER UPSILON
+01B2;AL;LATIN CAPITAL LETTER V WITH HOOK
+01B3;AL;LATIN CAPITAL LETTER Y WITH HOOK
+01B4;AL;LATIN SMALL LETTER Y WITH HOOK
+01B5;AL;LATIN CAPITAL LETTER Z WITH STROKE
+01B6;AL;LATIN SMALL LETTER Z WITH STROKE
+01B7;AL;LATIN CAPITAL LETTER EZH
+01B8;AL;LATIN CAPITAL LETTER EZH REVERSED
+01B9;AL;LATIN SMALL LETTER EZH REVERSED
+01BA;AL;LATIN SMALL LETTER EZH WITH TAIL
+01BB;AL;LATIN LETTER TWO WITH STROKE
+01BC;AL;LATIN CAPITAL LETTER TONE FIVE
+01BD;AL;LATIN SMALL LETTER TONE FIVE
+01BE;AL;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01BF;AL;LATIN LETTER WYNN
+01C0;AL;LATIN LETTER DENTAL CLICK
+01C1;AL;LATIN LETTER LATERAL CLICK
+01C2;AL;LATIN LETTER ALVEOLAR CLICK
+01C3;AL;LATIN LETTER RETROFLEX CLICK
+01C4;AL;LATIN CAPITAL LETTER DZ WITH CARON
+01C5;AL;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;AL;LATIN SMALL LETTER DZ WITH CARON
+01C7;AL;LATIN CAPITAL LETTER LJ
+01C8;AL;LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;AL;LATIN SMALL LETTER LJ
+01CA;AL;LATIN CAPITAL LETTER NJ
+01CB;AL;LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;AL;LATIN SMALL LETTER NJ
+01CD;AL;LATIN CAPITAL LETTER A WITH CARON
+01CE;AI;LATIN SMALL LETTER A WITH CARON
+01CF;AL;LATIN CAPITAL LETTER I WITH CARON
+01D0;AI;LATIN SMALL LETTER I WITH CARON
+01D1;AL;LATIN CAPITAL LETTER O WITH CARON
+01D2;AI;LATIN SMALL LETTER O WITH CARON
+01D3;AL;LATIN CAPITAL LETTER U WITH CARON
+01D4;AI;LATIN SMALL LETTER U WITH CARON
+01D5;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;AI;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;AI;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;AI;LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;AI;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DD;AL;LATIN SMALL LETTER TURNED E
+01DE;AL;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;AL;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;AL;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;AL;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;AL;LATIN CAPITAL LETTER AE WITH MACRON
+01E3;AL;LATIN SMALL LETTER AE WITH MACRON
+01E4;AL;LATIN CAPITAL LETTER G WITH STROKE
+01E5;AL;LATIN SMALL LETTER G WITH STROKE
+01E6;AL;LATIN CAPITAL LETTER G WITH CARON
+01E7;AL;LATIN SMALL LETTER G WITH CARON
+01E8;AL;LATIN CAPITAL LETTER K WITH CARON
+01E9;AL;LATIN SMALL LETTER K WITH CARON
+01EA;AL;LATIN CAPITAL LETTER O WITH OGONEK
+01EB;AL;LATIN SMALL LETTER O WITH OGONEK
+01EC;AL;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;AL;LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;AL;LATIN CAPITAL LETTER EZH WITH CARON
+01EF;AL;LATIN SMALL LETTER EZH WITH CARON
+01F0;AL;LATIN SMALL LETTER J WITH CARON
+01F1;AL;LATIN CAPITAL LETTER DZ
+01F2;AL;LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;AL;LATIN SMALL LETTER DZ
+01F4;AL;LATIN CAPITAL LETTER G WITH ACUTE
+01F5;AL;LATIN SMALL LETTER G WITH ACUTE
+01F6;AL;LATIN CAPITAL LETTER HWAIR
+01F7;AL;LATIN CAPITAL LETTER WYNN
+01F8;AL;LATIN CAPITAL LETTER N WITH GRAVE
+01F9;AL;LATIN SMALL LETTER N WITH GRAVE
+01FA;AL;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;AL;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;AL;LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;AL;LATIN SMALL LETTER AE WITH ACUTE
+01FE;AL;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;AL;LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;AL;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;AL;LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;AL;LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;AL;LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;AL;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;AL;LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;AL;LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;AL;LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;AL;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;AL;LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;AL;LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;AL;LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;AL;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;AL;LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;AL;LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;AL;LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;AL;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;AL;LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;AL;LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;AL;LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;AL;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;AL;LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;AL;LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;AL;LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;AL;LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;AL;LATIN SMALL LETTER S WITH COMMA BELOW
+021A;AL;LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;AL;LATIN SMALL LETTER T WITH COMMA BELOW
+021C;AL;LATIN CAPITAL LETTER YOGH
+021D;AL;LATIN SMALL LETTER YOGH
+021E;AL;LATIN CAPITAL LETTER H WITH CARON
+021F;AL;LATIN SMALL LETTER H WITH CARON
+0222;AL;LATIN CAPITAL LETTER OU
+0223;AL;LATIN SMALL LETTER OU
+0224;AL;LATIN CAPITAL LETTER Z WITH HOOK
+0225;AL;LATIN SMALL LETTER Z WITH HOOK
+0226;AL;LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;AL;LATIN SMALL LETTER A WITH DOT ABOVE
+0228;AL;LATIN CAPITAL LETTER E WITH CEDILLA
+0229;AL;LATIN SMALL LETTER E WITH CEDILLA
+022A;AL;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;AL;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;AL;LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;AL;LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;AL;LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;AL;LATIN SMALL LETTER O WITH DOT ABOVE
+0230;AL;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;AL;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;AL;LATIN CAPITAL LETTER Y WITH MACRON
+0233;AL;LATIN SMALL LETTER Y WITH MACRON
+0250;AL;LATIN SMALL LETTER TURNED A
+0251;AI;LATIN SMALL LETTER ALPHA
+0252;AL;LATIN SMALL LETTER TURNED ALPHA
+0253;AL;LATIN SMALL LETTER B WITH HOOK
+0254;AL;LATIN SMALL LETTER OPEN O
+0255;AL;LATIN SMALL LETTER C WITH CURL
+0256;AL;LATIN SMALL LETTER D WITH TAIL
+0257;AL;LATIN SMALL LETTER D WITH HOOK
+0258;AL;LATIN SMALL LETTER REVERSED E
+0259;AL;LATIN SMALL LETTER SCHWA
+025A;AL;LATIN SMALL LETTER SCHWA WITH HOOK
+025B;AL;LATIN SMALL LETTER OPEN E
+025C;AL;LATIN SMALL LETTER REVERSED OPEN E
+025D;AL;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E;AL;LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025F;AL;LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260;AL;LATIN SMALL LETTER G WITH HOOK
+0261;AI;LATIN SMALL LETTER SCRIPT G
+0262;AL;LATIN LETTER SMALL CAPITAL G
+0263;AL;LATIN SMALL LETTER GAMMA
+0264;AL;LATIN SMALL LETTER RAMS HORN
+0265;AL;LATIN SMALL LETTER TURNED H
+0266;AL;LATIN SMALL LETTER H WITH HOOK
+0267;AL;LATIN SMALL LETTER HENG WITH HOOK
+0268;AL;LATIN SMALL LETTER I WITH STROKE
+0269;AL;LATIN SMALL LETTER IOTA
+026A;AL;LATIN LETTER SMALL CAPITAL I
+026B;AL;LATIN SMALL LETTER L WITH MIDDLE TILDE
+026C;AL;LATIN SMALL LETTER L WITH BELT
+026D;AL;LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026E;AL;LATIN SMALL LETTER LEZH
+026F;AL;LATIN SMALL LETTER TURNED M
+0270;AL;LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271;AL;LATIN SMALL LETTER M WITH HOOK
+0272;AL;LATIN SMALL LETTER N WITH LEFT HOOK
+0273;AL;LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274;AL;LATIN LETTER SMALL CAPITAL N
+0275;AL;LATIN SMALL LETTER BARRED O
+0276;AL;LATIN LETTER SMALL CAPITAL OE
+0277;AL;LATIN SMALL LETTER CLOSED OMEGA
+0278;AL;LATIN SMALL LETTER PHI
+0279;AL;LATIN SMALL LETTER TURNED R
+027A;AL;LATIN SMALL LETTER TURNED R WITH LONG LEG
+027B;AL;LATIN SMALL LETTER TURNED R WITH HOOK
+027C;AL;LATIN SMALL LETTER R WITH LONG LEG
+027D;AL;LATIN SMALL LETTER R WITH TAIL
+027E;AL;LATIN SMALL LETTER R WITH FISHHOOK
+027F;AL;LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280;AL;LATIN LETTER SMALL CAPITAL R
+0281;AL;LATIN LETTER SMALL CAPITAL INVERTED R
+0282;AL;LATIN SMALL LETTER S WITH HOOK
+0283;AL;LATIN SMALL LETTER ESH
+0284;AL;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285;AL;LATIN SMALL LETTER SQUAT REVERSED ESH
+0286;AL;LATIN SMALL LETTER ESH WITH CURL
+0287;AL;LATIN SMALL LETTER TURNED T
+0288;AL;LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289;AL;LATIN SMALL LETTER U BAR
+028A;AL;LATIN SMALL LETTER UPSILON
+028B;AL;LATIN SMALL LETTER V WITH HOOK
+028C;AL;LATIN SMALL LETTER TURNED V
+028D;AL;LATIN SMALL LETTER TURNED W
+028E;AL;LATIN SMALL LETTER TURNED Y
+028F;AL;LATIN LETTER SMALL CAPITAL Y
+0290;AL;LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291;AL;LATIN SMALL LETTER Z WITH CURL
+0292;AL;LATIN SMALL LETTER EZH
+0293;AL;LATIN SMALL LETTER EZH WITH CURL
+0294;AL;LATIN LETTER GLOTTAL STOP
+0295;AL;LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296;AL;LATIN LETTER INVERTED GLOTTAL STOP
+0297;AL;LATIN LETTER STRETCHED C
+0298;AL;LATIN LETTER BILABIAL CLICK
+0299;AL;LATIN LETTER SMALL CAPITAL B
+029A;AL;LATIN SMALL LETTER CLOSED OPEN E
+029B;AL;LATIN LETTER SMALL CAPITAL G WITH HOOK
+029C;AL;LATIN LETTER SMALL CAPITAL H
+029D;AL;LATIN SMALL LETTER J WITH CROSSED-TAIL
+029E;AL;LATIN SMALL LETTER TURNED K
+029F;AL;LATIN LETTER SMALL CAPITAL L
+02A0;AL;LATIN SMALL LETTER Q WITH HOOK
+02A1;AL;LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2;AL;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02A3;AL;LATIN SMALL LETTER DZ DIGRAPH
+02A4;AL;LATIN SMALL LETTER DEZH DIGRAPH
+02A5;AL;LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A6;AL;LATIN SMALL LETTER TS DIGRAPH
+02A7;AL;LATIN SMALL LETTER TESH DIGRAPH
+02A8;AL;LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02A9;AL;LATIN SMALL LETTER FENG DIGRAPH
+02AA;AL;LATIN SMALL LETTER LS DIGRAPH
+02AB;AL;LATIN SMALL LETTER LZ DIGRAPH
+02AC;AL;LATIN LETTER BILABIAL PERCUSSIVE
+02AD;AL;LATIN LETTER BIDENTAL PERCUSSIVE
+02B0;AL;MODIFIER LETTER SMALL H
+02B1;AL;MODIFIER LETTER SMALL H WITH HOOK
+02B2;AL;MODIFIER LETTER SMALL J
+02B3;AL;MODIFIER LETTER SMALL R
+02B4;AL;MODIFIER LETTER SMALL TURNED R
+02B5;AL;MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;AL;MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;AL;MODIFIER LETTER SMALL W
+02B8;AL;MODIFIER LETTER SMALL Y
+02B9;AL;MODIFIER LETTER PRIME
+02BA;AL;MODIFIER LETTER DOUBLE PRIME
+02BB;AL;MODIFIER LETTER TURNED COMMA
+02BC;AL;MODIFIER LETTER APOSTROPHE
+02BD;AL;MODIFIER LETTER REVERSED COMMA
+02BE;AL;MODIFIER LETTER RIGHT HALF RING
+02BF;AL;MODIFIER LETTER LEFT HALF RING
+02C0;AL;MODIFIER LETTER GLOTTAL STOP
+02C1;AL;MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2;AL;MODIFIER LETTER LEFT ARROWHEAD
+02C3;AL;MODIFIER LETTER RIGHT ARROWHEAD
+02C4;AL;MODIFIER LETTER UP ARROWHEAD
+02C5;AL;MODIFIER LETTER DOWN ARROWHEAD
+02C6;AL;MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7;AI;CARON
+02C8;BB;MODIFIER LETTER VERTICAL LINE
+02C9;AI;MODIFIER LETTER MACRON
+02CA;AI;MODIFIER LETTER ACUTE ACCENT
+02CB;AI;MODIFIER LETTER GRAVE ACCENT
+02CC;BB;MODIFIER LETTER LOW VERTICAL LINE
+02CD;AI;MODIFIER LETTER LOW MACRON
+02CE;AL;MODIFIER LETTER LOW GRAVE ACCENT
+02CF;AL;MODIFIER LETTER LOW ACUTE ACCENT
+02D0;AI;MODIFIER LETTER TRIANGULAR COLON
+02D1;AL;MODIFIER LETTER HALF TRIANGULAR COLON
+02D2;AL;MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3;AL;MODIFIER LETTER CENTRED LEFT HALF RING
+02D4;AL;MODIFIER LETTER UP TACK
+02D5;AL;MODIFIER LETTER DOWN TACK
+02D6;AL;MODIFIER LETTER PLUS SIGN
+02D7;AL;MODIFIER LETTER MINUS SIGN
+02D8;AI;BREVE
+02D9;AI;DOT ABOVE
+02DA;AI;RING ABOVE
+02DB;AI;OGONEK
+02DC;AL;SMALL TILDE
+02DD;AI;DOUBLE ACUTE ACCENT
+02DE;AL;MODIFIER LETTER RHOTIC HOOK
+02DF;AL;MODIFIER LETTER CROSS ACCENT
+02E0;AL;MODIFIER LETTER SMALL GAMMA
+02E1;AL;MODIFIER LETTER SMALL L
+02E2;AL;MODIFIER LETTER SMALL S
+02E3;AL;MODIFIER LETTER SMALL X
+02E4;AL;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5;AL;MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6;AL;MODIFIER LETTER HIGH TONE BAR
+02E7;AL;MODIFIER LETTER MID TONE BAR
+02E8;AL;MODIFIER LETTER LOW TONE BAR
+02E9;AL;MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA;AL;MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB;AL;MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC;AL;MODIFIER LETTER VOICING
+02ED;AL;MODIFIER LETTER UNASPIRATED
+02EE;AL;MODIFIER LETTER DOUBLE APOSTROPHE
+0300;CM;COMBINING GRAVE ACCENT
+0301;CM;COMBINING ACUTE ACCENT
+0302;CM;COMBINING CIRCUMFLEX ACCENT
+0303;CM;COMBINING TILDE
+0304;CM;COMBINING MACRON
+0305;CM;COMBINING OVERLINE
+0306;CM;COMBINING BREVE
+0307;CM;COMBINING DOT ABOVE
+0308;CM;COMBINING DIAERESIS
+0309;CM;COMBINING HOOK ABOVE
+030A;CM;COMBINING RING ABOVE
+030B;CM;COMBINING DOUBLE ACUTE ACCENT
+030C;CM;COMBINING CARON
+030D;CM;COMBINING VERTICAL LINE ABOVE
+030E;CM;COMBINING DOUBLE VERTICAL LINE ABOVE
+030F;CM;COMBINING DOUBLE GRAVE ACCENT
+0310;CM;COMBINING CANDRABINDU
+0311;CM;COMBINING INVERTED BREVE
+0312;CM;COMBINING TURNED COMMA ABOVE
+0313;CM;COMBINING COMMA ABOVE
+0314;CM;COMBINING REVERSED COMMA ABOVE
+0315;CM;COMBINING COMMA ABOVE RIGHT
+0316;CM;COMBINING GRAVE ACCENT BELOW
+0317;CM;COMBINING ACUTE ACCENT BELOW
+0318;CM;COMBINING LEFT TACK BELOW
+0319;CM;COMBINING RIGHT TACK BELOW
+031A;CM;COMBINING LEFT ANGLE ABOVE
+031B;CM;COMBINING HORN
+031C;CM;COMBINING LEFT HALF RING BELOW
+031D;CM;COMBINING UP TACK BELOW
+031E;CM;COMBINING DOWN TACK BELOW
+031F;CM;COMBINING PLUS SIGN BELOW
+0320;CM;COMBINING MINUS SIGN BELOW
+0321;CM;COMBINING PALATALIZED HOOK BELOW
+0322;CM;COMBINING RETROFLEX HOOK BELOW
+0323;CM;COMBINING DOT BELOW
+0324;CM;COMBINING DIAERESIS BELOW
+0325;CM;COMBINING RING BELOW
+0326;CM;COMBINING COMMA BELOW
+0327;CM;COMBINING CEDILLA
+0328;CM;COMBINING OGONEK
+0329;CM;COMBINING VERTICAL LINE BELOW
+032A;CM;COMBINING BRIDGE BELOW
+032B;CM;COMBINING INVERTED DOUBLE ARCH BELOW
+032C;CM;COMBINING CARON BELOW
+032D;CM;COMBINING CIRCUMFLEX ACCENT BELOW
+032E;CM;COMBINING BREVE BELOW
+032F;CM;COMBINING INVERTED BREVE BELOW
+0330;CM;COMBINING TILDE BELOW
+0331;CM;COMBINING MACRON BELOW
+0332;CM;COMBINING LOW LINE
+0333;CM;COMBINING DOUBLE LOW LINE
+0334;CM;COMBINING TILDE OVERLAY
+0335;CM;COMBINING SHORT STROKE OVERLAY
+0336;CM;COMBINING LONG STROKE OVERLAY
+0337;CM;COMBINING SHORT SOLIDUS OVERLAY
+0338;CM;COMBINING LONG SOLIDUS OVERLAY
+0339;CM;COMBINING RIGHT HALF RING BELOW
+033A;CM;COMBINING INVERTED BRIDGE BELOW
+033B;CM;COMBINING SQUARE BELOW
+033C;CM;COMBINING SEAGULL BELOW
+033D;CM;COMBINING X ABOVE
+033E;CM;COMBINING VERTICAL TILDE
+033F;CM;COMBINING DOUBLE OVERLINE
+0340;CM;COMBINING GRAVE TONE MARK
+0341;CM;COMBINING ACUTE TONE MARK
+0342;CM;COMBINING GREEK PERISPOMENI
+0343;CM;COMBINING GREEK KORONIS
+0344;CM;COMBINING GREEK DIALYTIKA TONOS
+0345;CM;COMBINING GREEK YPOGEGRAMMENI
+0346;CM;COMBINING BRIDGE ABOVE
+0347;CM;COMBINING EQUALS SIGN BELOW
+0348;CM;COMBINING DOUBLE VERTICAL LINE BELOW
+0349;CM;COMBINING LEFT ANGLE BELOW
+034A;CM;COMBINING NOT TILDE ABOVE
+034B;CM;COMBINING HOMOTHETIC ABOVE
+034C;CM;COMBINING ALMOST EQUAL TO ABOVE
+034D;CM;COMBINING LEFT RIGHT ARROW BELOW
+034E;CM;COMBINING UPWARDS ARROW BELOW
+0360;CM;COMBINING DOUBLE TILDE
+0361;CM;COMBINING DOUBLE INVERTED BREVE
+0362;CM;COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0374;AL;GREEK NUMERAL SIGN
+0375;AL;GREEK LOWER NUMERAL SIGN
+037A;AL;GREEK YPOGEGRAMMENI
+037E;AL;GREEK QUESTION MARK
+0384;AL;GREEK TONOS
+0385;AL;GREEK DIALYTIKA TONOS
+0386;AL;GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;AL;GREEK ANO TELEIA
+0388;AL;GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;AL;GREEK CAPITAL LETTER ETA WITH TONOS
+038A;AL;GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;AL;GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;AL;GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;AL;GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391;AI;GREEK CAPITAL LETTER ALPHA
+0392;AI;GREEK CAPITAL LETTER BETA
+0393;AI;GREEK CAPITAL LETTER GAMMA
+0394;AI;GREEK CAPITAL LETTER DELTA
+0395;AI;GREEK CAPITAL LETTER EPSILON
+0396;AI;GREEK CAPITAL LETTER ZETA
+0397;AI;GREEK CAPITAL LETTER ETA
+0398;AI;GREEK CAPITAL LETTER THETA
+0399;AI;GREEK CAPITAL LETTER IOTA
+039A;AI;GREEK CAPITAL LETTER KAPPA
+039B;AI;GREEK CAPITAL LETTER LAMDA
+039C;AI;GREEK CAPITAL LETTER MU
+039D;AI;GREEK CAPITAL LETTER NU
+039E;AI;GREEK CAPITAL LETTER XI
+039F;AI;GREEK CAPITAL LETTER OMICRON
+03A0;AI;GREEK CAPITAL LETTER PI
+03A1;AI;GREEK CAPITAL LETTER RHO
+03A3;AI;GREEK CAPITAL LETTER SIGMA
+03A4;AI;GREEK CAPITAL LETTER TAU
+03A5;AI;GREEK CAPITAL LETTER UPSILON
+03A6;AI;GREEK CAPITAL LETTER PHI
+03A7;AI;GREEK CAPITAL LETTER CHI
+03A8;AI;GREEK CAPITAL LETTER PSI
+03A9;AI;GREEK CAPITAL LETTER OMEGA
+03AA;AL;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;AL;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;AL;GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;AL;GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;AL;GREEK SMALL LETTER ETA WITH TONOS
+03AF;AL;GREEK SMALL LETTER IOTA WITH TONOS
+03B0;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1;AI;GREEK SMALL LETTER ALPHA
+03B2;AI;GREEK SMALL LETTER BETA
+03B3;AI;GREEK SMALL LETTER GAMMA
+03B4;AI;GREEK SMALL LETTER DELTA
+03B5;AI;GREEK SMALL LETTER EPSILON
+03B6;AI;GREEK SMALL LETTER ZETA
+03B7;AI;GREEK SMALL LETTER ETA
+03B8;AI;GREEK SMALL LETTER THETA
+03B9;AI;GREEK SMALL LETTER IOTA
+03BA;AI;GREEK SMALL LETTER KAPPA
+03BB;AI;GREEK SMALL LETTER LAMDA
+03BC;AI;GREEK SMALL LETTER MU
+03BD;AI;GREEK SMALL LETTER NU
+03BE;AI;GREEK SMALL LETTER XI
+03BF;AI;GREEK SMALL LETTER OMICRON
+03C0;AI;GREEK SMALL LETTER PI
+03C1;AI;GREEK SMALL LETTER RHO
+03C2;AL;GREEK SMALL LETTER FINAL SIGMA
+03C3;AI;GREEK SMALL LETTER SIGMA
+03C4;AI;GREEK SMALL LETTER TAU
+03C5;AI;GREEK SMALL LETTER UPSILON
+03C6;AI;GREEK SMALL LETTER PHI
+03C7;AI;GREEK SMALL LETTER CHI
+03C8;AI;GREEK SMALL LETTER PSI
+03C9;AI;GREEK SMALL LETTER OMEGA
+03CA;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;AL;GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;AL;GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;AL;GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;AL;GREEK BETA SYMBOL
+03D1;AL;GREEK THETA SYMBOL
+03D2;AL;GREEK UPSILON WITH HOOK SYMBOL
+03D3;AL;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;AL;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;AL;GREEK PHI SYMBOL
+03D6;AL;GREEK PI SYMBOL
+03D7;AL;GREEK KAI SYMBOL
+03DA;AL;GREEK LETTER STIGMA
+03DB;AL;GREEK SMALL LETTER STIGMA
+03DC;AL;GREEK LETTER DIGAMMA
+03DD;AL;GREEK SMALL LETTER DIGAMMA
+03DE;AL;GREEK LETTER KOPPA
+03DF;AL;GREEK SMALL LETTER KOPPA
+03E0;AL;GREEK LETTER SAMPI
+03E1;AL;GREEK SMALL LETTER SAMPI
+03E2;AL;COPTIC CAPITAL LETTER SHEI
+03E3;AL;COPTIC SMALL LETTER SHEI
+03E4;AL;COPTIC CAPITAL LETTER FEI
+03E5;AL;COPTIC SMALL LETTER FEI
+03E6;AL;COPTIC CAPITAL LETTER KHEI
+03E7;AL;COPTIC SMALL LETTER KHEI
+03E8;AL;COPTIC CAPITAL LETTER HORI
+03E9;AL;COPTIC SMALL LETTER HORI
+03EA;AL;COPTIC CAPITAL LETTER GANGIA
+03EB;AL;COPTIC SMALL LETTER GANGIA
+03EC;AL;COPTIC CAPITAL LETTER SHIMA
+03ED;AL;COPTIC SMALL LETTER SHIMA
+03EE;AL;COPTIC CAPITAL LETTER DEI
+03EF;AL;COPTIC SMALL LETTER DEI
+03F0;AL;GREEK KAPPA SYMBOL
+03F1;AL;GREEK RHO SYMBOL
+03F2;AL;GREEK LUNATE SIGMA SYMBOL
+03F3;AL;GREEK LETTER YOT
+0400;AL;CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;AI;CYRILLIC CAPITAL LETTER IO
+0402;AL;CYRILLIC CAPITAL LETTER DJE
+0403;AL;CYRILLIC CAPITAL LETTER GJE
+0404;AL;CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;AL;CYRILLIC CAPITAL LETTER DZE
+0406;AL;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;AL;CYRILLIC CAPITAL LETTER YI
+0408;AL;CYRILLIC CAPITAL LETTER JE
+0409;AL;CYRILLIC CAPITAL LETTER LJE
+040A;AL;CYRILLIC CAPITAL LETTER NJE
+040B;AL;CYRILLIC CAPITAL LETTER TSHE
+040C;AL;CYRILLIC CAPITAL LETTER KJE
+040D;AL;CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;AL;CYRILLIC CAPITAL LETTER SHORT U
+040F;AL;CYRILLIC CAPITAL LETTER DZHE
+0410;AI;CYRILLIC CAPITAL LETTER A
+0411;AI;CYRILLIC CAPITAL LETTER BE
+0412;AI;CYRILLIC CAPITAL LETTER VE
+0413;AI;CYRILLIC CAPITAL LETTER GHE
+0414;AI;CYRILLIC CAPITAL LETTER DE
+0415;AI;CYRILLIC CAPITAL LETTER IE
+0416;AI;CYRILLIC CAPITAL LETTER ZHE
+0417;AI;CYRILLIC CAPITAL LETTER ZE
+0418;AI;CYRILLIC CAPITAL LETTER I
+0419;AI;CYRILLIC CAPITAL LETTER SHORT I
+041A;AI;CYRILLIC CAPITAL LETTER KA
+041B;AI;CYRILLIC CAPITAL LETTER EL
+041C;AI;CYRILLIC CAPITAL LETTER EM
+041D;AI;CYRILLIC CAPITAL LETTER EN
+041E;AI;CYRILLIC CAPITAL LETTER O
+041F;AI;CYRILLIC CAPITAL LETTER PE
+0420;AI;CYRILLIC CAPITAL LETTER ER
+0421;AI;CYRILLIC CAPITAL LETTER ES
+0422;AI;CYRILLIC CAPITAL LETTER TE
+0423;AI;CYRILLIC CAPITAL LETTER U
+0424;AI;CYRILLIC CAPITAL LETTER EF
+0425;AI;CYRILLIC CAPITAL LETTER HA
+0426;AI;CYRILLIC CAPITAL LETTER TSE
+0427;AI;CYRILLIC CAPITAL LETTER CHE
+0428;AI;CYRILLIC CAPITAL LETTER SHA
+0429;AI;CYRILLIC CAPITAL LETTER SHCHA
+042A;AI;CYRILLIC CAPITAL LETTER HARD SIGN
+042B;AI;CYRILLIC CAPITAL LETTER YERU
+042C;AI;CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;AI;CYRILLIC CAPITAL LETTER E
+042E;AI;CYRILLIC CAPITAL LETTER YU
+042F;AI;CYRILLIC CAPITAL LETTER YA
+0430;AI;CYRILLIC SMALL LETTER A
+0431;AI;CYRILLIC SMALL LETTER BE
+0432;AI;CYRILLIC SMALL LETTER VE
+0433;AI;CYRILLIC SMALL LETTER GHE
+0434;AI;CYRILLIC SMALL LETTER DE
+0435;AI;CYRILLIC SMALL LETTER IE
+0436;AI;CYRILLIC SMALL LETTER ZHE
+0437;AI;CYRILLIC SMALL LETTER ZE
+0438;AI;CYRILLIC SMALL LETTER I
+0439;AI;CYRILLIC SMALL LETTER SHORT I
+043A;AI;CYRILLIC SMALL LETTER KA
+043B;AI;CYRILLIC SMALL LETTER EL
+043C;AI;CYRILLIC SMALL LETTER EM
+043D;AI;CYRILLIC SMALL LETTER EN
+043E;AI;CYRILLIC SMALL LETTER O
+043F;AI;CYRILLIC SMALL LETTER PE
+0440;AI;CYRILLIC SMALL LETTER ER
+0441;AI;CYRILLIC SMALL LETTER ES
+0442;AI;CYRILLIC SMALL LETTER TE
+0443;AI;CYRILLIC SMALL LETTER U
+0444;AI;CYRILLIC SMALL LETTER EF
+0445;AI;CYRILLIC SMALL LETTER HA
+0446;AI;CYRILLIC SMALL LETTER TSE
+0447;AI;CYRILLIC SMALL LETTER CHE
+0448;AI;CYRILLIC SMALL LETTER SHA
+0449;AI;CYRILLIC SMALL LETTER SHCHA
+044A;AI;CYRILLIC SMALL LETTER HARD SIGN
+044B;AI;CYRILLIC SMALL LETTER YERU
+044C;AI;CYRILLIC SMALL LETTER SOFT SIGN
+044D;AI;CYRILLIC SMALL LETTER E
+044E;AI;CYRILLIC SMALL LETTER YU
+044F;AI;CYRILLIC SMALL LETTER YA
+0450;AL;CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;AI;CYRILLIC SMALL LETTER IO
+0452;AL;CYRILLIC SMALL LETTER DJE
+0453;AL;CYRILLIC SMALL LETTER GJE
+0454;AL;CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;AL;CYRILLIC SMALL LETTER DZE
+0456;AL;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;AL;CYRILLIC SMALL LETTER YI
+0458;AL;CYRILLIC SMALL LETTER JE
+0459;AL;CYRILLIC SMALL LETTER LJE
+045A;AL;CYRILLIC SMALL LETTER NJE
+045B;AL;CYRILLIC SMALL LETTER TSHE
+045C;AL;CYRILLIC SMALL LETTER KJE
+045D;AL;CYRILLIC SMALL LETTER I WITH GRAVE
+045E;AL;CYRILLIC SMALL LETTER SHORT U
+045F;AL;CYRILLIC SMALL LETTER DZHE
+0460;AL;CYRILLIC CAPITAL LETTER OMEGA
+0461;AL;CYRILLIC SMALL LETTER OMEGA
+0462;AL;CYRILLIC CAPITAL LETTER YAT
+0463;AL;CYRILLIC SMALL LETTER YAT
+0464;AL;CYRILLIC CAPITAL LETTER IOTIFIED E
+0465;AL;CYRILLIC SMALL LETTER IOTIFIED E
+0466;AL;CYRILLIC CAPITAL LETTER LITTLE YUS
+0467;AL;CYRILLIC SMALL LETTER LITTLE YUS
+0468;AL;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469;AL;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A;AL;CYRILLIC CAPITAL LETTER BIG YUS
+046B;AL;CYRILLIC SMALL LETTER BIG YUS
+046C;AL;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D;AL;CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E;AL;CYRILLIC CAPITAL LETTER KSI
+046F;AL;CYRILLIC SMALL LETTER KSI
+0470;AL;CYRILLIC CAPITAL LETTER PSI
+0471;AL;CYRILLIC SMALL LETTER PSI
+0472;AL;CYRILLIC CAPITAL LETTER FITA
+0473;AL;CYRILLIC SMALL LETTER FITA
+0474;AL;CYRILLIC CAPITAL LETTER IZHITSA
+0475;AL;CYRILLIC SMALL LETTER IZHITSA
+0476;AL;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;AL;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478;AL;CYRILLIC CAPITAL LETTER UK
+0479;AL;CYRILLIC SMALL LETTER UK
+047A;AL;CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B;AL;CYRILLIC SMALL LETTER ROUND OMEGA
+047C;AL;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D;AL;CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E;AL;CYRILLIC CAPITAL LETTER OT
+047F;AL;CYRILLIC SMALL LETTER OT
+0480;AL;CYRILLIC CAPITAL LETTER KOPPA
+0481;AL;CYRILLIC SMALL LETTER KOPPA
+0482;AL;CYRILLIC THOUSANDS SIGN
+0483;CM;COMBINING CYRILLIC TITLO
+0484;CM;COMBINING CYRILLIC PALATALIZATION
+0485;CM;COMBINING CYRILLIC DASIA PNEUMATA
+0486;CM;COMBINING CYRILLIC PSILI PNEUMATA
+0488;CM;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489;CM;COMBINING CYRILLIC MILLIONS SIGN
+048C;AL;CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D;AL;CYRILLIC SMALL LETTER SEMISOFT SIGN
+048E;AL;CYRILLIC CAPITAL LETTER ER WITH TICK
+048F;AL;CYRILLIC SMALL LETTER ER WITH TICK
+0490;AL;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491;AL;CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492;AL;CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493;AL;CYRILLIC SMALL LETTER GHE WITH STROKE
+0494;AL;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495;AL;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496;AL;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497;AL;CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498;AL;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499;AL;CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A;AL;CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B;AL;CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C;AL;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D;AL;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E;AL;CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F;AL;CYRILLIC SMALL LETTER KA WITH STROKE
+04A0;AL;CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1;AL;CYRILLIC SMALL LETTER BASHKIR KA
+04A2;AL;CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3;AL;CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4;AL;CYRILLIC CAPITAL LIGATURE EN GHE
+04A5;AL;CYRILLIC SMALL LIGATURE EN GHE
+04A6;AL;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7;AL;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8;AL;CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9;AL;CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA;AL;CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB;AL;CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC;AL;CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD;AL;CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE;AL;CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF;AL;CYRILLIC SMALL LETTER STRAIGHT U
+04B0;AL;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1;AL;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2;AL;CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3;AL;CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4;AL;CYRILLIC CAPITAL LIGATURE TE TSE
+04B5;AL;CYRILLIC SMALL LIGATURE TE TSE
+04B6;AL;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7;AL;CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8;AL;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9;AL;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA;AL;CYRILLIC CAPITAL LETTER SHHA
+04BB;AL;CYRILLIC SMALL LETTER SHHA
+04BC;AL;CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD;AL;CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE;AL;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF;AL;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0;AL;CYRILLIC LETTER PALOCHKA
+04C1;AL;CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;AL;CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3;AL;CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4;AL;CYRILLIC SMALL LETTER KA WITH HOOK
+04C7;AL;CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8;AL;CYRILLIC SMALL LETTER EN WITH HOOK
+04CB;AL;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC;AL;CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0;AL;CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;AL;CYRILLIC SMALL LETTER A WITH BREVE
+04D2;AL;CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;AL;CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4;AL;CYRILLIC CAPITAL LIGATURE A IE
+04D5;AL;CYRILLIC SMALL LIGATURE A IE
+04D6;AL;CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;AL;CYRILLIC SMALL LETTER IE WITH BREVE
+04D8;AL;CYRILLIC CAPITAL LETTER SCHWA
+04D9;AL;CYRILLIC SMALL LETTER SCHWA
+04DA;AL;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;AL;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;AL;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;AL;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;AL;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;AL;CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0;AL;CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1;AL;CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2;AL;CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;AL;CYRILLIC SMALL LETTER I WITH MACRON
+04E4;AL;CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;AL;CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;AL;CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;AL;CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8;AL;CYRILLIC CAPITAL LETTER BARRED O
+04E9;AL;CYRILLIC SMALL LETTER BARRED O
+04EA;AL;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;AL;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;AL;CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;AL;CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;AL;CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;AL;CYRILLIC SMALL LETTER U WITH MACRON
+04F0;AL;CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;AL;CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;AL;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;AL;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;AL;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;AL;CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8;AL;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;AL;CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0531;AL;ARMENIAN CAPITAL LETTER AYB
+0532;AL;ARMENIAN CAPITAL LETTER BEN
+0533;AL;ARMENIAN CAPITAL LETTER GIM
+0534;AL;ARMENIAN CAPITAL LETTER DA
+0535;AL;ARMENIAN CAPITAL LETTER ECH
+0536;AL;ARMENIAN CAPITAL LETTER ZA
+0537;AL;ARMENIAN CAPITAL LETTER EH
+0538;AL;ARMENIAN CAPITAL LETTER ET
+0539;AL;ARMENIAN CAPITAL LETTER TO
+053A;AL;ARMENIAN CAPITAL LETTER ZHE
+053B;AL;ARMENIAN CAPITAL LETTER INI
+053C;AL;ARMENIAN CAPITAL LETTER LIWN
+053D;AL;ARMENIAN CAPITAL LETTER XEH
+053E;AL;ARMENIAN CAPITAL LETTER CA
+053F;AL;ARMENIAN CAPITAL LETTER KEN
+0540;AL;ARMENIAN CAPITAL LETTER HO
+0541;AL;ARMENIAN CAPITAL LETTER JA
+0542;AL;ARMENIAN CAPITAL LETTER GHAD
+0543;AL;ARMENIAN CAPITAL LETTER CHEH
+0544;AL;ARMENIAN CAPITAL LETTER MEN
+0545;AL;ARMENIAN CAPITAL LETTER YI
+0546;AL;ARMENIAN CAPITAL LETTER NOW
+0547;AL;ARMENIAN CAPITAL LETTER SHA
+0548;AL;ARMENIAN CAPITAL LETTER VO
+0549;AL;ARMENIAN CAPITAL LETTER CHA
+054A;AL;ARMENIAN CAPITAL LETTER PEH
+054B;AL;ARMENIAN CAPITAL LETTER JHEH
+054C;AL;ARMENIAN CAPITAL LETTER RA
+054D;AL;ARMENIAN CAPITAL LETTER SEH
+054E;AL;ARMENIAN CAPITAL LETTER VEW
+054F;AL;ARMENIAN CAPITAL LETTER TIWN
+0550;AL;ARMENIAN CAPITAL LETTER REH
+0551;AL;ARMENIAN CAPITAL LETTER CO
+0552;AL;ARMENIAN CAPITAL LETTER YIWN
+0553;AL;ARMENIAN CAPITAL LETTER PIWR
+0554;AL;ARMENIAN CAPITAL LETTER KEH
+0555;AL;ARMENIAN CAPITAL LETTER OH
+0556;AL;ARMENIAN CAPITAL LETTER FEH
+0559;AL;ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A;AL;ARMENIAN APOSTROPHE
+055B;AL;ARMENIAN EMPHASIS MARK
+055C;AL;ARMENIAN EXCLAMATION MARK
+055D;AL;ARMENIAN COMMA
+055E;AL;ARMENIAN QUESTION MARK
+055F;AL;ARMENIAN ABBREVIATION MARK
+0561;AL;ARMENIAN SMALL LETTER AYB
+0562;AL;ARMENIAN SMALL LETTER BEN
+0563;AL;ARMENIAN SMALL LETTER GIM
+0564;AL;ARMENIAN SMALL LETTER DA
+0565;AL;ARMENIAN SMALL LETTER ECH
+0566;AL;ARMENIAN SMALL LETTER ZA
+0567;AL;ARMENIAN SMALL LETTER EH
+0568;AL;ARMENIAN SMALL LETTER ET
+0569;AL;ARMENIAN SMALL LETTER TO
+056A;AL;ARMENIAN SMALL LETTER ZHE
+056B;AL;ARMENIAN SMALL LETTER INI
+056C;AL;ARMENIAN SMALL LETTER LIWN
+056D;AL;ARMENIAN SMALL LETTER XEH
+056E;AL;ARMENIAN SMALL LETTER CA
+056F;AL;ARMENIAN SMALL LETTER KEN
+0570;AL;ARMENIAN SMALL LETTER HO
+0571;AL;ARMENIAN SMALL LETTER JA
+0572;AL;ARMENIAN SMALL LETTER GHAD
+0573;AL;ARMENIAN SMALL LETTER CHEH
+0574;AL;ARMENIAN SMALL LETTER MEN
+0575;AL;ARMENIAN SMALL LETTER YI
+0576;AL;ARMENIAN SMALL LETTER NOW
+0577;AL;ARMENIAN SMALL LETTER SHA
+0578;AL;ARMENIAN SMALL LETTER VO
+0579;AL;ARMENIAN SMALL LETTER CHA
+057A;AL;ARMENIAN SMALL LETTER PEH
+057B;AL;ARMENIAN SMALL LETTER JHEH
+057C;AL;ARMENIAN SMALL LETTER RA
+057D;AL;ARMENIAN SMALL LETTER SEH
+057E;AL;ARMENIAN SMALL LETTER VEW
+057F;AL;ARMENIAN SMALL LETTER TIWN
+0580;AL;ARMENIAN SMALL LETTER REH
+0581;AL;ARMENIAN SMALL LETTER CO
+0582;AL;ARMENIAN SMALL LETTER YIWN
+0583;AL;ARMENIAN SMALL LETTER PIWR
+0584;AL;ARMENIAN SMALL LETTER KEH
+0585;AL;ARMENIAN SMALL LETTER OH
+0586;AL;ARMENIAN SMALL LETTER FEH
+0587;AL;ARMENIAN SMALL LIGATURE ECH YIWN
+0589;IS;ARMENIAN FULL STOP
+058A;BA;ARMENIAN HYPHEN
+0591;CM;HEBREW ACCENT ETNAHTA
+0592;CM;HEBREW ACCENT SEGOL
+0593;CM;HEBREW ACCENT SHALSHELET
+0594;CM;HEBREW ACCENT ZAQEF QATAN
+0595;CM;HEBREW ACCENT ZAQEF GADOL
+0596;CM;HEBREW ACCENT TIPEHA
+0597;CM;HEBREW ACCENT REVIA
+0598;CM;HEBREW ACCENT ZARQA
+0599;CM;HEBREW ACCENT PASHTA
+059A;CM;HEBREW ACCENT YETIV
+059B;CM;HEBREW ACCENT TEVIR
+059C;CM;HEBREW ACCENT GERESH
+059D;CM;HEBREW ACCENT GERESH MUQDAM
+059E;CM;HEBREW ACCENT GERSHAYIM
+059F;CM;HEBREW ACCENT QARNEY PARA
+05A0;CM;HEBREW ACCENT TELISHA GEDOLA
+05A1;CM;HEBREW ACCENT PAZER
+05A3;CM;HEBREW ACCENT MUNAH
+05A4;CM;HEBREW ACCENT MAHAPAKH
+05A5;CM;HEBREW ACCENT MERKHA
+05A6;CM;HEBREW ACCENT MERKHA KEFULA
+05A7;CM;HEBREW ACCENT DARGA
+05A8;CM;HEBREW ACCENT QADMA
+05A9;CM;HEBREW ACCENT TELISHA QETANA
+05AA;CM;HEBREW ACCENT YERAH BEN YOMO
+05AB;CM;HEBREW ACCENT OLE
+05AC;CM;HEBREW ACCENT ILUY
+05AD;CM;HEBREW ACCENT DEHI
+05AE;CM;HEBREW ACCENT ZINOR
+05AF;CM;HEBREW MARK MASORA CIRCLE
+05B0;CM;HEBREW POINT SHEVA
+05B1;CM;HEBREW POINT HATAF SEGOL
+05B2;CM;HEBREW POINT HATAF PATAH
+05B3;CM;HEBREW POINT HATAF QAMATS
+05B4;CM;HEBREW POINT HIRIQ
+05B5;CM;HEBREW POINT TSERE
+05B6;CM;HEBREW POINT SEGOL
+05B7;CM;HEBREW POINT PATAH
+05B8;CM;HEBREW POINT QAMATS
+05B9;CM;HEBREW POINT HOLAM
+05BB;CM;HEBREW POINT QUBUTS
+05BC;CM;HEBREW POINT DAGESH OR MAPIQ
+05BD;CM;HEBREW POINT METEG
+05BE;AL;HEBREW PUNCTUATION MAQAF
+05BF;CM;HEBREW POINT RAFE
+05C0;AL;HEBREW PUNCTUATION PASEQ
+05C1;CM;HEBREW POINT SHIN DOT
+05C2;CM;HEBREW POINT SIN DOT
+05C3;AL;HEBREW PUNCTUATION SOF PASUQ
+05C4;CM;HEBREW MARK UPPER DOT
+05D0;AL;HEBREW LETTER ALEF
+05D1;AL;HEBREW LETTER BET
+05D2;AL;HEBREW LETTER GIMEL
+05D3;AL;HEBREW LETTER DALET
+05D4;AL;HEBREW LETTER HE
+05D5;AL;HEBREW LETTER VAV
+05D6;AL;HEBREW LETTER ZAYIN
+05D7;AL;HEBREW LETTER HET
+05D8;AL;HEBREW LETTER TET
+05D9;AL;HEBREW LETTER YOD
+05DA;AL;HEBREW LETTER FINAL KAF
+05DB;AL;HEBREW LETTER KAF
+05DC;AL;HEBREW LETTER LAMED
+05DD;AL;HEBREW LETTER FINAL MEM
+05DE;AL;HEBREW LETTER MEM
+05DF;AL;HEBREW LETTER FINAL NUN
+05E0;AL;HEBREW LETTER NUN
+05E1;AL;HEBREW LETTER SAMEKH
+05E2;AL;HEBREW LETTER AYIN
+05E3;AL;HEBREW LETTER FINAL PE
+05E4;AL;HEBREW LETTER PE
+05E5;AL;HEBREW LETTER FINAL TSADI
+05E6;AL;HEBREW LETTER TSADI
+05E7;AL;HEBREW LETTER QOF
+05E8;AL;HEBREW LETTER RESH
+05E9;AL;HEBREW LETTER SHIN
+05EA;AL;HEBREW LETTER TAV
+05F0;AL;HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;AL;HEBREW LIGATURE YIDDISH VAV YOD
+05F2;AL;HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3;AL;HEBREW PUNCTUATION GERESH
+05F4;AL;HEBREW PUNCTUATION GERSHAYIM
+060C;AL;ARABIC COMMA
+061B;AL;ARABIC SEMICOLON
+061F;AL;ARABIC QUESTION MARK
+0621;AL;ARABIC LETTER HAMZA
+0622;AL;ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;AL;ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;AL;ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;AL;ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;AL;ARABIC LETTER ALEF
+0628;AL;ARABIC LETTER BEH
+0629;AL;ARABIC LETTER TEH MARBUTA
+062A;AL;ARABIC LETTER TEH
+062B;AL;ARABIC LETTER THEH
+062C;AL;ARABIC LETTER JEEM
+062D;AL;ARABIC LETTER HAH
+062E;AL;ARABIC LETTER KHAH
+062F;AL;ARABIC LETTER DAL
+0630;AL;ARABIC LETTER THAL
+0631;AL;ARABIC LETTER REH
+0632;AL;ARABIC LETTER ZAIN
+0633;AL;ARABIC LETTER SEEN
+0634;AL;ARABIC LETTER SHEEN
+0635;AL;ARABIC LETTER SAD
+0636;AL;ARABIC LETTER DAD
+0637;AL;ARABIC LETTER TAH
+0638;AL;ARABIC LETTER ZAH
+0639;AL;ARABIC LETTER AIN
+063A;AL;ARABIC LETTER GHAIN
+0640;AL;ARABIC TATWEEL
+0641;AL;ARABIC LETTER FEH
+0642;AL;ARABIC LETTER QAF
+0643;AL;ARABIC LETTER KAF
+0644;AL;ARABIC LETTER LAM
+0645;AL;ARABIC LETTER MEEM
+0646;AL;ARABIC LETTER NOON
+0647;AL;ARABIC LETTER HEH
+0648;AL;ARABIC LETTER WAW
+0649;AL;ARABIC LETTER ALEF MAKSURA
+064A;AL;ARABIC LETTER YEH
+064B;CM;ARABIC FATHATAN
+064C;CM;ARABIC DAMMATAN
+064D;CM;ARABIC KASRATAN
+064E;CM;ARABIC FATHA
+064F;CM;ARABIC DAMMA
+0650;CM;ARABIC KASRA
+0651;CM;ARABIC SHADDA
+0652;CM;ARABIC SUKUN
+0653;CM;ARABIC MADDAH ABOVE
+0654;CM;ARABIC HAMZA ABOVE
+0655;CM;ARABIC HAMZA BELOW
+0660;NU;ARABIC-INDIC DIGIT ZERO
+0661;NU;ARABIC-INDIC DIGIT ONE
+0662;NU;ARABIC-INDIC DIGIT TWO
+0663;NU;ARABIC-INDIC DIGIT THREE
+0664;NU;ARABIC-INDIC DIGIT FOUR
+0665;NU;ARABIC-INDIC DIGIT FIVE
+0666;NU;ARABIC-INDIC DIGIT SIX
+0667;NU;ARABIC-INDIC DIGIT SEVEN
+0668;NU;ARABIC-INDIC DIGIT EIGHT
+0669;NU;ARABIC-INDIC DIGIT NINE
+066A;AL;ARABIC PERCENT SIGN
+066B;AL;ARABIC DECIMAL SEPARATOR
+066C;AL;ARABIC THOUSANDS SEPARATOR
+066D;AL;ARABIC FIVE POINTED STAR
+0670;CM;ARABIC LETTER SUPERSCRIPT ALEF
+0671;AL;ARABIC LETTER ALEF WASLA
+0672;AL;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0673;AL;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0674;AL;ARABIC LETTER HIGH HAMZA
+0675;AL;ARABIC LETTER HIGH HAMZA ALEF
+0676;AL;ARABIC LETTER HIGH HAMZA WAW
+0677;AL;ARABIC LETTER U WITH HAMZA ABOVE
+0678;AL;ARABIC LETTER HIGH HAMZA YEH
+0679;AL;ARABIC LETTER TTEH
+067A;AL;ARABIC LETTER TTEHEH
+067B;AL;ARABIC LETTER BEEH
+067C;AL;ARABIC LETTER TEH WITH RING
+067D;AL;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067E;AL;ARABIC LETTER PEH
+067F;AL;ARABIC LETTER TEHEH
+0680;AL;ARABIC LETTER BEHEH
+0681;AL;ARABIC LETTER HAH WITH HAMZA ABOVE
+0682;AL;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0683;AL;ARABIC LETTER NYEH
+0684;AL;ARABIC LETTER DYEH
+0685;AL;ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0686;AL;ARABIC LETTER TCHEH
+0687;AL;ARABIC LETTER TCHEHEH
+0688;AL;ARABIC LETTER DDAL
+0689;AL;ARABIC LETTER DAL WITH RING
+068A;AL;ARABIC LETTER DAL WITH DOT BELOW
+068B;AL;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C;AL;ARABIC LETTER DAHAL
+068D;AL;ARABIC LETTER DDAHAL
+068E;AL;ARABIC LETTER DUL
+068F;AL;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690;AL;ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+0691;AL;ARABIC LETTER RREH
+0692;AL;ARABIC LETTER REH WITH SMALL V
+0693;AL;ARABIC LETTER REH WITH RING
+0694;AL;ARABIC LETTER REH WITH DOT BELOW
+0695;AL;ARABIC LETTER REH WITH SMALL V BELOW
+0696;AL;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697;AL;ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698;AL;ARABIC LETTER JEH
+0699;AL;ARABIC LETTER REH WITH FOUR DOTS ABOVE
+069A;AL;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B;AL;ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C;AL;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+069D;AL;ARABIC LETTER SAD WITH TWO DOTS BELOW
+069E;AL;ARABIC LETTER SAD WITH THREE DOTS ABOVE
+069F;AL;ARABIC LETTER TAH WITH THREE DOTS ABOVE
+06A0;AL;ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06A1;AL;ARABIC LETTER DOTLESS FEH
+06A2;AL;ARABIC LETTER FEH WITH DOT MOVED BELOW
+06A3;AL;ARABIC LETTER FEH WITH DOT BELOW
+06A4;AL;ARABIC LETTER VEH
+06A5;AL;ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6;AL;ARABIC LETTER PEHEH
+06A7;AL;ARABIC LETTER QAF WITH DOT ABOVE
+06A8;AL;ARABIC LETTER QAF WITH THREE DOTS ABOVE
+06A9;AL;ARABIC LETTER KEHEH
+06AA;AL;ARABIC LETTER SWASH KAF
+06AB;AL;ARABIC LETTER KAF WITH RING
+06AC;AL;ARABIC LETTER KAF WITH DOT ABOVE
+06AD;AL;ARABIC LETTER NG
+06AE;AL;ARABIC LETTER KAF WITH THREE DOTS BELOW
+06AF;AL;ARABIC LETTER GAF
+06B0;AL;ARABIC LETTER GAF WITH RING
+06B1;AL;ARABIC LETTER NGOEH
+06B2;AL;ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3;AL;ARABIC LETTER GUEH
+06B4;AL;ARABIC LETTER GAF WITH THREE DOTS ABOVE
+06B5;AL;ARABIC LETTER LAM WITH SMALL V
+06B6;AL;ARABIC LETTER LAM WITH DOT ABOVE
+06B7;AL;ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8;AL;ARABIC LETTER LAM WITH THREE DOTS BELOW
+06B9;AL;ARABIC LETTER NOON WITH DOT BELOW
+06BA;AL;ARABIC LETTER NOON GHUNNA
+06BB;AL;ARABIC LETTER RNOON
+06BC;AL;ARABIC LETTER NOON WITH RING
+06BD;AL;ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06BE;AL;ARABIC LETTER HEH DOACHASHMEE
+06BF;AL;ARABIC LETTER TCHEH WITH DOT ABOVE
+06C0;AL;ARABIC LETTER HEH WITH YEH ABOVE
+06C1;AL;ARABIC LETTER HEH GOAL
+06C2;AL;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3;AL;ARABIC LETTER TEH MARBUTA GOAL
+06C4;AL;ARABIC LETTER WAW WITH RING
+06C5;AL;ARABIC LETTER KIRGHIZ OE
+06C6;AL;ARABIC LETTER OE
+06C7;AL;ARABIC LETTER U
+06C8;AL;ARABIC LETTER YU
+06C9;AL;ARABIC LETTER KIRGHIZ YU
+06CA;AL;ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB;AL;ARABIC LETTER VE
+06CC;AL;ARABIC LETTER FARSI YEH
+06CD;AL;ARABIC LETTER YEH WITH TAIL
+06CE;AL;ARABIC LETTER YEH WITH SMALL V
+06CF;AL;ARABIC LETTER WAW WITH DOT ABOVE
+06D0;AL;ARABIC LETTER E
+06D1;AL;ARABIC LETTER YEH WITH THREE DOTS BELOW
+06D2;AL;ARABIC LETTER YEH BARREE
+06D3;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4;AL;ARABIC FULL STOP
+06D5;AL;ARABIC LETTER AE
+06D6;CM;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7;CM;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8;CM;ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9;CM;ARABIC SMALL HIGH LAM ALEF
+06DA;CM;ARABIC SMALL HIGH JEEM
+06DB;CM;ARABIC SMALL HIGH THREE DOTS
+06DC;CM;ARABIC SMALL HIGH SEEN
+06DD;CM;ARABIC END OF AYAH
+06DE;CM;ARABIC START OF RUB EL HIZB
+06DF;CM;ARABIC SMALL HIGH ROUNDED ZERO
+06E0;CM;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1;CM;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2;CM;ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3;CM;ARABIC SMALL LOW SEEN
+06E4;CM;ARABIC SMALL HIGH MADDA
+06E5;AL;ARABIC SMALL WAW
+06E6;AL;ARABIC SMALL YEH
+06E7;CM;ARABIC SMALL HIGH YEH
+06E8;CM;ARABIC SMALL HIGH NOON
+06E9;AL;ARABIC PLACE OF SAJDAH
+06EA;CM;ARABIC EMPTY CENTRE LOW STOP
+06EB;CM;ARABIC EMPTY CENTRE HIGH STOP
+06EC;CM;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED;CM;ARABIC SMALL LOW MEEM
+06F0;NU;EXTENDED ARABIC-INDIC DIGIT ZERO
+06F1;NU;EXTENDED ARABIC-INDIC DIGIT ONE
+06F2;NU;EXTENDED ARABIC-INDIC DIGIT TWO
+06F3;NU;EXTENDED ARABIC-INDIC DIGIT THREE
+06F4;NU;EXTENDED ARABIC-INDIC DIGIT FOUR
+06F5;NU;EXTENDED ARABIC-INDIC DIGIT FIVE
+06F6;NU;EXTENDED ARABIC-INDIC DIGIT SIX
+06F7;NU;EXTENDED ARABIC-INDIC DIGIT SEVEN
+06F8;NU;EXTENDED ARABIC-INDIC DIGIT EIGHT
+06F9;NU;EXTENDED ARABIC-INDIC DIGIT NINE
+06FA;AL;ARABIC LETTER SHEEN WITH DOT BELOW
+06FB;AL;ARABIC LETTER DAD WITH DOT BELOW
+06FC;AL;ARABIC LETTER GHAIN WITH DOT BELOW
+06FD;AL;ARABIC SIGN SINDHI AMPERSAND
+06FE;AL;ARABIC SIGN SINDHI POSTPOSITION MEN
+0700;AL;SYRIAC END OF PARAGRAPH
+0701;AL;SYRIAC SUPRALINEAR FULL STOP
+0702;AL;SYRIAC SUBLINEAR FULL STOP
+0703;AL;SYRIAC SUPRALINEAR COLON
+0704;AL;SYRIAC SUBLINEAR COLON
+0705;AL;SYRIAC HORIZONTAL COLON
+0706;AL;SYRIAC COLON SKEWED LEFT
+0707;AL;SYRIAC COLON SKEWED RIGHT
+0708;AL;SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709;AL;SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070A;AL;SYRIAC CONTRACTION
+070B;AL;SYRIAC HARKLEAN OBELUS
+070C;AL;SYRIAC HARKLEAN METOBELUS
+070D;AL;SYRIAC HARKLEAN ASTERISCUS
+070F;CM;SYRIAC ABBREVIATION MARK
+0710;AL;SYRIAC LETTER ALAPH
+0711;CM;SYRIAC LETTER SUPERSCRIPT ALAPH
+0712;AL;SYRIAC LETTER BETH
+0713;AL;SYRIAC LETTER GAMAL
+0714;AL;SYRIAC LETTER GAMAL GARSHUNI
+0715;AL;SYRIAC LETTER DALATH
+0716;AL;SYRIAC LETTER DOTLESS DALATH RISH
+0717;AL;SYRIAC LETTER HE
+0718;AL;SYRIAC LETTER WAW
+0719;AL;SYRIAC LETTER ZAIN
+071A;AL;SYRIAC LETTER HETH
+071B;AL;SYRIAC LETTER TETH
+071C;AL;SYRIAC LETTER TETH GARSHUNI
+071D;AL;SYRIAC LETTER YUDH
+071E;AL;SYRIAC LETTER YUDH HE
+071F;AL;SYRIAC LETTER KAPH
+0720;AL;SYRIAC LETTER LAMADH
+0721;AL;SYRIAC LETTER MIM
+0722;AL;SYRIAC LETTER NUN
+0723;AL;SYRIAC LETTER SEMKATH
+0724;AL;SYRIAC LETTER FINAL SEMKATH
+0725;AL;SYRIAC LETTER E
+0726;AL;SYRIAC LETTER PE
+0727;AL;SYRIAC LETTER REVERSED PE
+0728;AL;SYRIAC LETTER SADHE
+0729;AL;SYRIAC LETTER QAPH
+072A;AL;SYRIAC LETTER RISH
+072B;AL;SYRIAC LETTER SHIN
+072C;AL;SYRIAC LETTER TAW
+0730;CM;SYRIAC PTHAHA ABOVE
+0731;CM;SYRIAC PTHAHA BELOW
+0732;CM;SYRIAC PTHAHA DOTTED
+0733;CM;SYRIAC ZQAPHA ABOVE
+0734;CM;SYRIAC ZQAPHA BELOW
+0735;CM;SYRIAC ZQAPHA DOTTED
+0736;CM;SYRIAC RBASA ABOVE
+0737;CM;SYRIAC RBASA BELOW
+0738;CM;SYRIAC DOTTED ZLAMA HORIZONTAL
+0739;CM;SYRIAC DOTTED ZLAMA ANGULAR
+073A;CM;SYRIAC HBASA ABOVE
+073B;CM;SYRIAC HBASA BELOW
+073C;CM;SYRIAC HBASA-ESASA DOTTED
+073D;CM;SYRIAC ESASA ABOVE
+073E;CM;SYRIAC ESASA BELOW
+073F;CM;SYRIAC RWAHA
+0740;CM;SYRIAC FEMININE DOT
+0741;CM;SYRIAC QUSHSHAYA
+0742;CM;SYRIAC RUKKAKHA
+0743;CM;SYRIAC TWO VERTICAL DOTS ABOVE
+0744;CM;SYRIAC TWO VERTICAL DOTS BELOW
+0745;CM;SYRIAC THREE DOTS ABOVE
+0746;CM;SYRIAC THREE DOTS BELOW
+0747;CM;SYRIAC OBLIQUE LINE ABOVE
+0748;CM;SYRIAC OBLIQUE LINE BELOW
+0749;CM;SYRIAC MUSIC
+074A;CM;SYRIAC BARREKH
+0780;AL;THAANA LETTER HAA
+0781;AL;THAANA LETTER SHAVIYANI
+0782;AL;THAANA LETTER NOONU
+0783;AL;THAANA LETTER RAA
+0784;AL;THAANA LETTER BAA
+0785;AL;THAANA LETTER LHAVIYANI
+0786;AL;THAANA LETTER KAAFU
+0787;AL;THAANA LETTER ALIFU
+0788;AL;THAANA LETTER VAAVU
+0789;AL;THAANA LETTER MEEMU
+078A;AL;THAANA LETTER FAAFU
+078B;AL;THAANA LETTER DHAALU
+078C;AL;THAANA LETTER THAA
+078D;AL;THAANA LETTER LAAMU
+078E;AL;THAANA LETTER GAAFU
+078F;AL;THAANA LETTER GNAVIYANI
+0790;AL;THAANA LETTER SEENU
+0791;AL;THAANA LETTER DAVIYANI
+0792;AL;THAANA LETTER ZAVIYANI
+0793;AL;THAANA LETTER TAVIYANI
+0794;AL;THAANA LETTER YAA
+0795;AL;THAANA LETTER PAVIYANI
+0796;AL;THAANA LETTER JAVIYANI
+0797;AL;THAANA LETTER CHAVIYANI
+0798;AL;THAANA LETTER TTAA
+0799;AL;THAANA LETTER HHAA
+079A;AL;THAANA LETTER KHAA
+079B;AL;THAANA LETTER THAALU
+079C;AL;THAANA LETTER ZAA
+079D;AL;THAANA LETTER SHEENU
+079E;AL;THAANA LETTER SAADHU
+079F;AL;THAANA LETTER DAADHU
+07A0;AL;THAANA LETTER TO
+07A1;AL;THAANA LETTER ZO
+07A2;AL;THAANA LETTER AINU
+07A3;AL;THAANA LETTER GHAINU
+07A4;AL;THAANA LETTER QAAFU
+07A5;AL;THAANA LETTER WAAVU
+07A6;CM;THAANA ABAFILI
+07A7;CM;THAANA AABAAFILI
+07A8;CM;THAANA IBIFILI
+07A9;CM;THAANA EEBEEFILI
+07AA;CM;THAANA UBUFILI
+07AB;CM;THAANA OOBOOFILI
+07AC;CM;THAANA EBEFILI
+07AD;CM;THAANA EYBEYFILI
+07AE;CM;THAANA OBOFILI
+07AF;CM;THAANA OABOAFILI
+07B0;CM;THAANA SUKUN
+0901;CM;DEVANAGARI SIGN CANDRABINDU
+0902;CM;DEVANAGARI SIGN ANUSVARA
+0903;CM;DEVANAGARI SIGN VISARGA
+0905;AL;DEVANAGARI LETTER A
+0906;AL;DEVANAGARI LETTER AA
+0907;AL;DEVANAGARI LETTER I
+0908;AL;DEVANAGARI LETTER II
+0909;AL;DEVANAGARI LETTER U
+090A;AL;DEVANAGARI LETTER UU
+090B;AL;DEVANAGARI LETTER VOCALIC R
+090C;AL;DEVANAGARI LETTER VOCALIC L
+090D;AL;DEVANAGARI LETTER CANDRA E
+090E;AL;DEVANAGARI LETTER SHORT E
+090F;AL;DEVANAGARI LETTER E
+0910;AL;DEVANAGARI LETTER AI
+0911;AL;DEVANAGARI LETTER CANDRA O
+0912;AL;DEVANAGARI LETTER SHORT O
+0913;AL;DEVANAGARI LETTER O
+0914;AL;DEVANAGARI LETTER AU
+0915;AL;DEVANAGARI LETTER KA
+0916;AL;DEVANAGARI LETTER KHA
+0917;AL;DEVANAGARI LETTER GA
+0918;AL;DEVANAGARI LETTER GHA
+0919;AL;DEVANAGARI LETTER NGA
+091A;AL;DEVANAGARI LETTER CA
+091B;AL;DEVANAGARI LETTER CHA
+091C;AL;DEVANAGARI LETTER JA
+091D;AL;DEVANAGARI LETTER JHA
+091E;AL;DEVANAGARI LETTER NYA
+091F;AL;DEVANAGARI LETTER TTA
+0920;AL;DEVANAGARI LETTER TTHA
+0921;AL;DEVANAGARI LETTER DDA
+0922;AL;DEVANAGARI LETTER DDHA
+0923;AL;DEVANAGARI LETTER NNA
+0924;AL;DEVANAGARI LETTER TA
+0925;AL;DEVANAGARI LETTER THA
+0926;AL;DEVANAGARI LETTER DA
+0927;AL;DEVANAGARI LETTER DHA
+0928;AL;DEVANAGARI LETTER NA
+0929;AL;DEVANAGARI LETTER NNNA
+092A;AL;DEVANAGARI LETTER PA
+092B;AL;DEVANAGARI LETTER PHA
+092C;AL;DEVANAGARI LETTER BA
+092D;AL;DEVANAGARI LETTER BHA
+092E;AL;DEVANAGARI LETTER MA
+092F;AL;DEVANAGARI LETTER YA
+0930;AL;DEVANAGARI LETTER RA
+0931;AL;DEVANAGARI LETTER RRA
+0932;AL;DEVANAGARI LETTER LA
+0933;AL;DEVANAGARI LETTER LLA
+0934;AL;DEVANAGARI LETTER LLLA
+0935;AL;DEVANAGARI LETTER VA
+0936;AL;DEVANAGARI LETTER SHA
+0937;AL;DEVANAGARI LETTER SSA
+0938;AL;DEVANAGARI LETTER SA
+0939;AL;DEVANAGARI LETTER HA
+093C;CM;DEVANAGARI SIGN NUKTA
+093D;AL;DEVANAGARI SIGN AVAGRAHA
+093E;CM;DEVANAGARI VOWEL SIGN AA
+093F;CM;DEVANAGARI VOWEL SIGN I
+0940;CM;DEVANAGARI VOWEL SIGN II
+0941;CM;DEVANAGARI VOWEL SIGN U
+0942;CM;DEVANAGARI VOWEL SIGN UU
+0943;CM;DEVANAGARI VOWEL SIGN VOCALIC R
+0944;CM;DEVANAGARI VOWEL SIGN VOCALIC RR
+0945;CM;DEVANAGARI VOWEL SIGN CANDRA E
+0946;CM;DEVANAGARI VOWEL SIGN SHORT E
+0947;CM;DEVANAGARI VOWEL SIGN E
+0948;CM;DEVANAGARI VOWEL SIGN AI
+0949;CM;DEVANAGARI VOWEL SIGN CANDRA O
+094A;CM;DEVANAGARI VOWEL SIGN SHORT O
+094B;CM;DEVANAGARI VOWEL SIGN O
+094C;CM;DEVANAGARI VOWEL SIGN AU
+094D;CM;DEVANAGARI SIGN VIRAMA
+0950;AL;DEVANAGARI OM
+0951;CM;DEVANAGARI STRESS SIGN UDATTA
+0952;CM;DEVANAGARI STRESS SIGN ANUDATTA
+0953;CM;DEVANAGARI GRAVE ACCENT
+0954;CM;DEVANAGARI ACUTE ACCENT
+0958;AL;DEVANAGARI LETTER QA
+0959;AL;DEVANAGARI LETTER KHHA
+095A;AL;DEVANAGARI LETTER GHHA
+095B;AL;DEVANAGARI LETTER ZA
+095C;AL;DEVANAGARI LETTER DDDHA
+095D;AL;DEVANAGARI LETTER RHA
+095E;AL;DEVANAGARI LETTER FA
+095F;AL;DEVANAGARI LETTER YYA
+0960;AL;DEVANAGARI LETTER VOCALIC RR
+0961;AL;DEVANAGARI LETTER VOCALIC LL
+0962;CM;DEVANAGARI VOWEL SIGN VOCALIC L
+0963;CM;DEVANAGARI VOWEL SIGN VOCALIC LL
+0964;AL;DEVANAGARI DANDA
+0965;AL;DEVANAGARI DOUBLE DANDA
+0966;NU;DEVANAGARI DIGIT ZERO
+0967;NU;DEVANAGARI DIGIT ONE
+0968;NU;DEVANAGARI DIGIT TWO
+0969;NU;DEVANAGARI DIGIT THREE
+096A;NU;DEVANAGARI DIGIT FOUR
+096B;NU;DEVANAGARI DIGIT FIVE
+096C;NU;DEVANAGARI DIGIT SIX
+096D;NU;DEVANAGARI DIGIT SEVEN
+096E;NU;DEVANAGARI DIGIT EIGHT
+096F;NU;DEVANAGARI DIGIT NINE
+0970;AL;DEVANAGARI ABBREVIATION SIGN
+0981;CM;BENGALI SIGN CANDRABINDU
+0982;CM;BENGALI SIGN ANUSVARA
+0983;CM;BENGALI SIGN VISARGA
+0985;AL;BENGALI LETTER A
+0986;AL;BENGALI LETTER AA
+0987;AL;BENGALI LETTER I
+0988;AL;BENGALI LETTER II
+0989;AL;BENGALI LETTER U
+098A;AL;BENGALI LETTER UU
+098B;AL;BENGALI LETTER VOCALIC R
+098C;AL;BENGALI LETTER VOCALIC L
+098F;AL;BENGALI LETTER E
+0990;AL;BENGALI LETTER AI
+0993;AL;BENGALI LETTER O
+0994;AL;BENGALI LETTER AU
+0995;AL;BENGALI LETTER KA
+0996;AL;BENGALI LETTER KHA
+0997;AL;BENGALI LETTER GA
+0998;AL;BENGALI LETTER GHA
+0999;AL;BENGALI LETTER NGA
+099A;AL;BENGALI LETTER CA
+099B;AL;BENGALI LETTER CHA
+099C;AL;BENGALI LETTER JA
+099D;AL;BENGALI LETTER JHA
+099E;AL;BENGALI LETTER NYA
+099F;AL;BENGALI LETTER TTA
+09A0;AL;BENGALI LETTER TTHA
+09A1;AL;BENGALI LETTER DDA
+09A2;AL;BENGALI LETTER DDHA
+09A3;AL;BENGALI LETTER NNA
+09A4;AL;BENGALI LETTER TA
+09A5;AL;BENGALI LETTER THA
+09A6;AL;BENGALI LETTER DA
+09A7;AL;BENGALI LETTER DHA
+09A8;AL;BENGALI LETTER NA
+09AA;AL;BENGALI LETTER PA
+09AB;AL;BENGALI LETTER PHA
+09AC;AL;BENGALI LETTER BA
+09AD;AL;BENGALI LETTER BHA
+09AE;AL;BENGALI LETTER MA
+09AF;AL;BENGALI LETTER YA
+09B0;AL;BENGALI LETTER RA
+09B2;AL;BENGALI LETTER LA
+09B6;AL;BENGALI LETTER SHA
+09B7;AL;BENGALI LETTER SSA
+09B8;AL;BENGALI LETTER SA
+09B9;AL;BENGALI LETTER HA
+09BC;CM;BENGALI SIGN NUKTA
+09BE;CM;BENGALI VOWEL SIGN AA
+09BF;CM;BENGALI VOWEL SIGN I
+09C0;CM;BENGALI VOWEL SIGN II
+09C1;CM;BENGALI VOWEL SIGN U
+09C2;CM;BENGALI VOWEL SIGN UU
+09C3;CM;BENGALI VOWEL SIGN VOCALIC R
+09C4;CM;BENGALI VOWEL SIGN VOCALIC RR
+09C7;CM;BENGALI VOWEL SIGN E
+09C8;CM;BENGALI VOWEL SIGN AI
+09CB;CM;BENGALI VOWEL SIGN O
+09CC;CM;BENGALI VOWEL SIGN AU
+09CD;CM;BENGALI SIGN VIRAMA
+09D7;CM;BENGALI AU LENGTH MARK
+09DC;AL;BENGALI LETTER RRA
+09DD;AL;BENGALI LETTER RHA
+09DF;AL;BENGALI LETTER YYA
+09E0;AL;BENGALI LETTER VOCALIC RR
+09E1;AL;BENGALI LETTER VOCALIC LL
+09E2;CM;BENGALI VOWEL SIGN VOCALIC L
+09E3;CM;BENGALI VOWEL SIGN VOCALIC LL
+09E6;NU;BENGALI DIGIT ZERO
+09E7;NU;BENGALI DIGIT ONE
+09E8;NU;BENGALI DIGIT TWO
+09E9;NU;BENGALI DIGIT THREE
+09EA;NU;BENGALI DIGIT FOUR
+09EB;NU;BENGALI DIGIT FIVE
+09EC;NU;BENGALI DIGIT SIX
+09ED;NU;BENGALI DIGIT SEVEN
+09EE;NU;BENGALI DIGIT EIGHT
+09EF;NU;BENGALI DIGIT NINE
+09F0;AL;BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09F1;AL;BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2;PR;BENGALI RUPEE MARK
+09F3;PR;BENGALI RUPEE SIGN
+09F4;AL;BENGALI CURRENCY NUMERATOR ONE
+09F5;AL;BENGALI CURRENCY NUMERATOR TWO
+09F6;AL;BENGALI CURRENCY NUMERATOR THREE
+09F7;AL;BENGALI CURRENCY NUMERATOR FOUR
+09F8;AL;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9;AL;BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA;AL;BENGALI ISSHAR
+0A02;CM;GURMUKHI SIGN BINDI
+0A05;AL;GURMUKHI LETTER A
+0A06;AL;GURMUKHI LETTER AA
+0A07;AL;GURMUKHI LETTER I
+0A08;AL;GURMUKHI LETTER II
+0A09;AL;GURMUKHI LETTER U
+0A0A;AL;GURMUKHI LETTER UU
+0A0F;AL;GURMUKHI LETTER EE
+0A10;AL;GURMUKHI LETTER AI
+0A13;AL;GURMUKHI LETTER OO
+0A14;AL;GURMUKHI LETTER AU
+0A15;AL;GURMUKHI LETTER KA
+0A16;AL;GURMUKHI LETTER KHA
+0A17;AL;GURMUKHI LETTER GA
+0A18;AL;GURMUKHI LETTER GHA
+0A19;AL;GURMUKHI LETTER NGA
+0A1A;AL;GURMUKHI LETTER CA
+0A1B;AL;GURMUKHI LETTER CHA
+0A1C;AL;GURMUKHI LETTER JA
+0A1D;AL;GURMUKHI LETTER JHA
+0A1E;AL;GURMUKHI LETTER NYA
+0A1F;AL;GURMUKHI LETTER TTA
+0A20;AL;GURMUKHI LETTER TTHA
+0A21;AL;GURMUKHI LETTER DDA
+0A22;AL;GURMUKHI LETTER DDHA
+0A23;AL;GURMUKHI LETTER NNA
+0A24;AL;GURMUKHI LETTER TA
+0A25;AL;GURMUKHI LETTER THA
+0A26;AL;GURMUKHI LETTER DA
+0A27;AL;GURMUKHI LETTER DHA
+0A28;AL;GURMUKHI LETTER NA
+0A2A;AL;GURMUKHI LETTER PA
+0A2B;AL;GURMUKHI LETTER PHA
+0A2C;AL;GURMUKHI LETTER BA
+0A2D;AL;GURMUKHI LETTER BHA
+0A2E;AL;GURMUKHI LETTER MA
+0A2F;AL;GURMUKHI LETTER YA
+0A30;AL;GURMUKHI LETTER RA
+0A32;AL;GURMUKHI LETTER LA
+0A33;AL;GURMUKHI LETTER LLA
+0A35;AL;GURMUKHI LETTER VA
+0A36;AL;GURMUKHI LETTER SHA
+0A38;AL;GURMUKHI LETTER SA
+0A39;AL;GURMUKHI LETTER HA
+0A3C;CM;GURMUKHI SIGN NUKTA
+0A3E;CM;GURMUKHI VOWEL SIGN AA
+0A3F;CM;GURMUKHI VOWEL SIGN I
+0A40;CM;GURMUKHI VOWEL SIGN II
+0A41;CM;GURMUKHI VOWEL SIGN U
+0A42;CM;GURMUKHI VOWEL SIGN UU
+0A47;CM;GURMUKHI VOWEL SIGN EE
+0A48;CM;GURMUKHI VOWEL SIGN AI
+0A4B;CM;GURMUKHI VOWEL SIGN OO
+0A4C;CM;GURMUKHI VOWEL SIGN AU
+0A4D;CM;GURMUKHI SIGN VIRAMA
+0A59;AL;GURMUKHI LETTER KHHA
+0A5A;AL;GURMUKHI LETTER GHHA
+0A5B;AL;GURMUKHI LETTER ZA
+0A5C;AL;GURMUKHI LETTER RRA
+0A5E;AL;GURMUKHI LETTER FA
+0A66;NU;GURMUKHI DIGIT ZERO
+0A67;NU;GURMUKHI DIGIT ONE
+0A68;NU;GURMUKHI DIGIT TWO
+0A69;NU;GURMUKHI DIGIT THREE
+0A6A;NU;GURMUKHI DIGIT FOUR
+0A6B;NU;GURMUKHI DIGIT FIVE
+0A6C;NU;GURMUKHI DIGIT SIX
+0A6D;NU;GURMUKHI DIGIT SEVEN
+0A6E;NU;GURMUKHI DIGIT EIGHT
+0A6F;NU;GURMUKHI DIGIT NINE
+0A70;CM;GURMUKHI TIPPI
+0A71;CM;GURMUKHI ADDAK
+0A72;AL;GURMUKHI IRI
+0A73;AL;GURMUKHI URA
+0A74;AL;GURMUKHI EK ONKAR
+0A81;CM;GUJARATI SIGN CANDRABINDU
+0A82;CM;GUJARATI SIGN ANUSVARA
+0A83;CM;GUJARATI SIGN VISARGA
+0A85;AL;GUJARATI LETTER A
+0A86;AL;GUJARATI LETTER AA
+0A87;AL;GUJARATI LETTER I
+0A88;AL;GUJARATI LETTER II
+0A89;AL;GUJARATI LETTER U
+0A8A;AL;GUJARATI LETTER UU
+0A8B;AL;GUJARATI LETTER VOCALIC R
+0A8D;AL;GUJARATI VOWEL CANDRA E
+0A8F;AL;GUJARATI LETTER E
+0A90;AL;GUJARATI LETTER AI
+0A91;AL;GUJARATI VOWEL CANDRA O
+0A93;AL;GUJARATI LETTER O
+0A94;AL;GUJARATI LETTER AU
+0A95;AL;GUJARATI LETTER KA
+0A96;AL;GUJARATI LETTER KHA
+0A97;AL;GUJARATI LETTER GA
+0A98;AL;GUJARATI LETTER GHA
+0A99;AL;GUJARATI LETTER NGA
+0A9A;AL;GUJARATI LETTER CA
+0A9B;AL;GUJARATI LETTER CHA
+0A9C;AL;GUJARATI LETTER JA
+0A9D;AL;GUJARATI LETTER JHA
+0A9E;AL;GUJARATI LETTER NYA
+0A9F;AL;GUJARATI LETTER TTA
+0AA0;AL;GUJARATI LETTER TTHA
+0AA1;AL;GUJARATI LETTER DDA
+0AA2;AL;GUJARATI LETTER DDHA
+0AA3;AL;GUJARATI LETTER NNA
+0AA4;AL;GUJARATI LETTER TA
+0AA5;AL;GUJARATI LETTER THA
+0AA6;AL;GUJARATI LETTER DA
+0AA7;AL;GUJARATI LETTER DHA
+0AA8;AL;GUJARATI LETTER NA
+0AAA;AL;GUJARATI LETTER PA
+0AAB;AL;GUJARATI LETTER PHA
+0AAC;AL;GUJARATI LETTER BA
+0AAD;AL;GUJARATI LETTER BHA
+0AAE;AL;GUJARATI LETTER MA
+0AAF;AL;GUJARATI LETTER YA
+0AB0;AL;GUJARATI LETTER RA
+0AB2;AL;GUJARATI LETTER LA
+0AB3;AL;GUJARATI LETTER LLA
+0AB5;AL;GUJARATI LETTER VA
+0AB6;AL;GUJARATI LETTER SHA
+0AB7;AL;GUJARATI LETTER SSA
+0AB8;AL;GUJARATI LETTER SA
+0AB9;AL;GUJARATI LETTER HA
+0ABC;CM;GUJARATI SIGN NUKTA
+0ABD;AL;GUJARATI SIGN AVAGRAHA
+0ABE;CM;GUJARATI VOWEL SIGN AA
+0ABF;CM;GUJARATI VOWEL SIGN I
+0AC0;CM;GUJARATI VOWEL SIGN II
+0AC1;CM;GUJARATI VOWEL SIGN U
+0AC2;CM;GUJARATI VOWEL SIGN UU
+0AC3;CM;GUJARATI VOWEL SIGN VOCALIC R
+0AC4;CM;GUJARATI VOWEL SIGN VOCALIC RR
+0AC5;CM;GUJARATI VOWEL SIGN CANDRA E
+0AC7;CM;GUJARATI VOWEL SIGN E
+0AC8;CM;GUJARATI VOWEL SIGN AI
+0AC9;CM;GUJARATI VOWEL SIGN CANDRA O
+0ACB;CM;GUJARATI VOWEL SIGN O
+0ACC;CM;GUJARATI VOWEL SIGN AU
+0ACD;CM;GUJARATI SIGN VIRAMA
+0AD0;AL;GUJARATI OM
+0AE0;AL;GUJARATI LETTER VOCALIC RR
+0AE6;NU;GUJARATI DIGIT ZERO
+0AE7;NU;GUJARATI DIGIT ONE
+0AE8;NU;GUJARATI DIGIT TWO
+0AE9;NU;GUJARATI DIGIT THREE
+0AEA;NU;GUJARATI DIGIT FOUR
+0AEB;NU;GUJARATI DIGIT FIVE
+0AEC;NU;GUJARATI DIGIT SIX
+0AED;NU;GUJARATI DIGIT SEVEN
+0AEE;NU;GUJARATI DIGIT EIGHT
+0AEF;NU;GUJARATI DIGIT NINE
+0B01;CM;ORIYA SIGN CANDRABINDU
+0B02;CM;ORIYA SIGN ANUSVARA
+0B03;CM;ORIYA SIGN VISARGA
+0B05;AL;ORIYA LETTER A
+0B06;AL;ORIYA LETTER AA
+0B07;AL;ORIYA LETTER I
+0B08;AL;ORIYA LETTER II
+0B09;AL;ORIYA LETTER U
+0B0A;AL;ORIYA LETTER UU
+0B0B;AL;ORIYA LETTER VOCALIC R
+0B0C;AL;ORIYA LETTER VOCALIC L
+0B0F;AL;ORIYA LETTER E
+0B10;AL;ORIYA LETTER AI
+0B13;AL;ORIYA LETTER O
+0B14;AL;ORIYA LETTER AU
+0B15;AL;ORIYA LETTER KA
+0B16;AL;ORIYA LETTER KHA
+0B17;AL;ORIYA LETTER GA
+0B18;AL;ORIYA LETTER GHA
+0B19;AL;ORIYA LETTER NGA
+0B1A;AL;ORIYA LETTER CA
+0B1B;AL;ORIYA LETTER CHA
+0B1C;AL;ORIYA LETTER JA
+0B1D;AL;ORIYA LETTER JHA
+0B1E;AL;ORIYA LETTER NYA
+0B1F;AL;ORIYA LETTER TTA
+0B20;AL;ORIYA LETTER TTHA
+0B21;AL;ORIYA LETTER DDA
+0B22;AL;ORIYA LETTER DDHA
+0B23;AL;ORIYA LETTER NNA
+0B24;AL;ORIYA LETTER TA
+0B25;AL;ORIYA LETTER THA
+0B26;AL;ORIYA LETTER DA
+0B27;AL;ORIYA LETTER DHA
+0B28;AL;ORIYA LETTER NA
+0B2A;AL;ORIYA LETTER PA
+0B2B;AL;ORIYA LETTER PHA
+0B2C;AL;ORIYA LETTER BA
+0B2D;AL;ORIYA LETTER BHA
+0B2E;AL;ORIYA LETTER MA
+0B2F;AL;ORIYA LETTER YA
+0B30;AL;ORIYA LETTER RA
+0B32;AL;ORIYA LETTER LA
+0B33;AL;ORIYA LETTER LLA
+0B36;AL;ORIYA LETTER SHA
+0B37;AL;ORIYA LETTER SSA
+0B38;AL;ORIYA LETTER SA
+0B39;AL;ORIYA LETTER HA
+0B3C;CM;ORIYA SIGN NUKTA
+0B3D;AL;ORIYA SIGN AVAGRAHA
+0B3E;CM;ORIYA VOWEL SIGN AA
+0B3F;CM;ORIYA VOWEL SIGN I
+0B40;CM;ORIYA VOWEL SIGN II
+0B41;CM;ORIYA VOWEL SIGN U
+0B42;CM;ORIYA VOWEL SIGN UU
+0B43;CM;ORIYA VOWEL SIGN VOCALIC R
+0B47;CM;ORIYA VOWEL SIGN E
+0B48;CM;ORIYA VOWEL SIGN AI
+0B4B;CM;ORIYA VOWEL SIGN O
+0B4C;CM;ORIYA VOWEL SIGN AU
+0B4D;CM;ORIYA SIGN VIRAMA
+0B56;CM;ORIYA AI LENGTH MARK
+0B57;CM;ORIYA AU LENGTH MARK
+0B5C;AL;ORIYA LETTER RRA
+0B5D;AL;ORIYA LETTER RHA
+0B5F;AL;ORIYA LETTER YYA
+0B60;AL;ORIYA LETTER VOCALIC RR
+0B61;AL;ORIYA LETTER VOCALIC LL
+0B66;NU;ORIYA DIGIT ZERO
+0B67;NU;ORIYA DIGIT ONE
+0B68;NU;ORIYA DIGIT TWO
+0B69;NU;ORIYA DIGIT THREE
+0B6A;NU;ORIYA DIGIT FOUR
+0B6B;NU;ORIYA DIGIT FIVE
+0B6C;NU;ORIYA DIGIT SIX
+0B6D;NU;ORIYA DIGIT SEVEN
+0B6E;NU;ORIYA DIGIT EIGHT
+0B6F;NU;ORIYA DIGIT NINE
+0B70;AL;ORIYA ISSHAR
+0B82;CM;TAMIL SIGN ANUSVARA
+0B83;CM;TAMIL SIGN VISARGA
+0B85;AL;TAMIL LETTER A
+0B86;AL;TAMIL LETTER AA
+0B87;AL;TAMIL LETTER I
+0B88;AL;TAMIL LETTER II
+0B89;AL;TAMIL LETTER U
+0B8A;AL;TAMIL LETTER UU
+0B8E;AL;TAMIL LETTER E
+0B8F;AL;TAMIL LETTER EE
+0B90;AL;TAMIL LETTER AI
+0B92;AL;TAMIL LETTER O
+0B93;AL;TAMIL LETTER OO
+0B94;AL;TAMIL LETTER AU
+0B95;AL;TAMIL LETTER KA
+0B99;AL;TAMIL LETTER NGA
+0B9A;AL;TAMIL LETTER CA
+0B9C;AL;TAMIL LETTER JA
+0B9E;AL;TAMIL LETTER NYA
+0B9F;AL;TAMIL LETTER TTA
+0BA3;AL;TAMIL LETTER NNA
+0BA4;AL;TAMIL LETTER TA
+0BA8;AL;TAMIL LETTER NA
+0BA9;AL;TAMIL LETTER NNNA
+0BAA;AL;TAMIL LETTER PA
+0BAE;AL;TAMIL LETTER MA
+0BAF;AL;TAMIL LETTER YA
+0BB0;AL;TAMIL LETTER RA
+0BB1;AL;TAMIL LETTER RRA
+0BB2;AL;TAMIL LETTER LA
+0BB3;AL;TAMIL LETTER LLA
+0BB4;AL;TAMIL LETTER LLLA
+0BB5;AL;TAMIL LETTER VA
+0BB7;AL;TAMIL LETTER SSA
+0BB8;AL;TAMIL LETTER SA
+0BB9;AL;TAMIL LETTER HA
+0BBE;CM;TAMIL VOWEL SIGN AA
+0BBF;CM;TAMIL VOWEL SIGN I
+0BC0;CM;TAMIL VOWEL SIGN II
+0BC1;CM;TAMIL VOWEL SIGN U
+0BC2;CM;TAMIL VOWEL SIGN UU
+0BC6;CM;TAMIL VOWEL SIGN E
+0BC7;CM;TAMIL VOWEL SIGN EE
+0BC8;CM;TAMIL VOWEL SIGN AI
+0BCA;CM;TAMIL VOWEL SIGN O
+0BCB;CM;TAMIL VOWEL SIGN OO
+0BCC;CM;TAMIL VOWEL SIGN AU
+0BCD;CM;TAMIL SIGN VIRAMA
+0BD7;CM;TAMIL AU LENGTH MARK
+0BE7;NU;TAMIL DIGIT ONE
+0BE8;NU;TAMIL DIGIT TWO
+0BE9;NU;TAMIL DIGIT THREE
+0BEA;NU;TAMIL DIGIT FOUR
+0BEB;NU;TAMIL DIGIT FIVE
+0BEC;NU;TAMIL DIGIT SIX
+0BED;NU;TAMIL DIGIT SEVEN
+0BEE;NU;TAMIL DIGIT EIGHT
+0BEF;NU;TAMIL DIGIT NINE
+0BF0;AL;TAMIL NUMBER TEN
+0BF1;AL;TAMIL NUMBER ONE HUNDRED
+0BF2;AL;TAMIL NUMBER ONE THOUSAND
+0C01;CM;TELUGU SIGN CANDRABINDU
+0C02;CM;TELUGU SIGN ANUSVARA
+0C03;CM;TELUGU SIGN VISARGA
+0C05;AL;TELUGU LETTER A
+0C06;AL;TELUGU LETTER AA
+0C07;AL;TELUGU LETTER I
+0C08;AL;TELUGU LETTER II
+0C09;AL;TELUGU LETTER U
+0C0A;AL;TELUGU LETTER UU
+0C0B;AL;TELUGU LETTER VOCALIC R
+0C0C;AL;TELUGU LETTER VOCALIC L
+0C0E;AL;TELUGU LETTER E
+0C0F;AL;TELUGU LETTER EE
+0C10;AL;TELUGU LETTER AI
+0C12;AL;TELUGU LETTER O
+0C13;AL;TELUGU LETTER OO
+0C14;AL;TELUGU LETTER AU
+0C15;AL;TELUGU LETTER KA
+0C16;AL;TELUGU LETTER KHA
+0C17;AL;TELUGU LETTER GA
+0C18;AL;TELUGU LETTER GHA
+0C19;AL;TELUGU LETTER NGA
+0C1A;AL;TELUGU LETTER CA
+0C1B;AL;TELUGU LETTER CHA
+0C1C;AL;TELUGU LETTER JA
+0C1D;AL;TELUGU LETTER JHA
+0C1E;AL;TELUGU LETTER NYA
+0C1F;AL;TELUGU LETTER TTA
+0C20;AL;TELUGU LETTER TTHA
+0C21;AL;TELUGU LETTER DDA
+0C22;AL;TELUGU LETTER DDHA
+0C23;AL;TELUGU LETTER NNA
+0C24;AL;TELUGU LETTER TA
+0C25;AL;TELUGU LETTER THA
+0C26;AL;TELUGU LETTER DA
+0C27;AL;TELUGU LETTER DHA
+0C28;AL;TELUGU LETTER NA
+0C2A;AL;TELUGU LETTER PA
+0C2B;AL;TELUGU LETTER PHA
+0C2C;AL;TELUGU LETTER BA
+0C2D;AL;TELUGU LETTER BHA
+0C2E;AL;TELUGU LETTER MA
+0C2F;AL;TELUGU LETTER YA
+0C30;AL;TELUGU LETTER RA
+0C31;AL;TELUGU LETTER RRA
+0C32;AL;TELUGU LETTER LA
+0C33;AL;TELUGU LETTER LLA
+0C35;AL;TELUGU LETTER VA
+0C36;AL;TELUGU LETTER SHA
+0C37;AL;TELUGU LETTER SSA
+0C38;AL;TELUGU LETTER SA
+0C39;AL;TELUGU LETTER HA
+0C3E;CM;TELUGU VOWEL SIGN AA
+0C3F;CM;TELUGU VOWEL SIGN I
+0C40;CM;TELUGU VOWEL SIGN II
+0C41;CM;TELUGU VOWEL SIGN U
+0C42;CM;TELUGU VOWEL SIGN UU
+0C43;CM;TELUGU VOWEL SIGN VOCALIC R
+0C44;CM;TELUGU VOWEL SIGN VOCALIC RR
+0C46;CM;TELUGU VOWEL SIGN E
+0C47;CM;TELUGU VOWEL SIGN EE
+0C48;CM;TELUGU VOWEL SIGN AI
+0C4A;CM;TELUGU VOWEL SIGN O
+0C4B;CM;TELUGU VOWEL SIGN OO
+0C4C;CM;TELUGU VOWEL SIGN AU
+0C4D;CM;TELUGU SIGN VIRAMA
+0C55;CM;TELUGU LENGTH MARK
+0C56;CM;TELUGU AI LENGTH MARK
+0C60;AL;TELUGU LETTER VOCALIC RR
+0C61;AL;TELUGU LETTER VOCALIC LL
+0C66;NU;TELUGU DIGIT ZERO
+0C67;NU;TELUGU DIGIT ONE
+0C68;NU;TELUGU DIGIT TWO
+0C69;NU;TELUGU DIGIT THREE
+0C6A;NU;TELUGU DIGIT FOUR
+0C6B;NU;TELUGU DIGIT FIVE
+0C6C;NU;TELUGU DIGIT SIX
+0C6D;NU;TELUGU DIGIT SEVEN
+0C6E;NU;TELUGU DIGIT EIGHT
+0C6F;NU;TELUGU DIGIT NINE
+0C82;CM;KANNADA SIGN ANUSVARA
+0C83;CM;KANNADA SIGN VISARGA
+0C85;AL;KANNADA LETTER A
+0C86;AL;KANNADA LETTER AA
+0C87;AL;KANNADA LETTER I
+0C88;AL;KANNADA LETTER II
+0C89;AL;KANNADA LETTER U
+0C8A;AL;KANNADA LETTER UU
+0C8B;AL;KANNADA LETTER VOCALIC R
+0C8C;AL;KANNADA LETTER VOCALIC L
+0C8E;AL;KANNADA LETTER E
+0C8F;AL;KANNADA LETTER EE
+0C90;AL;KANNADA LETTER AI
+0C92;AL;KANNADA LETTER O
+0C93;AL;KANNADA LETTER OO
+0C94;AL;KANNADA LETTER AU
+0C95;AL;KANNADA LETTER KA
+0C96;AL;KANNADA LETTER KHA
+0C97;AL;KANNADA LETTER GA
+0C98;AL;KANNADA LETTER GHA
+0C99;AL;KANNADA LETTER NGA
+0C9A;AL;KANNADA LETTER CA
+0C9B;AL;KANNADA LETTER CHA
+0C9C;AL;KANNADA LETTER JA
+0C9D;AL;KANNADA LETTER JHA
+0C9E;AL;KANNADA LETTER NYA
+0C9F;AL;KANNADA LETTER TTA
+0CA0;AL;KANNADA LETTER TTHA
+0CA1;AL;KANNADA LETTER DDA
+0CA2;AL;KANNADA LETTER DDHA
+0CA3;AL;KANNADA LETTER NNA
+0CA4;AL;KANNADA LETTER TA
+0CA5;AL;KANNADA LETTER THA
+0CA6;AL;KANNADA LETTER DA
+0CA7;AL;KANNADA LETTER DHA
+0CA8;AL;KANNADA LETTER NA
+0CAA;AL;KANNADA LETTER PA
+0CAB;AL;KANNADA LETTER PHA
+0CAC;AL;KANNADA LETTER BA
+0CAD;AL;KANNADA LETTER BHA
+0CAE;AL;KANNADA LETTER MA
+0CAF;AL;KANNADA LETTER YA
+0CB0;AL;KANNADA LETTER RA
+0CB1;AL;KANNADA LETTER RRA
+0CB2;AL;KANNADA LETTER LA
+0CB3;AL;KANNADA LETTER LLA
+0CB5;AL;KANNADA LETTER VA
+0CB6;AL;KANNADA LETTER SHA
+0CB7;AL;KANNADA LETTER SSA
+0CB8;AL;KANNADA LETTER SA
+0CB9;AL;KANNADA LETTER HA
+0CBE;CM;KANNADA VOWEL SIGN AA
+0CBF;CM;KANNADA VOWEL SIGN I
+0CC0;CM;KANNADA VOWEL SIGN II
+0CC1;CM;KANNADA VOWEL SIGN U
+0CC2;CM;KANNADA VOWEL SIGN UU
+0CC3;CM;KANNADA VOWEL SIGN VOCALIC R
+0CC4;CM;KANNADA VOWEL SIGN VOCALIC RR
+0CC6;CM;KANNADA VOWEL SIGN E
+0CC7;CM;KANNADA VOWEL SIGN EE
+0CC8;CM;KANNADA VOWEL SIGN AI
+0CCA;CM;KANNADA VOWEL SIGN O
+0CCB;CM;KANNADA VOWEL SIGN OO
+0CCC;CM;KANNADA VOWEL SIGN AU
+0CCD;CM;KANNADA SIGN VIRAMA
+0CD5;CM;KANNADA LENGTH MARK
+0CD6;CM;KANNADA AI LENGTH MARK
+0CDE;AL;KANNADA LETTER FA
+0CE0;AL;KANNADA LETTER VOCALIC RR
+0CE1;AL;KANNADA LETTER VOCALIC LL
+0CE6;NU;KANNADA DIGIT ZERO
+0CE7;NU;KANNADA DIGIT ONE
+0CE8;NU;KANNADA DIGIT TWO
+0CE9;NU;KANNADA DIGIT THREE
+0CEA;NU;KANNADA DIGIT FOUR
+0CEB;NU;KANNADA DIGIT FIVE
+0CEC;NU;KANNADA DIGIT SIX
+0CED;NU;KANNADA DIGIT SEVEN
+0CEE;NU;KANNADA DIGIT EIGHT
+0CEF;NU;KANNADA DIGIT NINE
+0D02;CM;MALAYALAM SIGN ANUSVARA
+0D03;CM;MALAYALAM SIGN VISARGA
+0D05;AL;MALAYALAM LETTER A
+0D06;AL;MALAYALAM LETTER AA
+0D07;AL;MALAYALAM LETTER I
+0D08;AL;MALAYALAM LETTER II
+0D09;AL;MALAYALAM LETTER U
+0D0A;AL;MALAYALAM LETTER UU
+0D0B;AL;MALAYALAM LETTER VOCALIC R
+0D0C;AL;MALAYALAM LETTER VOCALIC L
+0D0E;AL;MALAYALAM LETTER E
+0D0F;AL;MALAYALAM LETTER EE
+0D10;AL;MALAYALAM LETTER AI
+0D12;AL;MALAYALAM LETTER O
+0D13;AL;MALAYALAM LETTER OO
+0D14;AL;MALAYALAM LETTER AU
+0D15;AL;MALAYALAM LETTER KA
+0D16;AL;MALAYALAM LETTER KHA
+0D17;AL;MALAYALAM LETTER GA
+0D18;AL;MALAYALAM LETTER GHA
+0D19;AL;MALAYALAM LETTER NGA
+0D1A;AL;MALAYALAM LETTER CA
+0D1B;AL;MALAYALAM LETTER CHA
+0D1C;AL;MALAYALAM LETTER JA
+0D1D;AL;MALAYALAM LETTER JHA
+0D1E;AL;MALAYALAM LETTER NYA
+0D1F;AL;MALAYALAM LETTER TTA
+0D20;AL;MALAYALAM LETTER TTHA
+0D21;AL;MALAYALAM LETTER DDA
+0D22;AL;MALAYALAM LETTER DDHA
+0D23;AL;MALAYALAM LETTER NNA
+0D24;AL;MALAYALAM LETTER TA
+0D25;AL;MALAYALAM LETTER THA
+0D26;AL;MALAYALAM LETTER DA
+0D27;AL;MALAYALAM LETTER DHA
+0D28;AL;MALAYALAM LETTER NA
+0D2A;AL;MALAYALAM LETTER PA
+0D2B;AL;MALAYALAM LETTER PHA
+0D2C;AL;MALAYALAM LETTER BA
+0D2D;AL;MALAYALAM LETTER BHA
+0D2E;AL;MALAYALAM LETTER MA
+0D2F;AL;MALAYALAM LETTER YA
+0D30;AL;MALAYALAM LETTER RA
+0D31;AL;MALAYALAM LETTER RRA
+0D32;AL;MALAYALAM LETTER LA
+0D33;AL;MALAYALAM LETTER LLA
+0D34;AL;MALAYALAM LETTER LLLA
+0D35;AL;MALAYALAM LETTER VA
+0D36;AL;MALAYALAM LETTER SHA
+0D37;AL;MALAYALAM LETTER SSA
+0D38;AL;MALAYALAM LETTER SA
+0D39;AL;MALAYALAM LETTER HA
+0D3E;CM;MALAYALAM VOWEL SIGN AA
+0D3F;CM;MALAYALAM VOWEL SIGN I
+0D40;CM;MALAYALAM VOWEL SIGN II
+0D41;CM;MALAYALAM VOWEL SIGN U
+0D42;CM;MALAYALAM VOWEL SIGN UU
+0D43;CM;MALAYALAM VOWEL SIGN VOCALIC R
+0D46;CM;MALAYALAM VOWEL SIGN E
+0D47;CM;MALAYALAM VOWEL SIGN EE
+0D48;CM;MALAYALAM VOWEL SIGN AI
+0D4A;CM;MALAYALAM VOWEL SIGN O
+0D4B;CM;MALAYALAM VOWEL SIGN OO
+0D4C;CM;MALAYALAM VOWEL SIGN AU
+0D4D;CM;MALAYALAM SIGN VIRAMA
+0D57;CM;MALAYALAM AU LENGTH MARK
+0D60;AL;MALAYALAM LETTER VOCALIC RR
+0D61;AL;MALAYALAM LETTER VOCALIC LL
+0D66;NU;MALAYALAM DIGIT ZERO
+0D67;NU;MALAYALAM DIGIT ONE
+0D68;NU;MALAYALAM DIGIT TWO
+0D69;NU;MALAYALAM DIGIT THREE
+0D6A;NU;MALAYALAM DIGIT FOUR
+0D6B;NU;MALAYALAM DIGIT FIVE
+0D6C;NU;MALAYALAM DIGIT SIX
+0D6D;NU;MALAYALAM DIGIT SEVEN
+0D6E;NU;MALAYALAM DIGIT EIGHT
+0D6F;NU;MALAYALAM DIGIT NINE
+0D82;CM;SINHALA SIGN ANUSVARAYA
+0D83;CM;SINHALA SIGN VISARGAYA
+0D85;AL;SINHALA LETTER AYANNA
+0D86;AL;SINHALA LETTER AAYANNA
+0D87;AL;SINHALA LETTER AEYANNA
+0D88;AL;SINHALA LETTER AEEYANNA
+0D89;AL;SINHALA LETTER IYANNA
+0D8A;AL;SINHALA LETTER IIYANNA
+0D8B;AL;SINHALA LETTER UYANNA
+0D8C;AL;SINHALA LETTER UUYANNA
+0D8D;AL;SINHALA LETTER IRUYANNA
+0D8E;AL;SINHALA LETTER IRUUYANNA
+0D8F;AL;SINHALA LETTER ILUYANNA
+0D90;AL;SINHALA LETTER ILUUYANNA
+0D91;AL;SINHALA LETTER EYANNA
+0D92;AL;SINHALA LETTER EEYANNA
+0D93;AL;SINHALA LETTER AIYANNA
+0D94;AL;SINHALA LETTER OYANNA
+0D95;AL;SINHALA LETTER OOYANNA
+0D96;AL;SINHALA LETTER AUYANNA
+0D9A;AL;SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B;AL;SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C;AL;SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D;AL;SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E;AL;SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F;AL;SINHALA LETTER SANYAKA GAYANNA
+0DA0;AL;SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1;AL;SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2;AL;SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3;AL;SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4;AL;SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5;AL;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6;AL;SINHALA LETTER SANYAKA JAYANNA
+0DA7;AL;SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8;AL;SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9;AL;SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA;AL;SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB;AL;SINHALA LETTER MUURDHAJA NAYANNA
+0DAC;AL;SINHALA LETTER SANYAKA DDAYANNA
+0DAD;AL;SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE;AL;SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF;AL;SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0;AL;SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1;AL;SINHALA LETTER DANTAJA NAYANNA
+0DB3;AL;SINHALA LETTER SANYAKA DAYANNA
+0DB4;AL;SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5;AL;SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6;AL;SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7;AL;SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8;AL;SINHALA LETTER MAYANNA
+0DB9;AL;SINHALA LETTER AMBA BAYANNA
+0DBA;AL;SINHALA LETTER YAYANNA
+0DBB;AL;SINHALA LETTER RAYANNA
+0DBD;AL;SINHALA LETTER DANTAJA LAYANNA
+0DC0;AL;SINHALA LETTER VAYANNA
+0DC1;AL;SINHALA LETTER TAALUJA SAYANNA
+0DC2;AL;SINHALA LETTER MUURDHAJA SAYANNA
+0DC3;AL;SINHALA LETTER DANTAJA SAYANNA
+0DC4;AL;SINHALA LETTER HAYANNA
+0DC5;AL;SINHALA LETTER MUURDHAJA LAYANNA
+0DC6;AL;SINHALA LETTER FAYANNA
+0DCA;CM;SINHALA SIGN AL-LAKUNA
+0DCF;CM;SINHALA VOWEL SIGN AELA-PILLA
+0DD0;CM;SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1;CM;SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2;CM;SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3;CM;SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4;CM;SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6;CM;SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8;CM;SINHALA VOWEL SIGN GAETTA-PILLA
+0DD9;CM;SINHALA VOWEL SIGN KOMBUVA
+0DDA;CM;SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB;CM;SINHALA VOWEL SIGN KOMBU DEKA
+0DDC;CM;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;CM;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;CM;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DDF;CM;SINHALA VOWEL SIGN GAYANUKITTA
+0DF2;CM;SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DF3;CM;SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4;AL;SINHALA PUNCTUATION KUNDDALIYA
+0E01;SA;THAI CHARACTER KO KAI
+0E02;SA;THAI CHARACTER KHO KHAI
+0E03;SA;THAI CHARACTER KHO KHUAT
+0E04;SA;THAI CHARACTER KHO KHWAI
+0E05;SA;THAI CHARACTER KHO KHON
+0E06;SA;THAI CHARACTER KHO RAKHANG
+0E07;SA;THAI CHARACTER NGO NGU
+0E08;SA;THAI CHARACTER CHO CHAN
+0E09;SA;THAI CHARACTER CHO CHING
+0E0A;SA;THAI CHARACTER CHO CHANG
+0E0B;SA;THAI CHARACTER SO SO
+0E0C;SA;THAI CHARACTER CHO CHOE
+0E0D;SA;THAI CHARACTER YO YING
+0E0E;SA;THAI CHARACTER DO CHADA
+0E0F;SA;THAI CHARACTER TO PATAK
+0E10;SA;THAI CHARACTER THO THAN
+0E11;SA;THAI CHARACTER THO NANGMONTHO
+0E12;SA;THAI CHARACTER THO PHUTHAO
+0E13;SA;THAI CHARACTER NO NEN
+0E14;SA;THAI CHARACTER DO DEK
+0E15;SA;THAI CHARACTER TO TAO
+0E16;SA;THAI CHARACTER THO THUNG
+0E17;SA;THAI CHARACTER THO THAHAN
+0E18;SA;THAI CHARACTER THO THONG
+0E19;SA;THAI CHARACTER NO NU
+0E1A;SA;THAI CHARACTER BO BAIMAI
+0E1B;SA;THAI CHARACTER PO PLA
+0E1C;SA;THAI CHARACTER PHO PHUNG
+0E1D;SA;THAI CHARACTER FO FA
+0E1E;SA;THAI CHARACTER PHO PHAN
+0E1F;SA;THAI CHARACTER FO FAN
+0E20;SA;THAI CHARACTER PHO SAMPHAO
+0E21;SA;THAI CHARACTER MO MA
+0E22;SA;THAI CHARACTER YO YAK
+0E23;SA;THAI CHARACTER RO RUA
+0E24;SA;THAI CHARACTER RU
+0E25;SA;THAI CHARACTER LO LING
+0E26;SA;THAI CHARACTER LU
+0E27;SA;THAI CHARACTER WO WAEN
+0E28;SA;THAI CHARACTER SO SALA
+0E29;SA;THAI CHARACTER SO RUSI
+0E2A;SA;THAI CHARACTER SO SUA
+0E2B;SA;THAI CHARACTER HO HIP
+0E2C;SA;THAI CHARACTER LO CHULA
+0E2D;SA;THAI CHARACTER O ANG
+0E2E;SA;THAI CHARACTER HO NOKHUK
+0E2F;SA;THAI CHARACTER PAIYANNOI
+0E30;SA;THAI CHARACTER SARA A
+0E31;CM;THAI CHARACTER MAI HAN-AKAT
+0E32;SA;THAI CHARACTER SARA AA
+0E33;SA;THAI CHARACTER SARA AM
+0E34;CM;THAI CHARACTER SARA I
+0E35;CM;THAI CHARACTER SARA II
+0E36;CM;THAI CHARACTER SARA UE
+0E37;CM;THAI CHARACTER SARA UEE
+0E38;CM;THAI CHARACTER SARA U
+0E39;CM;THAI CHARACTER SARA UU
+0E3A;CM;THAI CHARACTER PHINTHU
+0E3F;PR;THAI CURRENCY SYMBOL BAHT
+0E40;SA;THAI CHARACTER SARA E
+0E41;SA;THAI CHARACTER SARA AE
+0E42;SA;THAI CHARACTER SARA O
+0E43;SA;THAI CHARACTER SARA AI MAIMUAN
+0E44;SA;THAI CHARACTER SARA AI MAIMALAI
+0E45;SA;THAI CHARACTER LAKKHANGYAO
+0E46;SA;THAI CHARACTER MAIYAMOK
+0E47;CM;THAI CHARACTER MAITAIKHU
+0E48;CM;THAI CHARACTER MAI EK
+0E49;CM;THAI CHARACTER MAI THO
+0E4A;CM;THAI CHARACTER MAI TRI
+0E4B;CM;THAI CHARACTER MAI CHATTAWA
+0E4C;CM;THAI CHARACTER THANTHAKHAT
+0E4D;CM;THAI CHARACTER NIKHAHIT
+0E4E;CM;THAI CHARACTER YAMAKKAN
+0E4F;AL;THAI CHARACTER FONGMAN
+0E50;NU;THAI DIGIT ZERO
+0E51;NU;THAI DIGIT ONE
+0E52;NU;THAI DIGIT TWO
+0E53;NU;THAI DIGIT THREE
+0E54;NU;THAI DIGIT FOUR
+0E55;NU;THAI DIGIT FIVE
+0E56;NU;THAI DIGIT SIX
+0E57;NU;THAI DIGIT SEVEN
+0E58;NU;THAI DIGIT EIGHT
+0E59;NU;THAI DIGIT NINE
+0E5A;NS;THAI CHARACTER ANGKHANKHU
+0E5B;NS;THAI CHARACTER KHOMUT
+0E81;SA;LAO LETTER KO
+0E82;SA;LAO LETTER KHO SUNG
+0E84;SA;LAO LETTER KHO TAM
+0E87;SA;LAO LETTER NGO
+0E88;SA;LAO LETTER CO
+0E8A;SA;LAO LETTER SO TAM
+0E8D;SA;LAO LETTER NYO
+0E94;SA;LAO LETTER DO
+0E95;SA;LAO LETTER TO
+0E96;SA;LAO LETTER THO SUNG
+0E97;SA;LAO LETTER THO TAM
+0E99;SA;LAO LETTER NO
+0E9A;SA;LAO LETTER BO
+0E9B;SA;LAO LETTER PO
+0E9C;SA;LAO LETTER PHO SUNG
+0E9D;SA;LAO LETTER FO TAM
+0E9E;SA;LAO LETTER PHO TAM
+0E9F;SA;LAO LETTER FO SUNG
+0EA1;SA;LAO LETTER MO
+0EA2;SA;LAO LETTER YO
+0EA3;SA;LAO LETTER LO LING
+0EA5;SA;LAO LETTER LO LOOT
+0EA7;SA;LAO LETTER WO
+0EAA;SA;LAO LETTER SO SUNG
+0EAB;SA;LAO LETTER HO SUNG
+0EAD;SA;LAO LETTER O
+0EAE;SA;LAO LETTER HO TAM
+0EAF;SA;LAO ELLIPSIS
+0EB0;SA;LAO VOWEL SIGN A
+0EB1;CM;LAO VOWEL SIGN MAI KAN
+0EB2;SA;LAO VOWEL SIGN AA
+0EB3;SA;LAO VOWEL SIGN AM
+0EB4;CM;LAO VOWEL SIGN I
+0EB5;CM;LAO VOWEL SIGN II
+0EB6;CM;LAO VOWEL SIGN Y
+0EB7;CM;LAO VOWEL SIGN YY
+0EB8;CM;LAO VOWEL SIGN U
+0EB9;CM;LAO VOWEL SIGN UU
+0EBB;CM;LAO VOWEL SIGN MAI KON
+0EBC;CM;LAO SEMIVOWEL SIGN LO
+0EBD;SA;LAO SEMIVOWEL SIGN NYO
+0EC0;SA;LAO VOWEL SIGN E
+0EC1;SA;LAO VOWEL SIGN EI
+0EC2;SA;LAO VOWEL SIGN O
+0EC3;SA;LAO VOWEL SIGN AY
+0EC4;SA;LAO VOWEL SIGN AI
+0EC6;SA;LAO KO LA
+0EC8;CM;LAO TONE MAI EK
+0EC9;CM;LAO TONE MAI THO
+0ECA;CM;LAO TONE MAI TI
+0ECB;CM;LAO TONE MAI CATAWA
+0ECC;CM;LAO CANCELLATION MARK
+0ECD;CM;LAO NIGGAHITA
+0ED0;NU;LAO DIGIT ZERO
+0ED1;NU;LAO DIGIT ONE
+0ED2;NU;LAO DIGIT TWO
+0ED3;NU;LAO DIGIT THREE
+0ED4;NU;LAO DIGIT FOUR
+0ED5;NU;LAO DIGIT FIVE
+0ED6;NU;LAO DIGIT SIX
+0ED7;NU;LAO DIGIT SEVEN
+0ED8;NU;LAO DIGIT EIGHT
+0ED9;NU;LAO DIGIT NINE
+0EDC;SA;LAO HO NO
+0EDD;SA;LAO HO MO
+0F00;AL;TIBETAN SYLLABLE OM
+0F01;AL;TIBETAN MARK GTER YIG MGO TRUNCATED A
+0F02;AL;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0F03;AL;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04;AL;TIBETAN MARK INITIAL YIG MGO MDUN MA
+0F05;AL;TIBETAN MARK CLOSING YIG MGO SGAB MA
+0F06;AL;TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0F07;AL;TIBETAN MARK YIG MGO TSHEG SHAD MA
+0F08;AL;TIBETAN MARK SBRUL SHAD
+0F09;AL;TIBETAN MARK BSKUR YIG MGO
+0F0A;AL;TIBETAN MARK BKA- SHOG YIG MGO
+0F0B;BA;TIBETAN MARK INTERSYLLABIC TSHEG
+0F0C;GL;TIBETAN MARK DELIMITER TSHEG BSTAR
+0F0D;AL;TIBETAN MARK SHAD
+0F0E;AL;TIBETAN MARK NYIS SHAD
+0F0F;AL;TIBETAN MARK TSHEG SHAD
+0F10;AL;TIBETAN MARK NYIS TSHEG SHAD
+0F11;AL;TIBETAN MARK RIN CHEN SPUNGS SHAD
+0F12;AL;TIBETAN MARK RGYA GRAM SHAD
+0F13;AL;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0F14;AL;TIBETAN MARK GTER TSHEG
+0F15;AL;TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0F16;AL;TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0F17;AL;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18;CM;TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19;CM;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A;AL;TIBETAN SIGN RDEL DKAR GCIG
+0F1B;AL;TIBETAN SIGN RDEL DKAR GNYIS
+0F1C;AL;TIBETAN SIGN RDEL DKAR GSUM
+0F1D;AL;TIBETAN SIGN RDEL NAG GCIG
+0F1E;AL;TIBETAN SIGN RDEL NAG GNYIS
+0F1F;AL;TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20;NU;TIBETAN DIGIT ZERO
+0F21;NU;TIBETAN DIGIT ONE
+0F22;NU;TIBETAN DIGIT TWO
+0F23;NU;TIBETAN DIGIT THREE
+0F24;NU;TIBETAN DIGIT FOUR
+0F25;NU;TIBETAN DIGIT FIVE
+0F26;NU;TIBETAN DIGIT SIX
+0F27;NU;TIBETAN DIGIT SEVEN
+0F28;NU;TIBETAN DIGIT EIGHT
+0F29;NU;TIBETAN DIGIT NINE
+0F2A;AL;TIBETAN DIGIT HALF ONE
+0F2B;AL;TIBETAN DIGIT HALF TWO
+0F2C;AL;TIBETAN DIGIT HALF THREE
+0F2D;AL;TIBETAN DIGIT HALF FOUR
+0F2E;AL;TIBETAN DIGIT HALF FIVE
+0F2F;AL;TIBETAN DIGIT HALF SIX
+0F30;AL;TIBETAN DIGIT HALF SEVEN
+0F31;AL;TIBETAN DIGIT HALF EIGHT
+0F32;AL;TIBETAN DIGIT HALF NINE
+0F33;AL;TIBETAN DIGIT HALF ZERO
+0F34;AL;TIBETAN MARK BSDUS RTAGS
+0F35;CM;TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36;AL;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37;CM;TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38;AL;TIBETAN MARK CHE MGO
+0F39;CM;TIBETAN MARK TSA -PHRU
+0F3A;OP;TIBETAN MARK GUG RTAGS GYON
+0F3B;CL;TIBETAN MARK GUG RTAGS GYAS
+0F3C;OP;TIBETAN MARK ANG KHANG GYON
+0F3D;CL;TIBETAN MARK ANG KHANG GYAS
+0F3E;CM;TIBETAN SIGN YAR TSHES
+0F3F;CM;TIBETAN SIGN MAR TSHES
+0F40;AL;TIBETAN LETTER KA
+0F41;AL;TIBETAN LETTER KHA
+0F42;AL;TIBETAN LETTER GA
+0F43;AL;TIBETAN LETTER GHA
+0F44;AL;TIBETAN LETTER NGA
+0F45;AL;TIBETAN LETTER CA
+0F46;AL;TIBETAN LETTER CHA
+0F47;AL;TIBETAN LETTER JA
+0F49;AL;TIBETAN LETTER NYA
+0F4A;AL;TIBETAN LETTER TTA
+0F4B;AL;TIBETAN LETTER TTHA
+0F4C;AL;TIBETAN LETTER DDA
+0F4D;AL;TIBETAN LETTER DDHA
+0F4E;AL;TIBETAN LETTER NNA
+0F4F;AL;TIBETAN LETTER TA
+0F50;AL;TIBETAN LETTER THA
+0F51;AL;TIBETAN LETTER DA
+0F52;AL;TIBETAN LETTER DHA
+0F53;AL;TIBETAN LETTER NA
+0F54;AL;TIBETAN LETTER PA
+0F55;AL;TIBETAN LETTER PHA
+0F56;AL;TIBETAN LETTER BA
+0F57;AL;TIBETAN LETTER BHA
+0F58;AL;TIBETAN LETTER MA
+0F59;AL;TIBETAN LETTER TSA
+0F5A;AL;TIBETAN LETTER TSHA
+0F5B;AL;TIBETAN LETTER DZA
+0F5C;AL;TIBETAN LETTER DZHA
+0F5D;AL;TIBETAN LETTER WA
+0F5E;AL;TIBETAN LETTER ZHA
+0F5F;AL;TIBETAN LETTER ZA
+0F60;AL;TIBETAN LETTER -A
+0F61;AL;TIBETAN LETTER YA
+0F62;AL;TIBETAN LETTER RA
+0F63;AL;TIBETAN LETTER LA
+0F64;AL;TIBETAN LETTER SHA
+0F65;AL;TIBETAN LETTER SSA
+0F66;AL;TIBETAN LETTER SA
+0F67;AL;TIBETAN LETTER HA
+0F68;AL;TIBETAN LETTER A
+0F69;AL;TIBETAN LETTER KSSA
+0F6A;AL;TIBETAN LETTER FIXED-FORM RA
+0F71;CM;TIBETAN VOWEL SIGN AA
+0F72;CM;TIBETAN VOWEL SIGN I
+0F73;CM;TIBETAN VOWEL SIGN II
+0F74;CM;TIBETAN VOWEL SIGN U
+0F75;CM;TIBETAN VOWEL SIGN UU
+0F76;CM;TIBETAN VOWEL SIGN VOCALIC R
+0F77;CM;TIBETAN VOWEL SIGN VOCALIC RR
+0F78;CM;TIBETAN VOWEL SIGN VOCALIC L
+0F79;CM;TIBETAN VOWEL SIGN VOCALIC LL
+0F7A;CM;TIBETAN VOWEL SIGN E
+0F7B;CM;TIBETAN VOWEL SIGN EE
+0F7C;CM;TIBETAN VOWEL SIGN O
+0F7D;CM;TIBETAN VOWEL SIGN OO
+0F7E;CM;TIBETAN SIGN RJES SU NGA RO
+0F7F;CM;TIBETAN SIGN RNAM BCAD
+0F80;CM;TIBETAN VOWEL SIGN REVERSED I
+0F81;CM;TIBETAN VOWEL SIGN REVERSED II
+0F82;CM;TIBETAN SIGN NYI ZLA NAA DA
+0F83;CM;TIBETAN SIGN SNA LDAN
+0F84;CM;TIBETAN MARK HALANTA
+0F85;AL;TIBETAN MARK PALUTA
+0F86;CM;TIBETAN SIGN LCI RTAGS
+0F87;CM;TIBETAN SIGN YANG RTAGS
+0F88;AL;TIBETAN SIGN LCE TSA CAN
+0F89;AL;TIBETAN SIGN MCHU CAN
+0F8A;AL;TIBETAN SIGN GRU CAN RGYINGS
+0F8B;AL;TIBETAN SIGN GRU MED RGYINGS
+0F90;CM;TIBETAN SUBJOINED LETTER KA
+0F91;CM;TIBETAN SUBJOINED LETTER KHA
+0F92;CM;TIBETAN SUBJOINED LETTER GA
+0F93;CM;TIBETAN SUBJOINED LETTER GHA
+0F94;CM;TIBETAN SUBJOINED LETTER NGA
+0F95;CM;TIBETAN SUBJOINED LETTER CA
+0F96;CM;TIBETAN SUBJOINED LETTER CHA
+0F97;CM;TIBETAN SUBJOINED LETTER JA
+0F99;CM;TIBETAN SUBJOINED LETTER NYA
+0F9A;CM;TIBETAN SUBJOINED LETTER TTA
+0F9B;CM;TIBETAN SUBJOINED LETTER TTHA
+0F9C;CM;TIBETAN SUBJOINED LETTER DDA
+0F9D;CM;TIBETAN SUBJOINED LETTER DDHA
+0F9E;CM;TIBETAN SUBJOINED LETTER NNA
+0F9F;CM;TIBETAN SUBJOINED LETTER TA
+0FA0;CM;TIBETAN SUBJOINED LETTER THA
+0FA1;CM;TIBETAN SUBJOINED LETTER DA
+0FA2;CM;TIBETAN SUBJOINED LETTER DHA
+0FA3;CM;TIBETAN SUBJOINED LETTER NA
+0FA4;CM;TIBETAN SUBJOINED LETTER PA
+0FA5;CM;TIBETAN SUBJOINED LETTER PHA
+0FA6;CM;TIBETAN SUBJOINED LETTER BA
+0FA7;CM;TIBETAN SUBJOINED LETTER BHA
+0FA8;CM;TIBETAN SUBJOINED LETTER MA
+0FA9;CM;TIBETAN SUBJOINED LETTER TSA
+0FAA;CM;TIBETAN SUBJOINED LETTER TSHA
+0FAB;CM;TIBETAN SUBJOINED LETTER DZA
+0FAC;CM;TIBETAN SUBJOINED LETTER DZHA
+0FAD;CM;TIBETAN SUBJOINED LETTER WA
+0FAE;CM;TIBETAN SUBJOINED LETTER ZHA
+0FAF;CM;TIBETAN SUBJOINED LETTER ZA
+0FB0;CM;TIBETAN SUBJOINED LETTER -A
+0FB1;CM;TIBETAN SUBJOINED LETTER YA
+0FB2;CM;TIBETAN SUBJOINED LETTER RA
+0FB3;CM;TIBETAN SUBJOINED LETTER LA
+0FB4;CM;TIBETAN SUBJOINED LETTER SHA
+0FB5;CM;TIBETAN SUBJOINED LETTER SSA
+0FB6;CM;TIBETAN SUBJOINED LETTER SA
+0FB7;CM;TIBETAN SUBJOINED LETTER HA
+0FB8;CM;TIBETAN SUBJOINED LETTER A
+0FB9;CM;TIBETAN SUBJOINED LETTER KSSA
+0FBA;CM;TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0FBB;CM;TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0FBC;CM;TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE;AL;TIBETAN KU RU KHA
+0FBF;AL;TIBETAN KU RU KHA BZHI MIG CAN
+0FC0;AL;TIBETAN CANTILLATION SIGN HEAVY BEAT
+0FC1;AL;TIBETAN CANTILLATION SIGN LIGHT BEAT
+0FC2;AL;TIBETAN CANTILLATION SIGN CANG TE-U
+0FC3;AL;TIBETAN CANTILLATION SIGN SBUB -CHAL
+0FC4;AL;TIBETAN SYMBOL DRIL BU
+0FC5;AL;TIBETAN SYMBOL RDO RJE
+0FC6;CM;TIBETAN SYMBOL PADMA GDAN
+0FC7;AL;TIBETAN SYMBOL RDO RJE RGYA GRAM
+0FC8;AL;TIBETAN SYMBOL PHUR PA
+0FC9;AL;TIBETAN SYMBOL NOR BU
+0FCA;AL;TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0FCB;AL;TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0FCC;AL;TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF;AL;TIBETAN SIGN RDEL NAG GSUM
+1000;SA;MYANMAR LETTER KA
+1001;SA;MYANMAR LETTER KHA
+1002;SA;MYANMAR LETTER GA
+1003;SA;MYANMAR LETTER GHA
+1004;SA;MYANMAR LETTER NGA
+1005;SA;MYANMAR LETTER CA
+1006;SA;MYANMAR LETTER CHA
+1007;SA;MYANMAR LETTER JA
+1008;SA;MYANMAR LETTER JHA
+1009;SA;MYANMAR LETTER NYA
+100A;SA;MYANMAR LETTER NNYA
+100B;SA;MYANMAR LETTER TTA
+100C;SA;MYANMAR LETTER TTHA
+100D;SA;MYANMAR LETTER DDA
+100E;SA;MYANMAR LETTER DDHA
+100F;SA;MYANMAR LETTER NNA
+1010;SA;MYANMAR LETTER TA
+1011;SA;MYANMAR LETTER THA
+1012;SA;MYANMAR LETTER DA
+1013;SA;MYANMAR LETTER DHA
+1014;SA;MYANMAR LETTER NA
+1015;SA;MYANMAR LETTER PA
+1016;SA;MYANMAR LETTER PHA
+1017;SA;MYANMAR LETTER BA
+1018;SA;MYANMAR LETTER BHA
+1019;SA;MYANMAR LETTER MA
+101A;SA;MYANMAR LETTER YA
+101B;SA;MYANMAR LETTER RA
+101C;SA;MYANMAR LETTER LA
+101D;SA;MYANMAR LETTER WA
+101E;SA;MYANMAR LETTER SA
+101F;SA;MYANMAR LETTER HA
+1020;SA;MYANMAR LETTER LLA
+1021;SA;MYANMAR LETTER A
+1023;SA;MYANMAR LETTER I
+1024;SA;MYANMAR LETTER II
+1025;SA;MYANMAR LETTER U
+1026;SA;MYANMAR LETTER UU
+1027;SA;MYANMAR LETTER E
+1029;SA;MYANMAR LETTER O
+102A;SA;MYANMAR LETTER AU
+102C;CM;MYANMAR VOWEL SIGN AA
+102D;CM;MYANMAR VOWEL SIGN I
+102E;CM;MYANMAR VOWEL SIGN II
+102F;CM;MYANMAR VOWEL SIGN U
+1030;CM;MYANMAR VOWEL SIGN UU
+1031;CM;MYANMAR VOWEL SIGN E
+1032;CM;MYANMAR VOWEL SIGN AI
+1036;CM;MYANMAR SIGN ANUSVARA
+1037;CM;MYANMAR SIGN DOT BELOW
+1038;CM;MYANMAR SIGN VISARGA
+1039;CM;MYANMAR SIGN VIRAMA
+1040;NU;MYANMAR DIGIT ZERO
+1041;NU;MYANMAR DIGIT ONE
+1042;NU;MYANMAR DIGIT TWO
+1043;NU;MYANMAR DIGIT THREE
+1044;NU;MYANMAR DIGIT FOUR
+1045;NU;MYANMAR DIGIT FIVE
+1046;NU;MYANMAR DIGIT SIX
+1047;NU;MYANMAR DIGIT SEVEN
+1048;NU;MYANMAR DIGIT EIGHT
+1049;NU;MYANMAR DIGIT NINE
+104A;AL;MYANMAR SIGN LITTLE SECTION
+104B;AL;MYANMAR SIGN SECTION
+104C;AL;MYANMAR SYMBOL LOCATIVE
+104D;AL;MYANMAR SYMBOL COMPLETED
+104E;AL;MYANMAR SYMBOL AFOREMENTIONED
+104F;AL;MYANMAR SYMBOL GENITIVE
+1050;SA;MYANMAR LETTER SHA
+1051;SA;MYANMAR LETTER SSA
+1052;SA;MYANMAR LETTER VOCALIC R
+1053;SA;MYANMAR LETTER VOCALIC RR
+1054;SA;MYANMAR LETTER VOCALIC L
+1055;SA;MYANMAR LETTER VOCALIC LL
+1056;CM;MYANMAR VOWEL SIGN VOCALIC R
+1057;CM;MYANMAR VOWEL SIGN VOCALIC RR
+1058;CM;MYANMAR VOWEL SIGN VOCALIC L
+1059;CM;MYANMAR VOWEL SIGN VOCALIC LL
+10A0;AL;GEORGIAN CAPITAL LETTER AN
+10A1;AL;GEORGIAN CAPITAL LETTER BAN
+10A2;AL;GEORGIAN CAPITAL LETTER GAN
+10A3;AL;GEORGIAN CAPITAL LETTER DON
+10A4;AL;GEORGIAN CAPITAL LETTER EN
+10A5;AL;GEORGIAN CAPITAL LETTER VIN
+10A6;AL;GEORGIAN CAPITAL LETTER ZEN
+10A7;AL;GEORGIAN CAPITAL LETTER TAN
+10A8;AL;GEORGIAN CAPITAL LETTER IN
+10A9;AL;GEORGIAN CAPITAL LETTER KAN
+10AA;AL;GEORGIAN CAPITAL LETTER LAS
+10AB;AL;GEORGIAN CAPITAL LETTER MAN
+10AC;AL;GEORGIAN CAPITAL LETTER NAR
+10AD;AL;GEORGIAN CAPITAL LETTER ON
+10AE;AL;GEORGIAN CAPITAL LETTER PAR
+10AF;AL;GEORGIAN CAPITAL LETTER ZHAR
+10B0;AL;GEORGIAN CAPITAL LETTER RAE
+10B1;AL;GEORGIAN CAPITAL LETTER SAN
+10B2;AL;GEORGIAN CAPITAL LETTER TAR
+10B3;AL;GEORGIAN CAPITAL LETTER UN
+10B4;AL;GEORGIAN CAPITAL LETTER PHAR
+10B5;AL;GEORGIAN CAPITAL LETTER KHAR
+10B6;AL;GEORGIAN CAPITAL LETTER GHAN
+10B7;AL;GEORGIAN CAPITAL LETTER QAR
+10B8;AL;GEORGIAN CAPITAL LETTER SHIN
+10B9;AL;GEORGIAN CAPITAL LETTER CHIN
+10BA;AL;GEORGIAN CAPITAL LETTER CAN
+10BB;AL;GEORGIAN CAPITAL LETTER JIL
+10BC;AL;GEORGIAN CAPITAL LETTER CIL
+10BD;AL;GEORGIAN CAPITAL LETTER CHAR
+10BE;AL;GEORGIAN CAPITAL LETTER XAN
+10BF;AL;GEORGIAN CAPITAL LETTER JHAN
+10C0;AL;GEORGIAN CAPITAL LETTER HAE
+10C1;AL;GEORGIAN CAPITAL LETTER HE
+10C2;AL;GEORGIAN CAPITAL LETTER HIE
+10C3;AL;GEORGIAN CAPITAL LETTER WE
+10C4;AL;GEORGIAN CAPITAL LETTER HAR
+10C5;AL;GEORGIAN CAPITAL LETTER HOE
+10D0;AL;GEORGIAN LETTER AN
+10D1;AL;GEORGIAN LETTER BAN
+10D2;AL;GEORGIAN LETTER GAN
+10D3;AL;GEORGIAN LETTER DON
+10D4;AL;GEORGIAN LETTER EN
+10D5;AL;GEORGIAN LETTER VIN
+10D6;AL;GEORGIAN LETTER ZEN
+10D7;AL;GEORGIAN LETTER TAN
+10D8;AL;GEORGIAN LETTER IN
+10D9;AL;GEORGIAN LETTER KAN
+10DA;AL;GEORGIAN LETTER LAS
+10DB;AL;GEORGIAN LETTER MAN
+10DC;AL;GEORGIAN LETTER NAR
+10DD;AL;GEORGIAN LETTER ON
+10DE;AL;GEORGIAN LETTER PAR
+10DF;AL;GEORGIAN LETTER ZHAR
+10E0;AL;GEORGIAN LETTER RAE
+10E1;AL;GEORGIAN LETTER SAN
+10E2;AL;GEORGIAN LETTER TAR
+10E3;AL;GEORGIAN LETTER UN
+10E4;AL;GEORGIAN LETTER PHAR
+10E5;AL;GEORGIAN LETTER KHAR
+10E6;AL;GEORGIAN LETTER GHAN
+10E7;AL;GEORGIAN LETTER QAR
+10E8;AL;GEORGIAN LETTER SHIN
+10E9;AL;GEORGIAN LETTER CHIN
+10EA;AL;GEORGIAN LETTER CAN
+10EB;AL;GEORGIAN LETTER JIL
+10EC;AL;GEORGIAN LETTER CIL
+10ED;AL;GEORGIAN LETTER CHAR
+10EE;AL;GEORGIAN LETTER XAN
+10EF;AL;GEORGIAN LETTER JHAN
+10F0;AL;GEORGIAN LETTER HAE
+10F1;AL;GEORGIAN LETTER HE
+10F2;AL;GEORGIAN LETTER HIE
+10F3;AL;GEORGIAN LETTER WE
+10F4;AL;GEORGIAN LETTER HAR
+10F5;AL;GEORGIAN LETTER HOE
+10F6;AL;GEORGIAN LETTER FI
+10FB;AL;GEORGIAN PARAGRAPH SEPARATOR
+1100;ID;HANGUL CHOSEONG KIYEOK
+1101;ID;HANGUL CHOSEONG SSANGKIYEOK
+1102;ID;HANGUL CHOSEONG NIEUN
+1103;ID;HANGUL CHOSEONG TIKEUT
+1104;ID;HANGUL CHOSEONG SSANGTIKEUT
+1105;ID;HANGUL CHOSEONG RIEUL
+1106;ID;HANGUL CHOSEONG MIEUM
+1107;ID;HANGUL CHOSEONG PIEUP
+1108;ID;HANGUL CHOSEONG SSANGPIEUP
+1109;ID;HANGUL CHOSEONG SIOS
+110A;ID;HANGUL CHOSEONG SSANGSIOS
+110B;ID;HANGUL CHOSEONG IEUNG
+110C;ID;HANGUL CHOSEONG CIEUC
+110D;ID;HANGUL CHOSEONG SSANGCIEUC
+110E;ID;HANGUL CHOSEONG CHIEUCH
+110F;ID;HANGUL CHOSEONG KHIEUKH
+1110;ID;HANGUL CHOSEONG THIEUTH
+1111;ID;HANGUL CHOSEONG PHIEUPH
+1112;ID;HANGUL CHOSEONG HIEUH
+1113;ID;HANGUL CHOSEONG NIEUN-KIYEOK
+1114;ID;HANGUL CHOSEONG SSANGNIEUN
+1115;ID;HANGUL CHOSEONG NIEUN-TIKEUT
+1116;ID;HANGUL CHOSEONG NIEUN-PIEUP
+1117;ID;HANGUL CHOSEONG TIKEUT-KIYEOK
+1118;ID;HANGUL CHOSEONG RIEUL-NIEUN
+1119;ID;HANGUL CHOSEONG SSANGRIEUL
+111A;ID;HANGUL CHOSEONG RIEUL-HIEUH
+111B;ID;HANGUL CHOSEONG KAPYEOUNRIEUL
+111C;ID;HANGUL CHOSEONG MIEUM-PIEUP
+111D;ID;HANGUL CHOSEONG KAPYEOUNMIEUM
+111E;ID;HANGUL CHOSEONG PIEUP-KIYEOK
+111F;ID;HANGUL CHOSEONG PIEUP-NIEUN
+1120;ID;HANGUL CHOSEONG PIEUP-TIKEUT
+1121;ID;HANGUL CHOSEONG PIEUP-SIOS
+1122;ID;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123;ID;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124;ID;HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125;ID;HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126;ID;HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127;ID;HANGUL CHOSEONG PIEUP-CIEUC
+1128;ID;HANGUL CHOSEONG PIEUP-CHIEUCH
+1129;ID;HANGUL CHOSEONG PIEUP-THIEUTH
+112A;ID;HANGUL CHOSEONG PIEUP-PHIEUPH
+112B;ID;HANGUL CHOSEONG KAPYEOUNPIEUP
+112C;ID;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112D;ID;HANGUL CHOSEONG SIOS-KIYEOK
+112E;ID;HANGUL CHOSEONG SIOS-NIEUN
+112F;ID;HANGUL CHOSEONG SIOS-TIKEUT
+1130;ID;HANGUL CHOSEONG SIOS-RIEUL
+1131;ID;HANGUL CHOSEONG SIOS-MIEUM
+1132;ID;HANGUL CHOSEONG SIOS-PIEUP
+1133;ID;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134;ID;HANGUL CHOSEONG SIOS-SSANGSIOS
+1135;ID;HANGUL CHOSEONG SIOS-IEUNG
+1136;ID;HANGUL CHOSEONG SIOS-CIEUC
+1137;ID;HANGUL CHOSEONG SIOS-CHIEUCH
+1138;ID;HANGUL CHOSEONG SIOS-KHIEUKH
+1139;ID;HANGUL CHOSEONG SIOS-THIEUTH
+113A;ID;HANGUL CHOSEONG SIOS-PHIEUPH
+113B;ID;HANGUL CHOSEONG SIOS-HIEUH
+113C;ID;HANGUL CHOSEONG CHITUEUMSIOS
+113D;ID;HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E;ID;HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F;ID;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140;ID;HANGUL CHOSEONG PANSIOS
+1141;ID;HANGUL CHOSEONG IEUNG-KIYEOK
+1142;ID;HANGUL CHOSEONG IEUNG-TIKEUT
+1143;ID;HANGUL CHOSEONG IEUNG-MIEUM
+1144;ID;HANGUL CHOSEONG IEUNG-PIEUP
+1145;ID;HANGUL CHOSEONG IEUNG-SIOS
+1146;ID;HANGUL CHOSEONG IEUNG-PANSIOS
+1147;ID;HANGUL CHOSEONG SSANGIEUNG
+1148;ID;HANGUL CHOSEONG IEUNG-CIEUC
+1149;ID;HANGUL CHOSEONG IEUNG-CHIEUCH
+114A;ID;HANGUL CHOSEONG IEUNG-THIEUTH
+114B;ID;HANGUL CHOSEONG IEUNG-PHIEUPH
+114C;ID;HANGUL CHOSEONG YESIEUNG
+114D;ID;HANGUL CHOSEONG CIEUC-IEUNG
+114E;ID;HANGUL CHOSEONG CHITUEUMCIEUC
+114F;ID;HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150;ID;HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151;ID;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152;ID;HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153;ID;HANGUL CHOSEONG CHIEUCH-HIEUH
+1154;ID;HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155;ID;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156;ID;HANGUL CHOSEONG PHIEUPH-PIEUP
+1157;ID;HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158;ID;HANGUL CHOSEONG SSANGHIEUH
+1159;ID;HANGUL CHOSEONG YEORINHIEUH
+115F;ID;HANGUL CHOSEONG FILLER
+1160;CM;HANGUL JUNGSEONG FILLER
+1161;CM;HANGUL JUNGSEONG A
+1162;CM;HANGUL JUNGSEONG AE
+1163;CM;HANGUL JUNGSEONG YA
+1164;CM;HANGUL JUNGSEONG YAE
+1165;CM;HANGUL JUNGSEONG EO
+1166;CM;HANGUL JUNGSEONG E
+1167;CM;HANGUL JUNGSEONG YEO
+1168;CM;HANGUL JUNGSEONG YE
+1169;CM;HANGUL JUNGSEONG O
+116A;CM;HANGUL JUNGSEONG WA
+116B;CM;HANGUL JUNGSEONG WAE
+116C;CM;HANGUL JUNGSEONG OE
+116D;CM;HANGUL JUNGSEONG YO
+116E;CM;HANGUL JUNGSEONG U
+116F;CM;HANGUL JUNGSEONG WEO
+1170;CM;HANGUL JUNGSEONG WE
+1171;CM;HANGUL JUNGSEONG WI
+1172;CM;HANGUL JUNGSEONG YU
+1173;CM;HANGUL JUNGSEONG EU
+1174;CM;HANGUL JUNGSEONG YI
+1175;CM;HANGUL JUNGSEONG I
+1176;CM;HANGUL JUNGSEONG A-O
+1177;CM;HANGUL JUNGSEONG A-U
+1178;CM;HANGUL JUNGSEONG YA-O
+1179;CM;HANGUL JUNGSEONG YA-YO
+117A;CM;HANGUL JUNGSEONG EO-O
+117B;CM;HANGUL JUNGSEONG EO-U
+117C;CM;HANGUL JUNGSEONG EO-EU
+117D;CM;HANGUL JUNGSEONG YEO-O
+117E;CM;HANGUL JUNGSEONG YEO-U
+117F;CM;HANGUL JUNGSEONG O-EO
+1180;CM;HANGUL JUNGSEONG O-E
+1181;CM;HANGUL JUNGSEONG O-YE
+1182;CM;HANGUL JUNGSEONG O-O
+1183;CM;HANGUL JUNGSEONG O-U
+1184;CM;HANGUL JUNGSEONG YO-YA
+1185;CM;HANGUL JUNGSEONG YO-YAE
+1186;CM;HANGUL JUNGSEONG YO-YEO
+1187;CM;HANGUL JUNGSEONG YO-O
+1188;CM;HANGUL JUNGSEONG YO-I
+1189;CM;HANGUL JUNGSEONG U-A
+118A;CM;HANGUL JUNGSEONG U-AE
+118B;CM;HANGUL JUNGSEONG U-EO-EU
+118C;CM;HANGUL JUNGSEONG U-YE
+118D;CM;HANGUL JUNGSEONG U-U
+118E;CM;HANGUL JUNGSEONG YU-A
+118F;CM;HANGUL JUNGSEONG YU-EO
+1190;CM;HANGUL JUNGSEONG YU-E
+1191;CM;HANGUL JUNGSEONG YU-YEO
+1192;CM;HANGUL JUNGSEONG YU-YE
+1193;CM;HANGUL JUNGSEONG YU-U
+1194;CM;HANGUL JUNGSEONG YU-I
+1195;CM;HANGUL JUNGSEONG EU-U
+1196;CM;HANGUL JUNGSEONG EU-EU
+1197;CM;HANGUL JUNGSEONG YI-U
+1198;CM;HANGUL JUNGSEONG I-A
+1199;CM;HANGUL JUNGSEONG I-YA
+119A;CM;HANGUL JUNGSEONG I-O
+119B;CM;HANGUL JUNGSEONG I-U
+119C;CM;HANGUL JUNGSEONG I-EU
+119D;CM;HANGUL JUNGSEONG I-ARAEA
+119E;CM;HANGUL JUNGSEONG ARAEA
+119F;CM;HANGUL JUNGSEONG ARAEA-EO
+11A0;CM;HANGUL JUNGSEONG ARAEA-U
+11A1;CM;HANGUL JUNGSEONG ARAEA-I
+11A2;CM;HANGUL JUNGSEONG SSANGARAEA
+11A8;CM;HANGUL JONGSEONG KIYEOK
+11A9;CM;HANGUL JONGSEONG SSANGKIYEOK
+11AA;CM;HANGUL JONGSEONG KIYEOK-SIOS
+11AB;CM;HANGUL JONGSEONG NIEUN
+11AC;CM;HANGUL JONGSEONG NIEUN-CIEUC
+11AD;CM;HANGUL JONGSEONG NIEUN-HIEUH
+11AE;CM;HANGUL JONGSEONG TIKEUT
+11AF;CM;HANGUL JONGSEONG RIEUL
+11B0;CM;HANGUL JONGSEONG RIEUL-KIYEOK
+11B1;CM;HANGUL JONGSEONG RIEUL-MIEUM
+11B2;CM;HANGUL JONGSEONG RIEUL-PIEUP
+11B3;CM;HANGUL JONGSEONG RIEUL-SIOS
+11B4;CM;HANGUL JONGSEONG RIEUL-THIEUTH
+11B5;CM;HANGUL JONGSEONG RIEUL-PHIEUPH
+11B6;CM;HANGUL JONGSEONG RIEUL-HIEUH
+11B7;CM;HANGUL JONGSEONG MIEUM
+11B8;CM;HANGUL JONGSEONG PIEUP
+11B9;CM;HANGUL JONGSEONG PIEUP-SIOS
+11BA;CM;HANGUL JONGSEONG SIOS
+11BB;CM;HANGUL JONGSEONG SSANGSIOS
+11BC;CM;HANGUL JONGSEONG IEUNG
+11BD;CM;HANGUL JONGSEONG CIEUC
+11BE;CM;HANGUL JONGSEONG CHIEUCH
+11BF;CM;HANGUL JONGSEONG KHIEUKH
+11C0;CM;HANGUL JONGSEONG THIEUTH
+11C1;CM;HANGUL JONGSEONG PHIEUPH
+11C2;CM;HANGUL JONGSEONG HIEUH
+11C3;CM;HANGUL JONGSEONG KIYEOK-RIEUL
+11C4;CM;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5;CM;HANGUL JONGSEONG NIEUN-KIYEOK
+11C6;CM;HANGUL JONGSEONG NIEUN-TIKEUT
+11C7;CM;HANGUL JONGSEONG NIEUN-SIOS
+11C8;CM;HANGUL JONGSEONG NIEUN-PANSIOS
+11C9;CM;HANGUL JONGSEONG NIEUN-THIEUTH
+11CA;CM;HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB;CM;HANGUL JONGSEONG TIKEUT-RIEUL
+11CC;CM;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11CD;CM;HANGUL JONGSEONG RIEUL-NIEUN
+11CE;CM;HANGUL JONGSEONG RIEUL-TIKEUT
+11CF;CM;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0;CM;HANGUL JONGSEONG SSANGRIEUL
+11D1;CM;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2;CM;HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3;CM;HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11D4;CM;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5;CM;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6;CM;HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7;CM;HANGUL JONGSEONG RIEUL-PANSIOS
+11D8;CM;HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9;CM;HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11DA;CM;HANGUL JONGSEONG MIEUM-KIYEOK
+11DB;CM;HANGUL JONGSEONG MIEUM-RIEUL
+11DC;CM;HANGUL JONGSEONG MIEUM-PIEUP
+11DD;CM;HANGUL JONGSEONG MIEUM-SIOS
+11DE;CM;HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF;CM;HANGUL JONGSEONG MIEUM-PANSIOS
+11E0;CM;HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1;CM;HANGUL JONGSEONG MIEUM-HIEUH
+11E2;CM;HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3;CM;HANGUL JONGSEONG PIEUP-RIEUL
+11E4;CM;HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5;CM;HANGUL JONGSEONG PIEUP-HIEUH
+11E6;CM;HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7;CM;HANGUL JONGSEONG SIOS-KIYEOK
+11E8;CM;HANGUL JONGSEONG SIOS-TIKEUT
+11E9;CM;HANGUL JONGSEONG SIOS-RIEUL
+11EA;CM;HANGUL JONGSEONG SIOS-PIEUP
+11EB;CM;HANGUL JONGSEONG PANSIOS
+11EC;CM;HANGUL JONGSEONG IEUNG-KIYEOK
+11ED;CM;HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE;CM;HANGUL JONGSEONG SSANGIEUNG
+11EF;CM;HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0;CM;HANGUL JONGSEONG YESIEUNG
+11F1;CM;HANGUL JONGSEONG YESIEUNG-SIOS
+11F2;CM;HANGUL JONGSEONG YESIEUNG-PANSIOS
+11F3;CM;HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4;CM;HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5;CM;HANGUL JONGSEONG HIEUH-NIEUN
+11F6;CM;HANGUL JONGSEONG HIEUH-RIEUL
+11F7;CM;HANGUL JONGSEONG HIEUH-MIEUM
+11F8;CM;HANGUL JONGSEONG HIEUH-PIEUP
+11F9;CM;HANGUL JONGSEONG YEORINHIEUH
+1200;AL;ETHIOPIC SYLLABLE HA
+1201;AL;ETHIOPIC SYLLABLE HU
+1202;AL;ETHIOPIC SYLLABLE HI
+1203;AL;ETHIOPIC SYLLABLE HAA
+1204;AL;ETHIOPIC SYLLABLE HEE
+1205;AL;ETHIOPIC SYLLABLE HE
+1206;AL;ETHIOPIC SYLLABLE HO
+1208;AL;ETHIOPIC SYLLABLE LA
+1209;AL;ETHIOPIC SYLLABLE LU
+120A;AL;ETHIOPIC SYLLABLE LI
+120B;AL;ETHIOPIC SYLLABLE LAA
+120C;AL;ETHIOPIC SYLLABLE LEE
+120D;AL;ETHIOPIC SYLLABLE LE
+120E;AL;ETHIOPIC SYLLABLE LO
+120F;AL;ETHIOPIC SYLLABLE LWA
+1210;AL;ETHIOPIC SYLLABLE HHA
+1211;AL;ETHIOPIC SYLLABLE HHU
+1212;AL;ETHIOPIC SYLLABLE HHI
+1213;AL;ETHIOPIC SYLLABLE HHAA
+1214;AL;ETHIOPIC SYLLABLE HHEE
+1215;AL;ETHIOPIC SYLLABLE HHE
+1216;AL;ETHIOPIC SYLLABLE HHO
+1217;AL;ETHIOPIC SYLLABLE HHWA
+1218;AL;ETHIOPIC SYLLABLE MA
+1219;AL;ETHIOPIC SYLLABLE MU
+121A;AL;ETHIOPIC SYLLABLE MI
+121B;AL;ETHIOPIC SYLLABLE MAA
+121C;AL;ETHIOPIC SYLLABLE MEE
+121D;AL;ETHIOPIC SYLLABLE ME
+121E;AL;ETHIOPIC SYLLABLE MO
+121F;AL;ETHIOPIC SYLLABLE MWA
+1220;AL;ETHIOPIC SYLLABLE SZA
+1221;AL;ETHIOPIC SYLLABLE SZU
+1222;AL;ETHIOPIC SYLLABLE SZI
+1223;AL;ETHIOPIC SYLLABLE SZAA
+1224;AL;ETHIOPIC SYLLABLE SZEE
+1225;AL;ETHIOPIC SYLLABLE SZE
+1226;AL;ETHIOPIC SYLLABLE SZO
+1227;AL;ETHIOPIC SYLLABLE SZWA
+1228;AL;ETHIOPIC SYLLABLE RA
+1229;AL;ETHIOPIC SYLLABLE RU
+122A;AL;ETHIOPIC SYLLABLE RI
+122B;AL;ETHIOPIC SYLLABLE RAA
+122C;AL;ETHIOPIC SYLLABLE REE
+122D;AL;ETHIOPIC SYLLABLE RE
+122E;AL;ETHIOPIC SYLLABLE RO
+122F;AL;ETHIOPIC SYLLABLE RWA
+1230;AL;ETHIOPIC SYLLABLE SA
+1231;AL;ETHIOPIC SYLLABLE SU
+1232;AL;ETHIOPIC SYLLABLE SI
+1233;AL;ETHIOPIC SYLLABLE SAA
+1234;AL;ETHIOPIC SYLLABLE SEE
+1235;AL;ETHIOPIC SYLLABLE SE
+1236;AL;ETHIOPIC SYLLABLE SO
+1237;AL;ETHIOPIC SYLLABLE SWA
+1238;AL;ETHIOPIC SYLLABLE SHA
+1239;AL;ETHIOPIC SYLLABLE SHU
+123A;AL;ETHIOPIC SYLLABLE SHI
+123B;AL;ETHIOPIC SYLLABLE SHAA
+123C;AL;ETHIOPIC SYLLABLE SHEE
+123D;AL;ETHIOPIC SYLLABLE SHE
+123E;AL;ETHIOPIC SYLLABLE SHO
+123F;AL;ETHIOPIC SYLLABLE SHWA
+1240;AL;ETHIOPIC SYLLABLE QA
+1241;AL;ETHIOPIC SYLLABLE QU
+1242;AL;ETHIOPIC SYLLABLE QI
+1243;AL;ETHIOPIC SYLLABLE QAA
+1244;AL;ETHIOPIC SYLLABLE QEE
+1245;AL;ETHIOPIC SYLLABLE QE
+1246;AL;ETHIOPIC SYLLABLE QO
+1248;AL;ETHIOPIC SYLLABLE QWA
+124A;AL;ETHIOPIC SYLLABLE QWI
+124B;AL;ETHIOPIC SYLLABLE QWAA
+124C;AL;ETHIOPIC SYLLABLE QWEE
+124D;AL;ETHIOPIC SYLLABLE QWE
+1250;AL;ETHIOPIC SYLLABLE QHA
+1251;AL;ETHIOPIC SYLLABLE QHU
+1252;AL;ETHIOPIC SYLLABLE QHI
+1253;AL;ETHIOPIC SYLLABLE QHAA
+1254;AL;ETHIOPIC SYLLABLE QHEE
+1255;AL;ETHIOPIC SYLLABLE QHE
+1256;AL;ETHIOPIC SYLLABLE QHO
+1258;AL;ETHIOPIC SYLLABLE QHWA
+125A;AL;ETHIOPIC SYLLABLE QHWI
+125B;AL;ETHIOPIC SYLLABLE QHWAA
+125C;AL;ETHIOPIC SYLLABLE QHWEE
+125D;AL;ETHIOPIC SYLLABLE QHWE
+1260;AL;ETHIOPIC SYLLABLE BA
+1261;AL;ETHIOPIC SYLLABLE BU
+1262;AL;ETHIOPIC SYLLABLE BI
+1263;AL;ETHIOPIC SYLLABLE BAA
+1264;AL;ETHIOPIC SYLLABLE BEE
+1265;AL;ETHIOPIC SYLLABLE BE
+1266;AL;ETHIOPIC SYLLABLE BO
+1267;AL;ETHIOPIC SYLLABLE BWA
+1268;AL;ETHIOPIC SYLLABLE VA
+1269;AL;ETHIOPIC SYLLABLE VU
+126A;AL;ETHIOPIC SYLLABLE VI
+126B;AL;ETHIOPIC SYLLABLE VAA
+126C;AL;ETHIOPIC SYLLABLE VEE
+126D;AL;ETHIOPIC SYLLABLE VE
+126E;AL;ETHIOPIC SYLLABLE VO
+126F;AL;ETHIOPIC SYLLABLE VWA
+1270;AL;ETHIOPIC SYLLABLE TA
+1271;AL;ETHIOPIC SYLLABLE TU
+1272;AL;ETHIOPIC SYLLABLE TI
+1273;AL;ETHIOPIC SYLLABLE TAA
+1274;AL;ETHIOPIC SYLLABLE TEE
+1275;AL;ETHIOPIC SYLLABLE TE
+1276;AL;ETHIOPIC SYLLABLE TO
+1277;AL;ETHIOPIC SYLLABLE TWA
+1278;AL;ETHIOPIC SYLLABLE CA
+1279;AL;ETHIOPIC SYLLABLE CU
+127A;AL;ETHIOPIC SYLLABLE CI
+127B;AL;ETHIOPIC SYLLABLE CAA
+127C;AL;ETHIOPIC SYLLABLE CEE
+127D;AL;ETHIOPIC SYLLABLE CE
+127E;AL;ETHIOPIC SYLLABLE CO
+127F;AL;ETHIOPIC SYLLABLE CWA
+1280;AL;ETHIOPIC SYLLABLE XA
+1281;AL;ETHIOPIC SYLLABLE XU
+1282;AL;ETHIOPIC SYLLABLE XI
+1283;AL;ETHIOPIC SYLLABLE XAA
+1284;AL;ETHIOPIC SYLLABLE XEE
+1285;AL;ETHIOPIC SYLLABLE XE
+1286;AL;ETHIOPIC SYLLABLE XO
+1288;AL;ETHIOPIC SYLLABLE XWA
+128A;AL;ETHIOPIC SYLLABLE XWI
+128B;AL;ETHIOPIC SYLLABLE XWAA
+128C;AL;ETHIOPIC SYLLABLE XWEE
+128D;AL;ETHIOPIC SYLLABLE XWE
+1290;AL;ETHIOPIC SYLLABLE NA
+1291;AL;ETHIOPIC SYLLABLE NU
+1292;AL;ETHIOPIC SYLLABLE NI
+1293;AL;ETHIOPIC SYLLABLE NAA
+1294;AL;ETHIOPIC SYLLABLE NEE
+1295;AL;ETHIOPIC SYLLABLE NE
+1296;AL;ETHIOPIC SYLLABLE NO
+1297;AL;ETHIOPIC SYLLABLE NWA
+1298;AL;ETHIOPIC SYLLABLE NYA
+1299;AL;ETHIOPIC SYLLABLE NYU
+129A;AL;ETHIOPIC SYLLABLE NYI
+129B;AL;ETHIOPIC SYLLABLE NYAA
+129C;AL;ETHIOPIC SYLLABLE NYEE
+129D;AL;ETHIOPIC SYLLABLE NYE
+129E;AL;ETHIOPIC SYLLABLE NYO
+129F;AL;ETHIOPIC SYLLABLE NYWA
+12A0;AL;ETHIOPIC SYLLABLE GLOTTAL A
+12A1;AL;ETHIOPIC SYLLABLE GLOTTAL U
+12A2;AL;ETHIOPIC SYLLABLE GLOTTAL I
+12A3;AL;ETHIOPIC SYLLABLE GLOTTAL AA
+12A4;AL;ETHIOPIC SYLLABLE GLOTTAL EE
+12A5;AL;ETHIOPIC SYLLABLE GLOTTAL E
+12A6;AL;ETHIOPIC SYLLABLE GLOTTAL O
+12A7;AL;ETHIOPIC SYLLABLE GLOTTAL WA
+12A8;AL;ETHIOPIC SYLLABLE KA
+12A9;AL;ETHIOPIC SYLLABLE KU
+12AA;AL;ETHIOPIC SYLLABLE KI
+12AB;AL;ETHIOPIC SYLLABLE KAA
+12AC;AL;ETHIOPIC SYLLABLE KEE
+12AD;AL;ETHIOPIC SYLLABLE KE
+12AE;AL;ETHIOPIC SYLLABLE KO
+12B0;AL;ETHIOPIC SYLLABLE KWA
+12B2;AL;ETHIOPIC SYLLABLE KWI
+12B3;AL;ETHIOPIC SYLLABLE KWAA
+12B4;AL;ETHIOPIC SYLLABLE KWEE
+12B5;AL;ETHIOPIC SYLLABLE KWE
+12B8;AL;ETHIOPIC SYLLABLE KXA
+12B9;AL;ETHIOPIC SYLLABLE KXU
+12BA;AL;ETHIOPIC SYLLABLE KXI
+12BB;AL;ETHIOPIC SYLLABLE KXAA
+12BC;AL;ETHIOPIC SYLLABLE KXEE
+12BD;AL;ETHIOPIC SYLLABLE KXE
+12BE;AL;ETHIOPIC SYLLABLE KXO
+12C0;AL;ETHIOPIC SYLLABLE KXWA
+12C2;AL;ETHIOPIC SYLLABLE KXWI
+12C3;AL;ETHIOPIC SYLLABLE KXWAA
+12C4;AL;ETHIOPIC SYLLABLE KXWEE
+12C5;AL;ETHIOPIC SYLLABLE KXWE
+12C8;AL;ETHIOPIC SYLLABLE WA
+12C9;AL;ETHIOPIC SYLLABLE WU
+12CA;AL;ETHIOPIC SYLLABLE WI
+12CB;AL;ETHIOPIC SYLLABLE WAA
+12CC;AL;ETHIOPIC SYLLABLE WEE
+12CD;AL;ETHIOPIC SYLLABLE WE
+12CE;AL;ETHIOPIC SYLLABLE WO
+12D0;AL;ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1;AL;ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2;AL;ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3;AL;ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4;AL;ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5;AL;ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6;AL;ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8;AL;ETHIOPIC SYLLABLE ZA
+12D9;AL;ETHIOPIC SYLLABLE ZU
+12DA;AL;ETHIOPIC SYLLABLE ZI
+12DB;AL;ETHIOPIC SYLLABLE ZAA
+12DC;AL;ETHIOPIC SYLLABLE ZEE
+12DD;AL;ETHIOPIC SYLLABLE ZE
+12DE;AL;ETHIOPIC SYLLABLE ZO
+12DF;AL;ETHIOPIC SYLLABLE ZWA
+12E0;AL;ETHIOPIC SYLLABLE ZHA
+12E1;AL;ETHIOPIC SYLLABLE ZHU
+12E2;AL;ETHIOPIC SYLLABLE ZHI
+12E3;AL;ETHIOPIC SYLLABLE ZHAA
+12E4;AL;ETHIOPIC SYLLABLE ZHEE
+12E5;AL;ETHIOPIC SYLLABLE ZHE
+12E6;AL;ETHIOPIC SYLLABLE ZHO
+12E7;AL;ETHIOPIC SYLLABLE ZHWA
+12E8;AL;ETHIOPIC SYLLABLE YA
+12E9;AL;ETHIOPIC SYLLABLE YU
+12EA;AL;ETHIOPIC SYLLABLE YI
+12EB;AL;ETHIOPIC SYLLABLE YAA
+12EC;AL;ETHIOPIC SYLLABLE YEE
+12ED;AL;ETHIOPIC SYLLABLE YE
+12EE;AL;ETHIOPIC SYLLABLE YO
+12F0;AL;ETHIOPIC SYLLABLE DA
+12F1;AL;ETHIOPIC SYLLABLE DU
+12F2;AL;ETHIOPIC SYLLABLE DI
+12F3;AL;ETHIOPIC SYLLABLE DAA
+12F4;AL;ETHIOPIC SYLLABLE DEE
+12F5;AL;ETHIOPIC SYLLABLE DE
+12F6;AL;ETHIOPIC SYLLABLE DO
+12F7;AL;ETHIOPIC SYLLABLE DWA
+12F8;AL;ETHIOPIC SYLLABLE DDA
+12F9;AL;ETHIOPIC SYLLABLE DDU
+12FA;AL;ETHIOPIC SYLLABLE DDI
+12FB;AL;ETHIOPIC SYLLABLE DDAA
+12FC;AL;ETHIOPIC SYLLABLE DDEE
+12FD;AL;ETHIOPIC SYLLABLE DDE
+12FE;AL;ETHIOPIC SYLLABLE DDO
+12FF;AL;ETHIOPIC SYLLABLE DDWA
+1300;AL;ETHIOPIC SYLLABLE JA
+1301;AL;ETHIOPIC SYLLABLE JU
+1302;AL;ETHIOPIC SYLLABLE JI
+1303;AL;ETHIOPIC SYLLABLE JAA
+1304;AL;ETHIOPIC SYLLABLE JEE
+1305;AL;ETHIOPIC SYLLABLE JE
+1306;AL;ETHIOPIC SYLLABLE JO
+1307;AL;ETHIOPIC SYLLABLE JWA
+1308;AL;ETHIOPIC SYLLABLE GA
+1309;AL;ETHIOPIC SYLLABLE GU
+130A;AL;ETHIOPIC SYLLABLE GI
+130B;AL;ETHIOPIC SYLLABLE GAA
+130C;AL;ETHIOPIC SYLLABLE GEE
+130D;AL;ETHIOPIC SYLLABLE GE
+130E;AL;ETHIOPIC SYLLABLE GO
+1310;AL;ETHIOPIC SYLLABLE GWA
+1312;AL;ETHIOPIC SYLLABLE GWI
+1313;AL;ETHIOPIC SYLLABLE GWAA
+1314;AL;ETHIOPIC SYLLABLE GWEE
+1315;AL;ETHIOPIC SYLLABLE GWE
+1318;AL;ETHIOPIC SYLLABLE GGA
+1319;AL;ETHIOPIC SYLLABLE GGU
+131A;AL;ETHIOPIC SYLLABLE GGI
+131B;AL;ETHIOPIC SYLLABLE GGAA
+131C;AL;ETHIOPIC SYLLABLE GGEE
+131D;AL;ETHIOPIC SYLLABLE GGE
+131E;AL;ETHIOPIC SYLLABLE GGO
+1320;AL;ETHIOPIC SYLLABLE THA
+1321;AL;ETHIOPIC SYLLABLE THU
+1322;AL;ETHIOPIC SYLLABLE THI
+1323;AL;ETHIOPIC SYLLABLE THAA
+1324;AL;ETHIOPIC SYLLABLE THEE
+1325;AL;ETHIOPIC SYLLABLE THE
+1326;AL;ETHIOPIC SYLLABLE THO
+1327;AL;ETHIOPIC SYLLABLE THWA
+1328;AL;ETHIOPIC SYLLABLE CHA
+1329;AL;ETHIOPIC SYLLABLE CHU
+132A;AL;ETHIOPIC SYLLABLE CHI
+132B;AL;ETHIOPIC SYLLABLE CHAA
+132C;AL;ETHIOPIC SYLLABLE CHEE
+132D;AL;ETHIOPIC SYLLABLE CHE
+132E;AL;ETHIOPIC SYLLABLE CHO
+132F;AL;ETHIOPIC SYLLABLE CHWA
+1330;AL;ETHIOPIC SYLLABLE PHA
+1331;AL;ETHIOPIC SYLLABLE PHU
+1332;AL;ETHIOPIC SYLLABLE PHI
+1333;AL;ETHIOPIC SYLLABLE PHAA
+1334;AL;ETHIOPIC SYLLABLE PHEE
+1335;AL;ETHIOPIC SYLLABLE PHE
+1336;AL;ETHIOPIC SYLLABLE PHO
+1337;AL;ETHIOPIC SYLLABLE PHWA
+1338;AL;ETHIOPIC SYLLABLE TSA
+1339;AL;ETHIOPIC SYLLABLE TSU
+133A;AL;ETHIOPIC SYLLABLE TSI
+133B;AL;ETHIOPIC SYLLABLE TSAA
+133C;AL;ETHIOPIC SYLLABLE TSEE
+133D;AL;ETHIOPIC SYLLABLE TSE
+133E;AL;ETHIOPIC SYLLABLE TSO
+133F;AL;ETHIOPIC SYLLABLE TSWA
+1340;AL;ETHIOPIC SYLLABLE TZA
+1341;AL;ETHIOPIC SYLLABLE TZU
+1342;AL;ETHIOPIC SYLLABLE TZI
+1343;AL;ETHIOPIC SYLLABLE TZAA
+1344;AL;ETHIOPIC SYLLABLE TZEE
+1345;AL;ETHIOPIC SYLLABLE TZE
+1346;AL;ETHIOPIC SYLLABLE TZO
+1348;AL;ETHIOPIC SYLLABLE FA
+1349;AL;ETHIOPIC SYLLABLE FU
+134A;AL;ETHIOPIC SYLLABLE FI
+134B;AL;ETHIOPIC SYLLABLE FAA
+134C;AL;ETHIOPIC SYLLABLE FEE
+134D;AL;ETHIOPIC SYLLABLE FE
+134E;AL;ETHIOPIC SYLLABLE FO
+134F;AL;ETHIOPIC SYLLABLE FWA
+1350;AL;ETHIOPIC SYLLABLE PA
+1351;AL;ETHIOPIC SYLLABLE PU
+1352;AL;ETHIOPIC SYLLABLE PI
+1353;AL;ETHIOPIC SYLLABLE PAA
+1354;AL;ETHIOPIC SYLLABLE PEE
+1355;AL;ETHIOPIC SYLLABLE PE
+1356;AL;ETHIOPIC SYLLABLE PO
+1357;AL;ETHIOPIC SYLLABLE PWA
+1358;AL;ETHIOPIC SYLLABLE RYA
+1359;AL;ETHIOPIC SYLLABLE MYA
+135A;AL;ETHIOPIC SYLLABLE FYA
+1361;BA;ETHIOPIC WORDSPACE
+1362;AL;ETHIOPIC FULL STOP
+1363;AL;ETHIOPIC COMMA
+1364;AL;ETHIOPIC SEMICOLON
+1365;AL;ETHIOPIC COLON
+1366;AL;ETHIOPIC PREFACE COLON
+1367;AL;ETHIOPIC QUESTION MARK
+1368;AL;ETHIOPIC PARAGRAPH SEPARATOR
+1369;NU;ETHIOPIC DIGIT ONE
+136A;NU;ETHIOPIC DIGIT TWO
+136B;NU;ETHIOPIC DIGIT THREE
+136C;NU;ETHIOPIC DIGIT FOUR
+136D;NU;ETHIOPIC DIGIT FIVE
+136E;NU;ETHIOPIC DIGIT SIX
+136F;NU;ETHIOPIC DIGIT SEVEN
+1370;NU;ETHIOPIC DIGIT EIGHT
+1371;NU;ETHIOPIC DIGIT NINE
+1372;AL;ETHIOPIC NUMBER TEN
+1373;AL;ETHIOPIC NUMBER TWENTY
+1374;AL;ETHIOPIC NUMBER THIRTY
+1375;AL;ETHIOPIC NUMBER FORTY
+1376;AL;ETHIOPIC NUMBER FIFTY
+1377;AL;ETHIOPIC NUMBER SIXTY
+1378;AL;ETHIOPIC NUMBER SEVENTY
+1379;AL;ETHIOPIC NUMBER EIGHTY
+137A;AL;ETHIOPIC NUMBER NINETY
+137B;AL;ETHIOPIC NUMBER HUNDRED
+137C;AL;ETHIOPIC NUMBER TEN THOUSAND
+13A0;AL;CHEROKEE LETTER A
+13A1;AL;CHEROKEE LETTER E
+13A2;AL;CHEROKEE LETTER I
+13A3;AL;CHEROKEE LETTER O
+13A4;AL;CHEROKEE LETTER U
+13A5;AL;CHEROKEE LETTER V
+13A6;AL;CHEROKEE LETTER GA
+13A7;AL;CHEROKEE LETTER KA
+13A8;AL;CHEROKEE LETTER GE
+13A9;AL;CHEROKEE LETTER GI
+13AA;AL;CHEROKEE LETTER GO
+13AB;AL;CHEROKEE LETTER GU
+13AC;AL;CHEROKEE LETTER GV
+13AD;AL;CHEROKEE LETTER HA
+13AE;AL;CHEROKEE LETTER HE
+13AF;AL;CHEROKEE LETTER HI
+13B0;AL;CHEROKEE LETTER HO
+13B1;AL;CHEROKEE LETTER HU
+13B2;AL;CHEROKEE LETTER HV
+13B3;AL;CHEROKEE LETTER LA
+13B4;AL;CHEROKEE LETTER LE
+13B5;AL;CHEROKEE LETTER LI
+13B6;AL;CHEROKEE LETTER LO
+13B7;AL;CHEROKEE LETTER LU
+13B8;AL;CHEROKEE LETTER LV
+13B9;AL;CHEROKEE LETTER MA
+13BA;AL;CHEROKEE LETTER ME
+13BB;AL;CHEROKEE LETTER MI
+13BC;AL;CHEROKEE LETTER MO
+13BD;AL;CHEROKEE LETTER MU
+13BE;AL;CHEROKEE LETTER NA
+13BF;AL;CHEROKEE LETTER HNA
+13C0;AL;CHEROKEE LETTER NAH
+13C1;AL;CHEROKEE LETTER NE
+13C2;AL;CHEROKEE LETTER NI
+13C3;AL;CHEROKEE LETTER NO
+13C4;AL;CHEROKEE LETTER NU
+13C5;AL;CHEROKEE LETTER NV
+13C6;AL;CHEROKEE LETTER QUA
+13C7;AL;CHEROKEE LETTER QUE
+13C8;AL;CHEROKEE LETTER QUI
+13C9;AL;CHEROKEE LETTER QUO
+13CA;AL;CHEROKEE LETTER QUU
+13CB;AL;CHEROKEE LETTER QUV
+13CC;AL;CHEROKEE LETTER SA
+13CD;AL;CHEROKEE LETTER S
+13CE;AL;CHEROKEE LETTER SE
+13CF;AL;CHEROKEE LETTER SI
+13D0;AL;CHEROKEE LETTER SO
+13D1;AL;CHEROKEE LETTER SU
+13D2;AL;CHEROKEE LETTER SV
+13D3;AL;CHEROKEE LETTER DA
+13D4;AL;CHEROKEE LETTER TA
+13D5;AL;CHEROKEE LETTER DE
+13D6;AL;CHEROKEE LETTER TE
+13D7;AL;CHEROKEE LETTER DI
+13D8;AL;CHEROKEE LETTER TI
+13D9;AL;CHEROKEE LETTER DO
+13DA;AL;CHEROKEE LETTER DU
+13DB;AL;CHEROKEE LETTER DV
+13DC;AL;CHEROKEE LETTER DLA
+13DD;AL;CHEROKEE LETTER TLA
+13DE;AL;CHEROKEE LETTER TLE
+13DF;AL;CHEROKEE LETTER TLI
+13E0;AL;CHEROKEE LETTER TLO
+13E1;AL;CHEROKEE LETTER TLU
+13E2;AL;CHEROKEE LETTER TLV
+13E3;AL;CHEROKEE LETTER TSA
+13E4;AL;CHEROKEE LETTER TSE
+13E5;AL;CHEROKEE LETTER TSI
+13E6;AL;CHEROKEE LETTER TSO
+13E7;AL;CHEROKEE LETTER TSU
+13E8;AL;CHEROKEE LETTER TSV
+13E9;AL;CHEROKEE LETTER WA
+13EA;AL;CHEROKEE LETTER WE
+13EB;AL;CHEROKEE LETTER WI
+13EC;AL;CHEROKEE LETTER WO
+13ED;AL;CHEROKEE LETTER WU
+13EE;AL;CHEROKEE LETTER WV
+13EF;AL;CHEROKEE LETTER YA
+13F0;AL;CHEROKEE LETTER YE
+13F1;AL;CHEROKEE LETTER YI
+13F2;AL;CHEROKEE LETTER YO
+13F3;AL;CHEROKEE LETTER YU
+13F4;AL;CHEROKEE LETTER YV
+1401;AL;CANADIAN SYLLABICS E
+1402;AL;CANADIAN SYLLABICS AAI
+1403;AL;CANADIAN SYLLABICS I
+1404;AL;CANADIAN SYLLABICS II
+1405;AL;CANADIAN SYLLABICS O
+1406;AL;CANADIAN SYLLABICS OO
+1407;AL;CANADIAN SYLLABICS Y-CREE OO
+1408;AL;CANADIAN SYLLABICS CARRIER EE
+1409;AL;CANADIAN SYLLABICS CARRIER I
+140A;AL;CANADIAN SYLLABICS A
+140B;AL;CANADIAN SYLLABICS AA
+140C;AL;CANADIAN SYLLABICS WE
+140D;AL;CANADIAN SYLLABICS WEST-CREE WE
+140E;AL;CANADIAN SYLLABICS WI
+140F;AL;CANADIAN SYLLABICS WEST-CREE WI
+1410;AL;CANADIAN SYLLABICS WII
+1411;AL;CANADIAN SYLLABICS WEST-CREE WII
+1412;AL;CANADIAN SYLLABICS WO
+1413;AL;CANADIAN SYLLABICS WEST-CREE WO
+1414;AL;CANADIAN SYLLABICS WOO
+1415;AL;CANADIAN SYLLABICS WEST-CREE WOO
+1416;AL;CANADIAN SYLLABICS NASKAPI WOO
+1417;AL;CANADIAN SYLLABICS WA
+1418;AL;CANADIAN SYLLABICS WEST-CREE WA
+1419;AL;CANADIAN SYLLABICS WAA
+141A;AL;CANADIAN SYLLABICS WEST-CREE WAA
+141B;AL;CANADIAN SYLLABICS NASKAPI WAA
+141C;AL;CANADIAN SYLLABICS AI
+141D;AL;CANADIAN SYLLABICS Y-CREE W
+141E;AL;CANADIAN SYLLABICS GLOTTAL STOP
+141F;AL;CANADIAN SYLLABICS FINAL ACUTE
+1420;AL;CANADIAN SYLLABICS FINAL GRAVE
+1421;AL;CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422;AL;CANADIAN SYLLABICS FINAL TOP HALF RING
+1423;AL;CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424;AL;CANADIAN SYLLABICS FINAL RING
+1425;AL;CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426;AL;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427;AL;CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428;AL;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429;AL;CANADIAN SYLLABICS FINAL PLUS
+142A;AL;CANADIAN SYLLABICS FINAL DOWN TACK
+142B;AL;CANADIAN SYLLABICS EN
+142C;AL;CANADIAN SYLLABICS IN
+142D;AL;CANADIAN SYLLABICS ON
+142E;AL;CANADIAN SYLLABICS AN
+142F;AL;CANADIAN SYLLABICS PE
+1430;AL;CANADIAN SYLLABICS PAAI
+1431;AL;CANADIAN SYLLABICS PI
+1432;AL;CANADIAN SYLLABICS PII
+1433;AL;CANADIAN SYLLABICS PO
+1434;AL;CANADIAN SYLLABICS POO
+1435;AL;CANADIAN SYLLABICS Y-CREE POO
+1436;AL;CANADIAN SYLLABICS CARRIER HEE
+1437;AL;CANADIAN SYLLABICS CARRIER HI
+1438;AL;CANADIAN SYLLABICS PA
+1439;AL;CANADIAN SYLLABICS PAA
+143A;AL;CANADIAN SYLLABICS PWE
+143B;AL;CANADIAN SYLLABICS WEST-CREE PWE
+143C;AL;CANADIAN SYLLABICS PWI
+143D;AL;CANADIAN SYLLABICS WEST-CREE PWI
+143E;AL;CANADIAN SYLLABICS PWII
+143F;AL;CANADIAN SYLLABICS WEST-CREE PWII
+1440;AL;CANADIAN SYLLABICS PWO
+1441;AL;CANADIAN SYLLABICS WEST-CREE PWO
+1442;AL;CANADIAN SYLLABICS PWOO
+1443;AL;CANADIAN SYLLABICS WEST-CREE PWOO
+1444;AL;CANADIAN SYLLABICS PWA
+1445;AL;CANADIAN SYLLABICS WEST-CREE PWA
+1446;AL;CANADIAN SYLLABICS PWAA
+1447;AL;CANADIAN SYLLABICS WEST-CREE PWAA
+1448;AL;CANADIAN SYLLABICS Y-CREE PWAA
+1449;AL;CANADIAN SYLLABICS P
+144A;AL;CANADIAN SYLLABICS WEST-CREE P
+144B;AL;CANADIAN SYLLABICS CARRIER H
+144C;AL;CANADIAN SYLLABICS TE
+144D;AL;CANADIAN SYLLABICS TAAI
+144E;AL;CANADIAN SYLLABICS TI
+144F;AL;CANADIAN SYLLABICS TII
+1450;AL;CANADIAN SYLLABICS TO
+1451;AL;CANADIAN SYLLABICS TOO
+1452;AL;CANADIAN SYLLABICS Y-CREE TOO
+1453;AL;CANADIAN SYLLABICS CARRIER DEE
+1454;AL;CANADIAN SYLLABICS CARRIER DI
+1455;AL;CANADIAN SYLLABICS TA
+1456;AL;CANADIAN SYLLABICS TAA
+1457;AL;CANADIAN SYLLABICS TWE
+1458;AL;CANADIAN SYLLABICS WEST-CREE TWE
+1459;AL;CANADIAN SYLLABICS TWI
+145A;AL;CANADIAN SYLLABICS WEST-CREE TWI
+145B;AL;CANADIAN SYLLABICS TWII
+145C;AL;CANADIAN SYLLABICS WEST-CREE TWII
+145D;AL;CANADIAN SYLLABICS TWO
+145E;AL;CANADIAN SYLLABICS WEST-CREE TWO
+145F;AL;CANADIAN SYLLABICS TWOO
+1460;AL;CANADIAN SYLLABICS WEST-CREE TWOO
+1461;AL;CANADIAN SYLLABICS TWA
+1462;AL;CANADIAN SYLLABICS WEST-CREE TWA
+1463;AL;CANADIAN SYLLABICS TWAA
+1464;AL;CANADIAN SYLLABICS WEST-CREE TWAA
+1465;AL;CANADIAN SYLLABICS NASKAPI TWAA
+1466;AL;CANADIAN SYLLABICS T
+1467;AL;CANADIAN SYLLABICS TTE
+1468;AL;CANADIAN SYLLABICS TTI
+1469;AL;CANADIAN SYLLABICS TTO
+146A;AL;CANADIAN SYLLABICS TTA
+146B;AL;CANADIAN SYLLABICS KE
+146C;AL;CANADIAN SYLLABICS KAAI
+146D;AL;CANADIAN SYLLABICS KI
+146E;AL;CANADIAN SYLLABICS KII
+146F;AL;CANADIAN SYLLABICS KO
+1470;AL;CANADIAN SYLLABICS KOO
+1471;AL;CANADIAN SYLLABICS Y-CREE KOO
+1472;AL;CANADIAN SYLLABICS KA
+1473;AL;CANADIAN SYLLABICS KAA
+1474;AL;CANADIAN SYLLABICS KWE
+1475;AL;CANADIAN SYLLABICS WEST-CREE KWE
+1476;AL;CANADIAN SYLLABICS KWI
+1477;AL;CANADIAN SYLLABICS WEST-CREE KWI
+1478;AL;CANADIAN SYLLABICS KWII
+1479;AL;CANADIAN SYLLABICS WEST-CREE KWII
+147A;AL;CANADIAN SYLLABICS KWO
+147B;AL;CANADIAN SYLLABICS WEST-CREE KWO
+147C;AL;CANADIAN SYLLABICS KWOO
+147D;AL;CANADIAN SYLLABICS WEST-CREE KWOO
+147E;AL;CANADIAN SYLLABICS KWA
+147F;AL;CANADIAN SYLLABICS WEST-CREE KWA
+1480;AL;CANADIAN SYLLABICS KWAA
+1481;AL;CANADIAN SYLLABICS WEST-CREE KWAA
+1482;AL;CANADIAN SYLLABICS NASKAPI KWAA
+1483;AL;CANADIAN SYLLABICS K
+1484;AL;CANADIAN SYLLABICS KW
+1485;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489;AL;CANADIAN SYLLABICS CE
+148A;AL;CANADIAN SYLLABICS CAAI
+148B;AL;CANADIAN SYLLABICS CI
+148C;AL;CANADIAN SYLLABICS CII
+148D;AL;CANADIAN SYLLABICS CO
+148E;AL;CANADIAN SYLLABICS COO
+148F;AL;CANADIAN SYLLABICS Y-CREE COO
+1490;AL;CANADIAN SYLLABICS CA
+1491;AL;CANADIAN SYLLABICS CAA
+1492;AL;CANADIAN SYLLABICS CWE
+1493;AL;CANADIAN SYLLABICS WEST-CREE CWE
+1494;AL;CANADIAN SYLLABICS CWI
+1495;AL;CANADIAN SYLLABICS WEST-CREE CWI
+1496;AL;CANADIAN SYLLABICS CWII
+1497;AL;CANADIAN SYLLABICS WEST-CREE CWII
+1498;AL;CANADIAN SYLLABICS CWO
+1499;AL;CANADIAN SYLLABICS WEST-CREE CWO
+149A;AL;CANADIAN SYLLABICS CWOO
+149B;AL;CANADIAN SYLLABICS WEST-CREE CWOO
+149C;AL;CANADIAN SYLLABICS CWA
+149D;AL;CANADIAN SYLLABICS WEST-CREE CWA
+149E;AL;CANADIAN SYLLABICS CWAA
+149F;AL;CANADIAN SYLLABICS WEST-CREE CWAA
+14A0;AL;CANADIAN SYLLABICS NASKAPI CWAA
+14A1;AL;CANADIAN SYLLABICS C
+14A2;AL;CANADIAN SYLLABICS SAYISI TH
+14A3;AL;CANADIAN SYLLABICS ME
+14A4;AL;CANADIAN SYLLABICS MAAI
+14A5;AL;CANADIAN SYLLABICS MI
+14A6;AL;CANADIAN SYLLABICS MII
+14A7;AL;CANADIAN SYLLABICS MO
+14A8;AL;CANADIAN SYLLABICS MOO
+14A9;AL;CANADIAN SYLLABICS Y-CREE MOO
+14AA;AL;CANADIAN SYLLABICS MA
+14AB;AL;CANADIAN SYLLABICS MAA
+14AC;AL;CANADIAN SYLLABICS MWE
+14AD;AL;CANADIAN SYLLABICS WEST-CREE MWE
+14AE;AL;CANADIAN SYLLABICS MWI
+14AF;AL;CANADIAN SYLLABICS WEST-CREE MWI
+14B0;AL;CANADIAN SYLLABICS MWII
+14B1;AL;CANADIAN SYLLABICS WEST-CREE MWII
+14B2;AL;CANADIAN SYLLABICS MWO
+14B3;AL;CANADIAN SYLLABICS WEST-CREE MWO
+14B4;AL;CANADIAN SYLLABICS MWOO
+14B5;AL;CANADIAN SYLLABICS WEST-CREE MWOO
+14B6;AL;CANADIAN SYLLABICS MWA
+14B7;AL;CANADIAN SYLLABICS WEST-CREE MWA
+14B8;AL;CANADIAN SYLLABICS MWAA
+14B9;AL;CANADIAN SYLLABICS WEST-CREE MWAA
+14BA;AL;CANADIAN SYLLABICS NASKAPI MWAA
+14BB;AL;CANADIAN SYLLABICS M
+14BC;AL;CANADIAN SYLLABICS WEST-CREE M
+14BD;AL;CANADIAN SYLLABICS MH
+14BE;AL;CANADIAN SYLLABICS ATHAPASCAN M
+14BF;AL;CANADIAN SYLLABICS SAYISI M
+14C0;AL;CANADIAN SYLLABICS NE
+14C1;AL;CANADIAN SYLLABICS NAAI
+14C2;AL;CANADIAN SYLLABICS NI
+14C3;AL;CANADIAN SYLLABICS NII
+14C4;AL;CANADIAN SYLLABICS NO
+14C5;AL;CANADIAN SYLLABICS NOO
+14C6;AL;CANADIAN SYLLABICS Y-CREE NOO
+14C7;AL;CANADIAN SYLLABICS NA
+14C8;AL;CANADIAN SYLLABICS NAA
+14C9;AL;CANADIAN SYLLABICS NWE
+14CA;AL;CANADIAN SYLLABICS WEST-CREE NWE
+14CB;AL;CANADIAN SYLLABICS NWA
+14CC;AL;CANADIAN SYLLABICS WEST-CREE NWA
+14CD;AL;CANADIAN SYLLABICS NWAA
+14CE;AL;CANADIAN SYLLABICS WEST-CREE NWAA
+14CF;AL;CANADIAN SYLLABICS NASKAPI NWAA
+14D0;AL;CANADIAN SYLLABICS N
+14D1;AL;CANADIAN SYLLABICS CARRIER NG
+14D2;AL;CANADIAN SYLLABICS NH
+14D3;AL;CANADIAN SYLLABICS LE
+14D4;AL;CANADIAN SYLLABICS LAAI
+14D5;AL;CANADIAN SYLLABICS LI
+14D6;AL;CANADIAN SYLLABICS LII
+14D7;AL;CANADIAN SYLLABICS LO
+14D8;AL;CANADIAN SYLLABICS LOO
+14D9;AL;CANADIAN SYLLABICS Y-CREE LOO
+14DA;AL;CANADIAN SYLLABICS LA
+14DB;AL;CANADIAN SYLLABICS LAA
+14DC;AL;CANADIAN SYLLABICS LWE
+14DD;AL;CANADIAN SYLLABICS WEST-CREE LWE
+14DE;AL;CANADIAN SYLLABICS LWI
+14DF;AL;CANADIAN SYLLABICS WEST-CREE LWI
+14E0;AL;CANADIAN SYLLABICS LWII
+14E1;AL;CANADIAN SYLLABICS WEST-CREE LWII
+14E2;AL;CANADIAN SYLLABICS LWO
+14E3;AL;CANADIAN SYLLABICS WEST-CREE LWO
+14E4;AL;CANADIAN SYLLABICS LWOO
+14E5;AL;CANADIAN SYLLABICS WEST-CREE LWOO
+14E6;AL;CANADIAN SYLLABICS LWA
+14E7;AL;CANADIAN SYLLABICS WEST-CREE LWA
+14E8;AL;CANADIAN SYLLABICS LWAA
+14E9;AL;CANADIAN SYLLABICS WEST-CREE LWAA
+14EA;AL;CANADIAN SYLLABICS L
+14EB;AL;CANADIAN SYLLABICS WEST-CREE L
+14EC;AL;CANADIAN SYLLABICS MEDIAL L
+14ED;AL;CANADIAN SYLLABICS SE
+14EE;AL;CANADIAN SYLLABICS SAAI
+14EF;AL;CANADIAN SYLLABICS SI
+14F0;AL;CANADIAN SYLLABICS SII
+14F1;AL;CANADIAN SYLLABICS SO
+14F2;AL;CANADIAN SYLLABICS SOO
+14F3;AL;CANADIAN SYLLABICS Y-CREE SOO
+14F4;AL;CANADIAN SYLLABICS SA
+14F5;AL;CANADIAN SYLLABICS SAA
+14F6;AL;CANADIAN SYLLABICS SWE
+14F7;AL;CANADIAN SYLLABICS WEST-CREE SWE
+14F8;AL;CANADIAN SYLLABICS SWI
+14F9;AL;CANADIAN SYLLABICS WEST-CREE SWI
+14FA;AL;CANADIAN SYLLABICS SWII
+14FB;AL;CANADIAN SYLLABICS WEST-CREE SWII
+14FC;AL;CANADIAN SYLLABICS SWO
+14FD;AL;CANADIAN SYLLABICS WEST-CREE SWO
+14FE;AL;CANADIAN SYLLABICS SWOO
+14FF;AL;CANADIAN SYLLABICS WEST-CREE SWOO
+1500;AL;CANADIAN SYLLABICS SWA
+1501;AL;CANADIAN SYLLABICS WEST-CREE SWA
+1502;AL;CANADIAN SYLLABICS SWAA
+1503;AL;CANADIAN SYLLABICS WEST-CREE SWAA
+1504;AL;CANADIAN SYLLABICS NASKAPI SWAA
+1505;AL;CANADIAN SYLLABICS S
+1506;AL;CANADIAN SYLLABICS ATHAPASCAN S
+1507;AL;CANADIAN SYLLABICS SW
+1508;AL;CANADIAN SYLLABICS BLACKFOOT S
+1509;AL;CANADIAN SYLLABICS MOOSE-CREE SK
+150A;AL;CANADIAN SYLLABICS NASKAPI SKW
+150B;AL;CANADIAN SYLLABICS NASKAPI S-W
+150C;AL;CANADIAN SYLLABICS NASKAPI SPWA
+150D;AL;CANADIAN SYLLABICS NASKAPI STWA
+150E;AL;CANADIAN SYLLABICS NASKAPI SKWA
+150F;AL;CANADIAN SYLLABICS NASKAPI SCWA
+1510;AL;CANADIAN SYLLABICS SHE
+1511;AL;CANADIAN SYLLABICS SHI
+1512;AL;CANADIAN SYLLABICS SHII
+1513;AL;CANADIAN SYLLABICS SHO
+1514;AL;CANADIAN SYLLABICS SHOO
+1515;AL;CANADIAN SYLLABICS SHA
+1516;AL;CANADIAN SYLLABICS SHAA
+1517;AL;CANADIAN SYLLABICS SHWE
+1518;AL;CANADIAN SYLLABICS WEST-CREE SHWE
+1519;AL;CANADIAN SYLLABICS SHWI
+151A;AL;CANADIAN SYLLABICS WEST-CREE SHWI
+151B;AL;CANADIAN SYLLABICS SHWII
+151C;AL;CANADIAN SYLLABICS WEST-CREE SHWII
+151D;AL;CANADIAN SYLLABICS SHWO
+151E;AL;CANADIAN SYLLABICS WEST-CREE SHWO
+151F;AL;CANADIAN SYLLABICS SHWOO
+1520;AL;CANADIAN SYLLABICS WEST-CREE SHWOO
+1521;AL;CANADIAN SYLLABICS SHWA
+1522;AL;CANADIAN SYLLABICS WEST-CREE SHWA
+1523;AL;CANADIAN SYLLABICS SHWAA
+1524;AL;CANADIAN SYLLABICS WEST-CREE SHWAA
+1525;AL;CANADIAN SYLLABICS SH
+1526;AL;CANADIAN SYLLABICS YE
+1527;AL;CANADIAN SYLLABICS YAAI
+1528;AL;CANADIAN SYLLABICS YI
+1529;AL;CANADIAN SYLLABICS YII
+152A;AL;CANADIAN SYLLABICS YO
+152B;AL;CANADIAN SYLLABICS YOO
+152C;AL;CANADIAN SYLLABICS Y-CREE YOO
+152D;AL;CANADIAN SYLLABICS YA
+152E;AL;CANADIAN SYLLABICS YAA
+152F;AL;CANADIAN SYLLABICS YWE
+1530;AL;CANADIAN SYLLABICS WEST-CREE YWE
+1531;AL;CANADIAN SYLLABICS YWI
+1532;AL;CANADIAN SYLLABICS WEST-CREE YWI
+1533;AL;CANADIAN SYLLABICS YWII
+1534;AL;CANADIAN SYLLABICS WEST-CREE YWII
+1535;AL;CANADIAN SYLLABICS YWO
+1536;AL;CANADIAN SYLLABICS WEST-CREE YWO
+1537;AL;CANADIAN SYLLABICS YWOO
+1538;AL;CANADIAN SYLLABICS WEST-CREE YWOO
+1539;AL;CANADIAN SYLLABICS YWA
+153A;AL;CANADIAN SYLLABICS WEST-CREE YWA
+153B;AL;CANADIAN SYLLABICS YWAA
+153C;AL;CANADIAN SYLLABICS WEST-CREE YWAA
+153D;AL;CANADIAN SYLLABICS NASKAPI YWAA
+153E;AL;CANADIAN SYLLABICS Y
+153F;AL;CANADIAN SYLLABICS BIBLE-CREE Y
+1540;AL;CANADIAN SYLLABICS WEST-CREE Y
+1541;AL;CANADIAN SYLLABICS SAYISI YI
+1542;AL;CANADIAN SYLLABICS RE
+1543;AL;CANADIAN SYLLABICS R-CREE RE
+1544;AL;CANADIAN SYLLABICS WEST-CREE LE
+1545;AL;CANADIAN SYLLABICS RAAI
+1546;AL;CANADIAN SYLLABICS RI
+1547;AL;CANADIAN SYLLABICS RII
+1548;AL;CANADIAN SYLLABICS RO
+1549;AL;CANADIAN SYLLABICS ROO
+154A;AL;CANADIAN SYLLABICS WEST-CREE LO
+154B;AL;CANADIAN SYLLABICS RA
+154C;AL;CANADIAN SYLLABICS RAA
+154D;AL;CANADIAN SYLLABICS WEST-CREE LA
+154E;AL;CANADIAN SYLLABICS RWAA
+154F;AL;CANADIAN SYLLABICS WEST-CREE RWAA
+1550;AL;CANADIAN SYLLABICS R
+1551;AL;CANADIAN SYLLABICS WEST-CREE R
+1552;AL;CANADIAN SYLLABICS MEDIAL R
+1553;AL;CANADIAN SYLLABICS FE
+1554;AL;CANADIAN SYLLABICS FAAI
+1555;AL;CANADIAN SYLLABICS FI
+1556;AL;CANADIAN SYLLABICS FII
+1557;AL;CANADIAN SYLLABICS FO
+1558;AL;CANADIAN SYLLABICS FOO
+1559;AL;CANADIAN SYLLABICS FA
+155A;AL;CANADIAN SYLLABICS FAA
+155B;AL;CANADIAN SYLLABICS FWAA
+155C;AL;CANADIAN SYLLABICS WEST-CREE FWAA
+155D;AL;CANADIAN SYLLABICS F
+155E;AL;CANADIAN SYLLABICS THE
+155F;AL;CANADIAN SYLLABICS N-CREE THE
+1560;AL;CANADIAN SYLLABICS THI
+1561;AL;CANADIAN SYLLABICS N-CREE THI
+1562;AL;CANADIAN SYLLABICS THII
+1563;AL;CANADIAN SYLLABICS N-CREE THII
+1564;AL;CANADIAN SYLLABICS THO
+1565;AL;CANADIAN SYLLABICS THOO
+1566;AL;CANADIAN SYLLABICS THA
+1567;AL;CANADIAN SYLLABICS THAA
+1568;AL;CANADIAN SYLLABICS THWAA
+1569;AL;CANADIAN SYLLABICS WEST-CREE THWAA
+156A;AL;CANADIAN SYLLABICS TH
+156B;AL;CANADIAN SYLLABICS TTHE
+156C;AL;CANADIAN SYLLABICS TTHI
+156D;AL;CANADIAN SYLLABICS TTHO
+156E;AL;CANADIAN SYLLABICS TTHA
+156F;AL;CANADIAN SYLLABICS TTH
+1570;AL;CANADIAN SYLLABICS TYE
+1571;AL;CANADIAN SYLLABICS TYI
+1572;AL;CANADIAN SYLLABICS TYO
+1573;AL;CANADIAN SYLLABICS TYA
+1574;AL;CANADIAN SYLLABICS NUNAVIK HE
+1575;AL;CANADIAN SYLLABICS NUNAVIK HI
+1576;AL;CANADIAN SYLLABICS NUNAVIK HII
+1577;AL;CANADIAN SYLLABICS NUNAVIK HO
+1578;AL;CANADIAN SYLLABICS NUNAVIK HOO
+1579;AL;CANADIAN SYLLABICS NUNAVIK HA
+157A;AL;CANADIAN SYLLABICS NUNAVIK HAA
+157B;AL;CANADIAN SYLLABICS NUNAVIK H
+157C;AL;CANADIAN SYLLABICS NUNAVUT H
+157D;AL;CANADIAN SYLLABICS HK
+157E;AL;CANADIAN SYLLABICS QAAI
+157F;AL;CANADIAN SYLLABICS QI
+1580;AL;CANADIAN SYLLABICS QII
+1581;AL;CANADIAN SYLLABICS QO
+1582;AL;CANADIAN SYLLABICS QOO
+1583;AL;CANADIAN SYLLABICS QA
+1584;AL;CANADIAN SYLLABICS QAA
+1585;AL;CANADIAN SYLLABICS Q
+1586;AL;CANADIAN SYLLABICS TLHE
+1587;AL;CANADIAN SYLLABICS TLHI
+1588;AL;CANADIAN SYLLABICS TLHO
+1589;AL;CANADIAN SYLLABICS TLHA
+158A;AL;CANADIAN SYLLABICS WEST-CREE RE
+158B;AL;CANADIAN SYLLABICS WEST-CREE RI
+158C;AL;CANADIAN SYLLABICS WEST-CREE RO
+158D;AL;CANADIAN SYLLABICS WEST-CREE RA
+158E;AL;CANADIAN SYLLABICS NGAAI
+158F;AL;CANADIAN SYLLABICS NGI
+1590;AL;CANADIAN SYLLABICS NGII
+1591;AL;CANADIAN SYLLABICS NGO
+1592;AL;CANADIAN SYLLABICS NGOO
+1593;AL;CANADIAN SYLLABICS NGA
+1594;AL;CANADIAN SYLLABICS NGAA
+1595;AL;CANADIAN SYLLABICS NG
+1596;AL;CANADIAN SYLLABICS NNG
+1597;AL;CANADIAN SYLLABICS SAYISI SHE
+1598;AL;CANADIAN SYLLABICS SAYISI SHI
+1599;AL;CANADIAN SYLLABICS SAYISI SHO
+159A;AL;CANADIAN SYLLABICS SAYISI SHA
+159B;AL;CANADIAN SYLLABICS WOODS-CREE THE
+159C;AL;CANADIAN SYLLABICS WOODS-CREE THI
+159D;AL;CANADIAN SYLLABICS WOODS-CREE THO
+159E;AL;CANADIAN SYLLABICS WOODS-CREE THA
+159F;AL;CANADIAN SYLLABICS WOODS-CREE TH
+15A0;AL;CANADIAN SYLLABICS LHI
+15A1;AL;CANADIAN SYLLABICS LHII
+15A2;AL;CANADIAN SYLLABICS LHO
+15A3;AL;CANADIAN SYLLABICS LHOO
+15A4;AL;CANADIAN SYLLABICS LHA
+15A5;AL;CANADIAN SYLLABICS LHAA
+15A6;AL;CANADIAN SYLLABICS LH
+15A7;AL;CANADIAN SYLLABICS TH-CREE THE
+15A8;AL;CANADIAN SYLLABICS TH-CREE THI
+15A9;AL;CANADIAN SYLLABICS TH-CREE THII
+15AA;AL;CANADIAN SYLLABICS TH-CREE THO
+15AB;AL;CANADIAN SYLLABICS TH-CREE THOO
+15AC;AL;CANADIAN SYLLABICS TH-CREE THA
+15AD;AL;CANADIAN SYLLABICS TH-CREE THAA
+15AE;AL;CANADIAN SYLLABICS TH-CREE TH
+15AF;AL;CANADIAN SYLLABICS AIVILIK B
+15B0;AL;CANADIAN SYLLABICS BLACKFOOT E
+15B1;AL;CANADIAN SYLLABICS BLACKFOOT I
+15B2;AL;CANADIAN SYLLABICS BLACKFOOT O
+15B3;AL;CANADIAN SYLLABICS BLACKFOOT A
+15B4;AL;CANADIAN SYLLABICS BLACKFOOT WE
+15B5;AL;CANADIAN SYLLABICS BLACKFOOT WI
+15B6;AL;CANADIAN SYLLABICS BLACKFOOT WO
+15B7;AL;CANADIAN SYLLABICS BLACKFOOT WA
+15B8;AL;CANADIAN SYLLABICS BLACKFOOT NE
+15B9;AL;CANADIAN SYLLABICS BLACKFOOT NI
+15BA;AL;CANADIAN SYLLABICS BLACKFOOT NO
+15BB;AL;CANADIAN SYLLABICS BLACKFOOT NA
+15BC;AL;CANADIAN SYLLABICS BLACKFOOT KE
+15BD;AL;CANADIAN SYLLABICS BLACKFOOT KI
+15BE;AL;CANADIAN SYLLABICS BLACKFOOT KO
+15BF;AL;CANADIAN SYLLABICS BLACKFOOT KA
+15C0;AL;CANADIAN SYLLABICS SAYISI HE
+15C1;AL;CANADIAN SYLLABICS SAYISI HI
+15C2;AL;CANADIAN SYLLABICS SAYISI HO
+15C3;AL;CANADIAN SYLLABICS SAYISI HA
+15C4;AL;CANADIAN SYLLABICS CARRIER GHU
+15C5;AL;CANADIAN SYLLABICS CARRIER GHO
+15C6;AL;CANADIAN SYLLABICS CARRIER GHE
+15C7;AL;CANADIAN SYLLABICS CARRIER GHEE
+15C8;AL;CANADIAN SYLLABICS CARRIER GHI
+15C9;AL;CANADIAN SYLLABICS CARRIER GHA
+15CA;AL;CANADIAN SYLLABICS CARRIER RU
+15CB;AL;CANADIAN SYLLABICS CARRIER RO
+15CC;AL;CANADIAN SYLLABICS CARRIER RE
+15CD;AL;CANADIAN SYLLABICS CARRIER REE
+15CE;AL;CANADIAN SYLLABICS CARRIER RI
+15CF;AL;CANADIAN SYLLABICS CARRIER RA
+15D0;AL;CANADIAN SYLLABICS CARRIER WU
+15D1;AL;CANADIAN SYLLABICS CARRIER WO
+15D2;AL;CANADIAN SYLLABICS CARRIER WE
+15D3;AL;CANADIAN SYLLABICS CARRIER WEE
+15D4;AL;CANADIAN SYLLABICS CARRIER WI
+15D5;AL;CANADIAN SYLLABICS CARRIER WA
+15D6;AL;CANADIAN SYLLABICS CARRIER HWU
+15D7;AL;CANADIAN SYLLABICS CARRIER HWO
+15D8;AL;CANADIAN SYLLABICS CARRIER HWE
+15D9;AL;CANADIAN SYLLABICS CARRIER HWEE
+15DA;AL;CANADIAN SYLLABICS CARRIER HWI
+15DB;AL;CANADIAN SYLLABICS CARRIER HWA
+15DC;AL;CANADIAN SYLLABICS CARRIER THU
+15DD;AL;CANADIAN SYLLABICS CARRIER THO
+15DE;AL;CANADIAN SYLLABICS CARRIER THE
+15DF;AL;CANADIAN SYLLABICS CARRIER THEE
+15E0;AL;CANADIAN SYLLABICS CARRIER THI
+15E1;AL;CANADIAN SYLLABICS CARRIER THA
+15E2;AL;CANADIAN SYLLABICS CARRIER TTU
+15E3;AL;CANADIAN SYLLABICS CARRIER TTO
+15E4;AL;CANADIAN SYLLABICS CARRIER TTE
+15E5;AL;CANADIAN SYLLABICS CARRIER TTEE
+15E6;AL;CANADIAN SYLLABICS CARRIER TTI
+15E7;AL;CANADIAN SYLLABICS CARRIER TTA
+15E8;AL;CANADIAN SYLLABICS CARRIER PU
+15E9;AL;CANADIAN SYLLABICS CARRIER PO
+15EA;AL;CANADIAN SYLLABICS CARRIER PE
+15EB;AL;CANADIAN SYLLABICS CARRIER PEE
+15EC;AL;CANADIAN SYLLABICS CARRIER PI
+15ED;AL;CANADIAN SYLLABICS CARRIER PA
+15EE;AL;CANADIAN SYLLABICS CARRIER P
+15EF;AL;CANADIAN SYLLABICS CARRIER GU
+15F0;AL;CANADIAN SYLLABICS CARRIER GO
+15F1;AL;CANADIAN SYLLABICS CARRIER GE
+15F2;AL;CANADIAN SYLLABICS CARRIER GEE
+15F3;AL;CANADIAN SYLLABICS CARRIER GI
+15F4;AL;CANADIAN SYLLABICS CARRIER GA
+15F5;AL;CANADIAN SYLLABICS CARRIER KHU
+15F6;AL;CANADIAN SYLLABICS CARRIER KHO
+15F7;AL;CANADIAN SYLLABICS CARRIER KHE
+15F8;AL;CANADIAN SYLLABICS CARRIER KHEE
+15F9;AL;CANADIAN SYLLABICS CARRIER KHI
+15FA;AL;CANADIAN SYLLABICS CARRIER KHA
+15FB;AL;CANADIAN SYLLABICS CARRIER KKU
+15FC;AL;CANADIAN SYLLABICS CARRIER KKO
+15FD;AL;CANADIAN SYLLABICS CARRIER KKE
+15FE;AL;CANADIAN SYLLABICS CARRIER KKEE
+15FF;AL;CANADIAN SYLLABICS CARRIER KKI
+1600;AL;CANADIAN SYLLABICS CARRIER KKA
+1601;AL;CANADIAN SYLLABICS CARRIER KK
+1602;AL;CANADIAN SYLLABICS CARRIER NU
+1603;AL;CANADIAN SYLLABICS CARRIER NO
+1604;AL;CANADIAN SYLLABICS CARRIER NE
+1605;AL;CANADIAN SYLLABICS CARRIER NEE
+1606;AL;CANADIAN SYLLABICS CARRIER NI
+1607;AL;CANADIAN SYLLABICS CARRIER NA
+1608;AL;CANADIAN SYLLABICS CARRIER MU
+1609;AL;CANADIAN SYLLABICS CARRIER MO
+160A;AL;CANADIAN SYLLABICS CARRIER ME
+160B;AL;CANADIAN SYLLABICS CARRIER MEE
+160C;AL;CANADIAN SYLLABICS CARRIER MI
+160D;AL;CANADIAN SYLLABICS CARRIER MA
+160E;AL;CANADIAN SYLLABICS CARRIER YU
+160F;AL;CANADIAN SYLLABICS CARRIER YO
+1610;AL;CANADIAN SYLLABICS CARRIER YE
+1611;AL;CANADIAN SYLLABICS CARRIER YEE
+1612;AL;CANADIAN SYLLABICS CARRIER YI
+1613;AL;CANADIAN SYLLABICS CARRIER YA
+1614;AL;CANADIAN SYLLABICS CARRIER JU
+1615;AL;CANADIAN SYLLABICS SAYISI JU
+1616;AL;CANADIAN SYLLABICS CARRIER JO
+1617;AL;CANADIAN SYLLABICS CARRIER JE
+1618;AL;CANADIAN SYLLABICS CARRIER JEE
+1619;AL;CANADIAN SYLLABICS CARRIER JI
+161A;AL;CANADIAN SYLLABICS SAYISI JI
+161B;AL;CANADIAN SYLLABICS CARRIER JA
+161C;AL;CANADIAN SYLLABICS CARRIER JJU
+161D;AL;CANADIAN SYLLABICS CARRIER JJO
+161E;AL;CANADIAN SYLLABICS CARRIER JJE
+161F;AL;CANADIAN SYLLABICS CARRIER JJEE
+1620;AL;CANADIAN SYLLABICS CARRIER JJI
+1621;AL;CANADIAN SYLLABICS CARRIER JJA
+1622;AL;CANADIAN SYLLABICS CARRIER LU
+1623;AL;CANADIAN SYLLABICS CARRIER LO
+1624;AL;CANADIAN SYLLABICS CARRIER LE
+1625;AL;CANADIAN SYLLABICS CARRIER LEE
+1626;AL;CANADIAN SYLLABICS CARRIER LI
+1627;AL;CANADIAN SYLLABICS CARRIER LA
+1628;AL;CANADIAN SYLLABICS CARRIER DLU
+1629;AL;CANADIAN SYLLABICS CARRIER DLO
+162A;AL;CANADIAN SYLLABICS CARRIER DLE
+162B;AL;CANADIAN SYLLABICS CARRIER DLEE
+162C;AL;CANADIAN SYLLABICS CARRIER DLI
+162D;AL;CANADIAN SYLLABICS CARRIER DLA
+162E;AL;CANADIAN SYLLABICS CARRIER LHU
+162F;AL;CANADIAN SYLLABICS CARRIER LHO
+1630;AL;CANADIAN SYLLABICS CARRIER LHE
+1631;AL;CANADIAN SYLLABICS CARRIER LHEE
+1632;AL;CANADIAN SYLLABICS CARRIER LHI
+1633;AL;CANADIAN SYLLABICS CARRIER LHA
+1634;AL;CANADIAN SYLLABICS CARRIER TLHU
+1635;AL;CANADIAN SYLLABICS CARRIER TLHO
+1636;AL;CANADIAN SYLLABICS CARRIER TLHE
+1637;AL;CANADIAN SYLLABICS CARRIER TLHEE
+1638;AL;CANADIAN SYLLABICS CARRIER TLHI
+1639;AL;CANADIAN SYLLABICS CARRIER TLHA
+163A;AL;CANADIAN SYLLABICS CARRIER TLU
+163B;AL;CANADIAN SYLLABICS CARRIER TLO
+163C;AL;CANADIAN SYLLABICS CARRIER TLE
+163D;AL;CANADIAN SYLLABICS CARRIER TLEE
+163E;AL;CANADIAN SYLLABICS CARRIER TLI
+163F;AL;CANADIAN SYLLABICS CARRIER TLA
+1640;AL;CANADIAN SYLLABICS CARRIER ZU
+1641;AL;CANADIAN SYLLABICS CARRIER ZO
+1642;AL;CANADIAN SYLLABICS CARRIER ZE
+1643;AL;CANADIAN SYLLABICS CARRIER ZEE
+1644;AL;CANADIAN SYLLABICS CARRIER ZI
+1645;AL;CANADIAN SYLLABICS CARRIER ZA
+1646;AL;CANADIAN SYLLABICS CARRIER Z
+1647;AL;CANADIAN SYLLABICS CARRIER INITIAL Z
+1648;AL;CANADIAN SYLLABICS CARRIER DZU
+1649;AL;CANADIAN SYLLABICS CARRIER DZO
+164A;AL;CANADIAN SYLLABICS CARRIER DZE
+164B;AL;CANADIAN SYLLABICS CARRIER DZEE
+164C;AL;CANADIAN SYLLABICS CARRIER DZI
+164D;AL;CANADIAN SYLLABICS CARRIER DZA
+164E;AL;CANADIAN SYLLABICS CARRIER SU
+164F;AL;CANADIAN SYLLABICS CARRIER SO
+1650;AL;CANADIAN SYLLABICS CARRIER SE
+1651;AL;CANADIAN SYLLABICS CARRIER SEE
+1652;AL;CANADIAN SYLLABICS CARRIER SI
+1653;AL;CANADIAN SYLLABICS CARRIER SA
+1654;AL;CANADIAN SYLLABICS CARRIER SHU
+1655;AL;CANADIAN SYLLABICS CARRIER SHO
+1656;AL;CANADIAN SYLLABICS CARRIER SHE
+1657;AL;CANADIAN SYLLABICS CARRIER SHEE
+1658;AL;CANADIAN SYLLABICS CARRIER SHI
+1659;AL;CANADIAN SYLLABICS CARRIER SHA
+165A;AL;CANADIAN SYLLABICS CARRIER SH
+165B;AL;CANADIAN SYLLABICS CARRIER TSU
+165C;AL;CANADIAN SYLLABICS CARRIER TSO
+165D;AL;CANADIAN SYLLABICS CARRIER TSE
+165E;AL;CANADIAN SYLLABICS CARRIER TSEE
+165F;AL;CANADIAN SYLLABICS CARRIER TSI
+1660;AL;CANADIAN SYLLABICS CARRIER TSA
+1661;AL;CANADIAN SYLLABICS CARRIER CHU
+1662;AL;CANADIAN SYLLABICS CARRIER CHO
+1663;AL;CANADIAN SYLLABICS CARRIER CHE
+1664;AL;CANADIAN SYLLABICS CARRIER CHEE
+1665;AL;CANADIAN SYLLABICS CARRIER CHI
+1666;AL;CANADIAN SYLLABICS CARRIER CHA
+1667;AL;CANADIAN SYLLABICS CARRIER TTSU
+1668;AL;CANADIAN SYLLABICS CARRIER TTSO
+1669;AL;CANADIAN SYLLABICS CARRIER TTSE
+166A;AL;CANADIAN SYLLABICS CARRIER TTSEE
+166B;AL;CANADIAN SYLLABICS CARRIER TTSI
+166C;AL;CANADIAN SYLLABICS CARRIER TTSA
+166D;AL;CANADIAN SYLLABICS CHI SIGN
+166E;AL;CANADIAN SYLLABICS FULL STOP
+166F;AL;CANADIAN SYLLABICS QAI
+1670;AL;CANADIAN SYLLABICS NGAI
+1671;AL;CANADIAN SYLLABICS NNGI
+1672;AL;CANADIAN SYLLABICS NNGII
+1673;AL;CANADIAN SYLLABICS NNGO
+1674;AL;CANADIAN SYLLABICS NNGOO
+1675;AL;CANADIAN SYLLABICS NNGA
+1676;AL;CANADIAN SYLLABICS NNGAA
+1680;BA;OGHAM SPACE MARK
+1681;AL;OGHAM LETTER BEITH
+1682;AL;OGHAM LETTER LUIS
+1683;AL;OGHAM LETTER FEARN
+1684;AL;OGHAM LETTER SAIL
+1685;AL;OGHAM LETTER NION
+1686;AL;OGHAM LETTER UATH
+1687;AL;OGHAM LETTER DAIR
+1688;AL;OGHAM LETTER TINNE
+1689;AL;OGHAM LETTER COLL
+168A;AL;OGHAM LETTER CEIRT
+168B;AL;OGHAM LETTER MUIN
+168C;AL;OGHAM LETTER GORT
+168D;AL;OGHAM LETTER NGEADAL
+168E;AL;OGHAM LETTER STRAIF
+168F;AL;OGHAM LETTER RUIS
+1690;AL;OGHAM LETTER AILM
+1691;AL;OGHAM LETTER ONN
+1692;AL;OGHAM LETTER UR
+1693;AL;OGHAM LETTER EADHADH
+1694;AL;OGHAM LETTER IODHADH
+1695;AL;OGHAM LETTER EABHADH
+1696;AL;OGHAM LETTER OR
+1697;AL;OGHAM LETTER UILLEANN
+1698;AL;OGHAM LETTER IFIN
+1699;AL;OGHAM LETTER EAMHANCHOLL
+169A;AL;OGHAM LETTER PEITH
+169B;OP;OGHAM FEATHER MARK
+169C;CL;OGHAM REVERSED FEATHER MARK
+16A0;AL;RUNIC LETTER FEHU FEOH FE F
+16A1;AL;RUNIC LETTER V
+16A2;AL;RUNIC LETTER URUZ UR U
+16A3;AL;RUNIC LETTER YR
+16A4;AL;RUNIC LETTER Y
+16A5;AL;RUNIC LETTER W
+16A6;AL;RUNIC LETTER THURISAZ THURS THORN
+16A7;AL;RUNIC LETTER ETH
+16A8;AL;RUNIC LETTER ANSUZ A
+16A9;AL;RUNIC LETTER OS O
+16AA;AL;RUNIC LETTER AC A
+16AB;AL;RUNIC LETTER AESC
+16AC;AL;RUNIC LETTER LONG-BRANCH-OSS O
+16AD;AL;RUNIC LETTER SHORT-TWIG-OSS O
+16AE;AL;RUNIC LETTER O
+16AF;AL;RUNIC LETTER OE
+16B0;AL;RUNIC LETTER ON
+16B1;AL;RUNIC LETTER RAIDO RAD REID R
+16B2;AL;RUNIC LETTER KAUNA
+16B3;AL;RUNIC LETTER CEN
+16B4;AL;RUNIC LETTER KAUN K
+16B5;AL;RUNIC LETTER G
+16B6;AL;RUNIC LETTER ENG
+16B7;AL;RUNIC LETTER GEBO GYFU G
+16B8;AL;RUNIC LETTER GAR
+16B9;AL;RUNIC LETTER WUNJO WYNN W
+16BA;AL;RUNIC LETTER HAGLAZ H
+16BB;AL;RUNIC LETTER HAEGL H
+16BC;AL;RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD;AL;RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE;AL;RUNIC LETTER NAUDIZ NYD NAUD N
+16BF;AL;RUNIC LETTER SHORT-TWIG-NAUD N
+16C0;AL;RUNIC LETTER DOTTED-N
+16C1;AL;RUNIC LETTER ISAZ IS ISS I
+16C2;AL;RUNIC LETTER E
+16C3;AL;RUNIC LETTER JERAN J
+16C4;AL;RUNIC LETTER GER
+16C5;AL;RUNIC LETTER LONG-BRANCH-AR AE
+16C6;AL;RUNIC LETTER SHORT-TWIG-AR A
+16C7;AL;RUNIC LETTER IWAZ EOH
+16C8;AL;RUNIC LETTER PERTHO PEORTH P
+16C9;AL;RUNIC LETTER ALGIZ EOLHX
+16CA;AL;RUNIC LETTER SOWILO S
+16CB;AL;RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16CC;AL;RUNIC LETTER SHORT-TWIG-SOL S
+16CD;AL;RUNIC LETTER C
+16CE;AL;RUNIC LETTER Z
+16CF;AL;RUNIC LETTER TIWAZ TIR TYR T
+16D0;AL;RUNIC LETTER SHORT-TWIG-TYR T
+16D1;AL;RUNIC LETTER D
+16D2;AL;RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3;AL;RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4;AL;RUNIC LETTER DOTTED-P
+16D5;AL;RUNIC LETTER OPEN-P
+16D6;AL;RUNIC LETTER EHWAZ EH E
+16D7;AL;RUNIC LETTER MANNAZ MAN M
+16D8;AL;RUNIC LETTER LONG-BRANCH-MADR M
+16D9;AL;RUNIC LETTER SHORT-TWIG-MADR M
+16DA;AL;RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB;AL;RUNIC LETTER DOTTED-L
+16DC;AL;RUNIC LETTER INGWAZ
+16DD;AL;RUNIC LETTER ING
+16DE;AL;RUNIC LETTER DAGAZ DAEG D
+16DF;AL;RUNIC LETTER OTHALAN ETHEL O
+16E0;AL;RUNIC LETTER EAR
+16E1;AL;RUNIC LETTER IOR
+16E2;AL;RUNIC LETTER CWEORTH
+16E3;AL;RUNIC LETTER CALC
+16E4;AL;RUNIC LETTER CEALC
+16E5;AL;RUNIC LETTER STAN
+16E6;AL;RUNIC LETTER LONG-BRANCH-YR
+16E7;AL;RUNIC LETTER SHORT-TWIG-YR
+16E8;AL;RUNIC LETTER ICELANDIC-YR
+16E9;AL;RUNIC LETTER Q
+16EA;AL;RUNIC LETTER X
+16EB;AL;RUNIC SINGLE PUNCTUATION
+16EC;AL;RUNIC MULTIPLE PUNCTUATION
+16ED;AL;RUNIC CROSS PUNCTUATION
+16EE;AL;RUNIC ARLAUG SYMBOL
+16EF;AL;RUNIC TVIMADUR SYMBOL
+16F0;AL;RUNIC BELGTHOR SYMBOL
+1780;SA;KHMER LETTER KA
+1781;SA;KHMER LETTER KHA
+1782;SA;KHMER LETTER KO
+1783;SA;KHMER LETTER KHO
+1784;SA;KHMER LETTER NGO
+1785;SA;KHMER LETTER CA
+1786;SA;KHMER LETTER CHA
+1787;SA;KHMER LETTER CO
+1788;SA;KHMER LETTER CHO
+1789;SA;KHMER LETTER NYO
+178A;SA;KHMER LETTER DA
+178B;SA;KHMER LETTER TTHA
+178C;SA;KHMER LETTER DO
+178D;SA;KHMER LETTER TTHO
+178E;SA;KHMER LETTER NNO
+178F;SA;KHMER LETTER TA
+1790;SA;KHMER LETTER THA
+1791;SA;KHMER LETTER TO
+1792;SA;KHMER LETTER THO
+1793;SA;KHMER LETTER NO
+1794;SA;KHMER LETTER BA
+1795;SA;KHMER LETTER PHA
+1796;SA;KHMER LETTER PO
+1797;SA;KHMER LETTER PHO
+1798;SA;KHMER LETTER MO
+1799;SA;KHMER LETTER YO
+179A;SA;KHMER LETTER RO
+179B;SA;KHMER LETTER LO
+179C;SA;KHMER LETTER VO
+179D;SA;KHMER LETTER SHA
+179E;SA;KHMER LETTER SSO
+179F;SA;KHMER LETTER SA
+17A0;SA;KHMER LETTER HA
+17A1;SA;KHMER LETTER LA
+17A2;SA;KHMER LETTER QA
+17A3;SA;KHMER INDEPENDENT VOWEL QAQ
+17A4;SA;KHMER INDEPENDENT VOWEL QAA
+17A5;SA;KHMER INDEPENDENT VOWEL QI
+17A6;SA;KHMER INDEPENDENT VOWEL QII
+17A7;SA;KHMER INDEPENDENT VOWEL QU
+17A8;SA;KHMER INDEPENDENT VOWEL QUK
+17A9;SA;KHMER INDEPENDENT VOWEL QUU
+17AA;SA;KHMER INDEPENDENT VOWEL QUUV
+17AB;SA;KHMER INDEPENDENT VOWEL RY
+17AC;SA;KHMER INDEPENDENT VOWEL RYY
+17AD;SA;KHMER INDEPENDENT VOWEL LY
+17AE;SA;KHMER INDEPENDENT VOWEL LYY
+17AF;SA;KHMER INDEPENDENT VOWEL QE
+17B0;SA;KHMER INDEPENDENT VOWEL QAI
+17B1;SA;KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2;SA;KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3;SA;KHMER INDEPENDENT VOWEL QAU
+17B4;CM;KHMER VOWEL INHERENT AQ
+17B5;CM;KHMER VOWEL INHERENT AA
+17B6;CM;KHMER VOWEL SIGN AA
+17B7;CM;KHMER VOWEL SIGN I
+17B8;CM;KHMER VOWEL SIGN II
+17B9;CM;KHMER VOWEL SIGN Y
+17BA;CM;KHMER VOWEL SIGN YY
+17BB;CM;KHMER VOWEL SIGN U
+17BC;CM;KHMER VOWEL SIGN UU
+17BD;CM;KHMER VOWEL SIGN UA
+17BE;CM;KHMER VOWEL SIGN OE
+17BF;CM;KHMER VOWEL SIGN YA
+17C0;CM;KHMER VOWEL SIGN IE
+17C1;CM;KHMER VOWEL SIGN E
+17C2;CM;KHMER VOWEL SIGN AE
+17C3;CM;KHMER VOWEL SIGN AI
+17C4;CM;KHMER VOWEL SIGN OO
+17C5;CM;KHMER VOWEL SIGN AU
+17C6;CM;KHMER SIGN NIKAHIT
+17C7;CM;KHMER SIGN REAHMUK
+17C8;CM;KHMER SIGN YUUKALEAPINTU
+17C9;CM;KHMER SIGN MUUSIKATOAN
+17CA;CM;KHMER SIGN TRIISAP
+17CB;CM;KHMER SIGN BANTOC
+17CC;CM;KHMER SIGN ROBAT
+17CD;CM;KHMER SIGN TOANDAKHIAT
+17CE;CM;KHMER SIGN KAKABAT
+17CF;CM;KHMER SIGN AHSDA
+17D0;CM;KHMER SIGN SAMYOK SANNYA
+17D1;CM;KHMER SIGN VIRIAM
+17D2;CM;KHMER SIGN COENG
+17D3;CM;KHMER SIGN BATHAMASAT
+17D4;NS;KHMER SIGN KHAN
+17D5;BA;KHMER SIGN BARIYOOSAN
+17D6;NS;KHMER SIGN CAMNUC PII KUUH
+17D7;NS;KHMER SIGN LEK TOO
+17D8;NS;KHMER SIGN BEYYAL
+17D9;NS;KHMER SIGN PHNAEK MUAN
+17DA;NS;KHMER SIGN KOOMUUT
+17DB;PR;KHMER CURRENCY SYMBOL RIEL
+17DC;AL;KHMER SIGN AVAKRAHASANYA
+17E0;NU;KHMER DIGIT ZERO
+17E1;NU;KHMER DIGIT ONE
+17E2;NU;KHMER DIGIT TWO
+17E3;NU;KHMER DIGIT THREE
+17E4;NU;KHMER DIGIT FOUR
+17E5;NU;KHMER DIGIT FIVE
+17E6;NU;KHMER DIGIT SIX
+17E7;NU;KHMER DIGIT SEVEN
+17E8;NU;KHMER DIGIT EIGHT
+17E9;NU;KHMER DIGIT NINE
+1800;AL;MONGOLIAN BIRGA
+1801;AL;MONGOLIAN ELLIPSIS
+1802;AL;MONGOLIAN COMMA
+1803;AL;MONGOLIAN FULL STOP
+1804;AL;MONGOLIAN COLON
+1805;AL;MONGOLIAN FOUR DOTS
+1806;BB;MONGOLIAN TODO SOFT HYPHEN
+1807;AL;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808;AL;MONGOLIAN MANCHU COMMA
+1809;AL;MONGOLIAN MANCHU FULL STOP
+180A;AL;MONGOLIAN NIRUGU
+180B;CM;MONGOLIAN FREE VARIATION SELECTOR ONE
+180C;CM;MONGOLIAN FREE VARIATION SELECTOR TWO
+180D;CM;MONGOLIAN FREE VARIATION SELECTOR THREE
+180E;CM;MONGOLIAN VOWEL SEPARATOR
+1810;NU;MONGOLIAN DIGIT ZERO
+1811;NU;MONGOLIAN DIGIT ONE
+1812;NU;MONGOLIAN DIGIT TWO
+1813;NU;MONGOLIAN DIGIT THREE
+1814;NU;MONGOLIAN DIGIT FOUR
+1815;NU;MONGOLIAN DIGIT FIVE
+1816;NU;MONGOLIAN DIGIT SIX
+1817;NU;MONGOLIAN DIGIT SEVEN
+1818;NU;MONGOLIAN DIGIT EIGHT
+1819;NU;MONGOLIAN DIGIT NINE
+1820;AL;MONGOLIAN LETTER A
+1821;AL;MONGOLIAN LETTER E
+1822;AL;MONGOLIAN LETTER I
+1823;AL;MONGOLIAN LETTER O
+1824;AL;MONGOLIAN LETTER U
+1825;AL;MONGOLIAN LETTER OE
+1826;AL;MONGOLIAN LETTER UE
+1827;AL;MONGOLIAN LETTER EE
+1828;AL;MONGOLIAN LETTER NA
+1829;AL;MONGOLIAN LETTER ANG
+182A;AL;MONGOLIAN LETTER BA
+182B;AL;MONGOLIAN LETTER PA
+182C;AL;MONGOLIAN LETTER QA
+182D;AL;MONGOLIAN LETTER GA
+182E;AL;MONGOLIAN LETTER MA
+182F;AL;MONGOLIAN LETTER LA
+1830;AL;MONGOLIAN LETTER SA
+1831;AL;MONGOLIAN LETTER SHA
+1832;AL;MONGOLIAN LETTER TA
+1833;AL;MONGOLIAN LETTER DA
+1834;AL;MONGOLIAN LETTER CHA
+1835;AL;MONGOLIAN LETTER JA
+1836;AL;MONGOLIAN LETTER YA
+1837;AL;MONGOLIAN LETTER RA
+1838;AL;MONGOLIAN LETTER WA
+1839;AL;MONGOLIAN LETTER FA
+183A;AL;MONGOLIAN LETTER KA
+183B;AL;MONGOLIAN LETTER KHA
+183C;AL;MONGOLIAN LETTER TSA
+183D;AL;MONGOLIAN LETTER ZA
+183E;AL;MONGOLIAN LETTER HAA
+183F;AL;MONGOLIAN LETTER ZRA
+1840;AL;MONGOLIAN LETTER LHA
+1841;AL;MONGOLIAN LETTER ZHI
+1842;AL;MONGOLIAN LETTER CHI
+1843;AL;MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844;AL;MONGOLIAN LETTER TODO E
+1845;AL;MONGOLIAN LETTER TODO I
+1846;AL;MONGOLIAN LETTER TODO O
+1847;AL;MONGOLIAN LETTER TODO U
+1848;AL;MONGOLIAN LETTER TODO OE
+1849;AL;MONGOLIAN LETTER TODO UE
+184A;AL;MONGOLIAN LETTER TODO ANG
+184B;AL;MONGOLIAN LETTER TODO BA
+184C;AL;MONGOLIAN LETTER TODO PA
+184D;AL;MONGOLIAN LETTER TODO QA
+184E;AL;MONGOLIAN LETTER TODO GA
+184F;AL;MONGOLIAN LETTER TODO MA
+1850;AL;MONGOLIAN LETTER TODO TA
+1851;AL;MONGOLIAN LETTER TODO DA
+1852;AL;MONGOLIAN LETTER TODO CHA
+1853;AL;MONGOLIAN LETTER TODO JA
+1854;AL;MONGOLIAN LETTER TODO TSA
+1855;AL;MONGOLIAN LETTER TODO YA
+1856;AL;MONGOLIAN LETTER TODO WA
+1857;AL;MONGOLIAN LETTER TODO KA
+1858;AL;MONGOLIAN LETTER TODO GAA
+1859;AL;MONGOLIAN LETTER TODO HAA
+185A;AL;MONGOLIAN LETTER TODO JIA
+185B;AL;MONGOLIAN LETTER TODO NIA
+185C;AL;MONGOLIAN LETTER TODO DZA
+185D;AL;MONGOLIAN LETTER SIBE E
+185E;AL;MONGOLIAN LETTER SIBE I
+185F;AL;MONGOLIAN LETTER SIBE IY
+1860;AL;MONGOLIAN LETTER SIBE UE
+1861;AL;MONGOLIAN LETTER SIBE U
+1862;AL;MONGOLIAN LETTER SIBE ANG
+1863;AL;MONGOLIAN LETTER SIBE KA
+1864;AL;MONGOLIAN LETTER SIBE GA
+1865;AL;MONGOLIAN LETTER SIBE HA
+1866;AL;MONGOLIAN LETTER SIBE PA
+1867;AL;MONGOLIAN LETTER SIBE SHA
+1868;AL;MONGOLIAN LETTER SIBE TA
+1869;AL;MONGOLIAN LETTER SIBE DA
+186A;AL;MONGOLIAN LETTER SIBE JA
+186B;AL;MONGOLIAN LETTER SIBE FA
+186C;AL;MONGOLIAN LETTER SIBE GAA
+186D;AL;MONGOLIAN LETTER SIBE HAA
+186E;AL;MONGOLIAN LETTER SIBE TSA
+186F;AL;MONGOLIAN LETTER SIBE ZA
+1870;AL;MONGOLIAN LETTER SIBE RAA
+1871;AL;MONGOLIAN LETTER SIBE CHA
+1872;AL;MONGOLIAN LETTER SIBE ZHA
+1873;AL;MONGOLIAN LETTER MANCHU I
+1874;AL;MONGOLIAN LETTER MANCHU KA
+1875;AL;MONGOLIAN LETTER MANCHU RA
+1876;AL;MONGOLIAN LETTER MANCHU FA
+1877;AL;MONGOLIAN LETTER MANCHU ZHA
+1880;AL;MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881;AL;MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882;AL;MONGOLIAN LETTER ALI GALI DAMARU
+1883;AL;MONGOLIAN LETTER ALI GALI UBADAMA
+1884;AL;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885;AL;MONGOLIAN LETTER ALI GALI BALUDA
+1886;AL;MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887;AL;MONGOLIAN LETTER ALI GALI A
+1888;AL;MONGOLIAN LETTER ALI GALI I
+1889;AL;MONGOLIAN LETTER ALI GALI KA
+188A;AL;MONGOLIAN LETTER ALI GALI NGA
+188B;AL;MONGOLIAN LETTER ALI GALI CA
+188C;AL;MONGOLIAN LETTER ALI GALI TTA
+188D;AL;MONGOLIAN LETTER ALI GALI TTHA
+188E;AL;MONGOLIAN LETTER ALI GALI DDA
+188F;AL;MONGOLIAN LETTER ALI GALI NNA
+1890;AL;MONGOLIAN LETTER ALI GALI TA
+1891;AL;MONGOLIAN LETTER ALI GALI DA
+1892;AL;MONGOLIAN LETTER ALI GALI PA
+1893;AL;MONGOLIAN LETTER ALI GALI PHA
+1894;AL;MONGOLIAN LETTER ALI GALI SSA
+1895;AL;MONGOLIAN LETTER ALI GALI ZHA
+1896;AL;MONGOLIAN LETTER ALI GALI ZA
+1897;AL;MONGOLIAN LETTER ALI GALI AH
+1898;AL;MONGOLIAN LETTER TODO ALI GALI TA
+1899;AL;MONGOLIAN LETTER TODO ALI GALI ZHA
+189A;AL;MONGOLIAN LETTER MANCHU ALI GALI GHA
+189B;AL;MONGOLIAN LETTER MANCHU ALI GALI NGA
+189C;AL;MONGOLIAN LETTER MANCHU ALI GALI CA
+189D;AL;MONGOLIAN LETTER MANCHU ALI GALI JHA
+189E;AL;MONGOLIAN LETTER MANCHU ALI GALI TTA
+189F;AL;MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18A0;AL;MONGOLIAN LETTER MANCHU ALI GALI TA
+18A1;AL;MONGOLIAN LETTER MANCHU ALI GALI DHA
+18A2;AL;MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A3;AL;MONGOLIAN LETTER MANCHU ALI GALI CYA
+18A4;AL;MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5;AL;MONGOLIAN LETTER MANCHU ALI GALI ZA
+18A6;AL;MONGOLIAN LETTER ALI GALI HALF U
+18A7;AL;MONGOLIAN LETTER ALI GALI HALF YA
+18A8;AL;MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9;CM;MONGOLIAN LETTER ALI GALI DAGALGA
+1E00;AL;LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;AL;LATIN SMALL LETTER A WITH RING BELOW
+1E02;AL;LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;AL;LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;AL;LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;AL;LATIN SMALL LETTER B WITH DOT BELOW
+1E06;AL;LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;AL;LATIN SMALL LETTER B WITH LINE BELOW
+1E08;AL;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;AL;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;AL;LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;AL;LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;AL;LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;AL;LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;AL;LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;AL;LATIN SMALL LETTER D WITH LINE BELOW
+1E10;AL;LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;AL;LATIN SMALL LETTER D WITH CEDILLA
+1E12;AL;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;AL;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;AL;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;AL;LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;AL;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;AL;LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;AL;LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;AL;LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;AL;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;AL;LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;AL;LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;AL;LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;AL;LATIN CAPITAL LETTER G WITH MACRON
+1E21;AL;LATIN SMALL LETTER G WITH MACRON
+1E22;AL;LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;AL;LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;AL;LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;AL;LATIN SMALL LETTER H WITH DOT BELOW
+1E26;AL;LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;AL;LATIN SMALL LETTER H WITH DIAERESIS
+1E28;AL;LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;AL;LATIN SMALL LETTER H WITH CEDILLA
+1E2A;AL;LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;AL;LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;AL;LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;AL;LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;AL;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;AL;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;AL;LATIN CAPITAL LETTER K WITH ACUTE
+1E31;AL;LATIN SMALL LETTER K WITH ACUTE
+1E32;AL;LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;AL;LATIN SMALL LETTER K WITH DOT BELOW
+1E34;AL;LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;AL;LATIN SMALL LETTER K WITH LINE BELOW
+1E36;AL;LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;AL;LATIN SMALL LETTER L WITH DOT BELOW
+1E38;AL;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;AL;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;AL;LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;AL;LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;AL;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;AL;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;AL;LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;AL;LATIN SMALL LETTER M WITH ACUTE
+1E40;AL;LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;AL;LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;AL;LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;AL;LATIN SMALL LETTER M WITH DOT BELOW
+1E44;AL;LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;AL;LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;AL;LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;AL;LATIN SMALL LETTER N WITH DOT BELOW
+1E48;AL;LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;AL;LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;AL;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;AL;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;AL;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;AL;LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;AL;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;AL;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;AL;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;AL;LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;AL;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;AL;LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;AL;LATIN CAPITAL LETTER P WITH ACUTE
+1E55;AL;LATIN SMALL LETTER P WITH ACUTE
+1E56;AL;LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;AL;LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;AL;LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;AL;LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;AL;LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;AL;LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;AL;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;AL;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;AL;LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;AL;LATIN SMALL LETTER R WITH LINE BELOW
+1E60;AL;LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;AL;LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;AL;LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;AL;LATIN SMALL LETTER S WITH DOT BELOW
+1E64;AL;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;AL;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;AL;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;AL;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;AL;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;AL;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;AL;LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;AL;LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;AL;LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;AL;LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;AL;LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;AL;LATIN SMALL LETTER T WITH LINE BELOW
+1E70;AL;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;AL;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;AL;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;AL;LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;AL;LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;AL;LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;AL;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;AL;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;AL;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;AL;LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;AL;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;AL;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;AL;LATIN CAPITAL LETTER V WITH TILDE
+1E7D;AL;LATIN SMALL LETTER V WITH TILDE
+1E7E;AL;LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;AL;LATIN SMALL LETTER V WITH DOT BELOW
+1E80;AL;LATIN CAPITAL LETTER W WITH GRAVE
+1E81;AL;LATIN SMALL LETTER W WITH GRAVE
+1E82;AL;LATIN CAPITAL LETTER W WITH ACUTE
+1E83;AL;LATIN SMALL LETTER W WITH ACUTE
+1E84;AL;LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;AL;LATIN SMALL LETTER W WITH DIAERESIS
+1E86;AL;LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;AL;LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;AL;LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;AL;LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;AL;LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;AL;LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;AL;LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;AL;LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;AL;LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;AL;LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;AL;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;AL;LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;AL;LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;AL;LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;AL;LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;AL;LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;AL;LATIN SMALL LETTER H WITH LINE BELOW
+1E97;AL;LATIN SMALL LETTER T WITH DIAERESIS
+1E98;AL;LATIN SMALL LETTER W WITH RING ABOVE
+1E99;AL;LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;AL;LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;AL;LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;AL;LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;AL;LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;AL;LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;AL;LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;AL;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;AL;LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;AL;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;AL;LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;AL;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;AL;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;AL;LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;AL;LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;AL;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;AL;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;AL;LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;AL;LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;AL;LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;AL;LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;AL;LATIN CAPITAL LETTER E WITH TILDE
+1EBD;AL;LATIN SMALL LETTER E WITH TILDE
+1EBE;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;AL;LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;AL;LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;AL;LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;AL;LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;AL;LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;AL;LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;AL;LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;AL;LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;AL;LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;AL;LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;AL;LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;AL;LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;AL;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;AL;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;AL;LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;AL;LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;AL;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;AL;LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;AL;LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;AL;LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;AL;LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;AL;LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;AL;LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;AL;LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;AL;LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;AL;LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;AL;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;AL;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;AL;LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;AL;LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;AL;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;AL;LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;AL;LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;AL;LATIN SMALL LETTER Y WITH GRAVE
+1EF4;AL;LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;AL;LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;AL;LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;AL;LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;AL;LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;AL;LATIN SMALL LETTER Y WITH TILDE
+1F00;AL;GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;AL;GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;AL;GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;AL;GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;AL;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;AL;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;AL;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;AL;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;AL;GREEK SMALL LETTER ETA WITH PSILI
+1F21;AL;GREEK SMALL LETTER ETA WITH DASIA
+1F22;AL;GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;AL;GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;AL;GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;AL;GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;AL;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;AL;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;AL;GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;AL;GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;AL;GREEK SMALL LETTER IOTA WITH PSILI
+1F31;AL;GREEK SMALL LETTER IOTA WITH DASIA
+1F32;AL;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;AL;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;AL;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;AL;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;AL;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;AL;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;AL;GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;AL;GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;AL;GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;AL;GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;AL;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;AL;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;AL;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;AL;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;AL;GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;AL;GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;AL;GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;AL;GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;AL;GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;AL;GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;AL;GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;AL;GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;AL;GREEK SMALL LETTER ETA WITH VARIA
+1F75;AL;GREEK SMALL LETTER ETA WITH OXIA
+1F76;AL;GREEK SMALL LETTER IOTA WITH VARIA
+1F77;AL;GREEK SMALL LETTER IOTA WITH OXIA
+1F78;AL;GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;AL;GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;AL;GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;AL;GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;AL;GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;AL;GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;AL;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;AL;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;AL;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;AL;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;AL;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;AL;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;AL;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;AL;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;AL;GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;AL;GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;AL;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;AL;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;AL;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;AL;GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;AL;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;AL;GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;AL;GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;AL;GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;AL;GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;AL;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;AL;GREEK KORONIS
+1FBE;AL;GREEK PROSGEGRAMMENI
+1FBF;AL;GREEK PSILI
+1FC0;AL;GREEK PERISPOMENI
+1FC1;AL;GREEK DIALYTIKA AND PERISPOMENI
+1FC2;AL;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;AL;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;AL;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;AL;GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;AL;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;AL;GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;AL;GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;AL;GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;AL;GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;AL;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;AL;GREEK PSILI AND VARIA
+1FCE;AL;GREEK PSILI AND OXIA
+1FCF;AL;GREEK PSILI AND PERISPOMENI
+1FD0;AL;GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;AL;GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;AL;GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;AL;GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;AL;GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;AL;GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;AL;GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;AL;GREEK DASIA AND VARIA
+1FDE;AL;GREEK DASIA AND OXIA
+1FDF;AL;GREEK DASIA AND PERISPOMENI
+1FE0;AL;GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;AL;GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;AL;GREEK SMALL LETTER RHO WITH PSILI
+1FE5;AL;GREEK SMALL LETTER RHO WITH DASIA
+1FE6;AL;GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;AL;GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;AL;GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;AL;GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;AL;GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;AL;GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;AL;GREEK DIALYTIKA AND VARIA
+1FEE;AL;GREEK DIALYTIKA AND OXIA
+1FEF;AL;GREEK VARIA
+1FF2;AL;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;AL;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;AL;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;AL;GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;AL;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;AL;GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;AL;GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;AL;GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;AL;GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;AL;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;AL;GREEK OXIA
+1FFE;AL;GREEK DASIA
+2000;BA;EN QUAD
+2001;BA;EM QUAD
+2002;BA;EN SPACE
+2003;BA;EM SPACE
+2004;BA;THREE-PER-EM SPACE
+2005;BA;FOUR-PER-EM SPACE
+2006;BA;SIX-PER-EM SPACE
+2007;GL;FIGURE SPACE
+2008;BA;PUNCTUATION SPACE
+2009;BA;THIN SPACE
+200A;BA;HAIR SPACE
+200B;ZW;ZERO WIDTH SPACE
+200C;CM;ZERO WIDTH NON-JOINER
+200D;CM;ZERO WIDTH JOINER
+200E;CM;LEFT-TO-RIGHT MARK
+200F;CM;RIGHT-TO-LEFT MARK
+2010;BA;HYPHEN
+2011;GL;NON-BREAKING HYPHEN
+2012;BA;FIGURE DASH
+2013;BA;EN DASH
+2014;B2;EM DASH
+2015;AL;HORIZONTAL BAR
+2016;AI;DOUBLE VERTICAL LINE
+2017;AL;DOUBLE LOW LINE
+2018;QU;LEFT SINGLE QUOTATION MARK
+2019;QU;RIGHT SINGLE QUOTATION MARK
+201A;OP;SINGLE LOW-9 QUOTATION MARK
+201B;QU;SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C;QU;LEFT DOUBLE QUOTATION MARK
+201D;QU;RIGHT DOUBLE QUOTATION MARK
+201E;OP;DOUBLE LOW-9 QUOTATION MARK
+201F;QU;DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020;AI;DAGGER
+2021;AI;DOUBLE DAGGER
+2022;AL;BULLET
+2023;AL;TRIANGULAR BULLET
+2024;IN;ONE DOT LEADER
+2025;IN;TWO DOT LEADER
+2026;IN;HORIZONTAL ELLIPSIS
+2027;BA;HYPHENATION POINT
+2028;BK;LINE SEPARATOR
+2029;BK;PARAGRAPH SEPARATOR
+202A;CM;LEFT-TO-RIGHT EMBEDDING
+202B;CM;RIGHT-TO-LEFT EMBEDDING
+202C;CM;POP DIRECTIONAL FORMATTING
+202D;CM;LEFT-TO-RIGHT OVERRIDE
+202E;CM;RIGHT-TO-LEFT OVERRIDE
+202F;GL;NARROW NO-BREAK SPACE
+2030;PO;PER MILLE SIGN
+2031;PO;PER TEN THOUSAND SIGN
+2032;PO;PRIME
+2033;PO;DOUBLE PRIME
+2034;PO;TRIPLE PRIME
+2035;PO;REVERSED PRIME
+2036;PO;REVERSED DOUBLE PRIME
+2037;PO;REVERSED TRIPLE PRIME
+2038;AL;CARET
+2039;QU;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;QU;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B;AI;REFERENCE MARK
+203C;NS;DOUBLE EXCLAMATION MARK
+203D;AL;INTERROBANG
+203E;AL;OVERLINE
+203F;AL;UNDERTIE
+2040;AL;CHARACTER TIE
+2041;AL;CARET INSERTION POINT
+2042;AL;ASTERISM
+2043;AL;HYPHEN BULLET
+2044;NS;FRACTION SLASH
+2045;OP;LEFT SQUARE BRACKET WITH QUILL
+2046;CL;RIGHT SQUARE BRACKET WITH QUILL
+2048;AL;QUESTION EXCLAMATION MARK
+2049;AL;EXCLAMATION QUESTION MARK
+204A;AL;TIRONIAN SIGN ET
+204B;AL;REVERSED PILCROW SIGN
+204C;AL;BLACK LEFTWARDS BULLET
+204D;AL;BLACK RIGHTWARDS BULLET
+206A;CM;INHIBIT SYMMETRIC SWAPPING
+206B;CM;ACTIVATE SYMMETRIC SWAPPING
+206C;CM;INHIBIT ARABIC FORM SHAPING
+206D;CM;ACTIVATE ARABIC FORM SHAPING
+206E;CM;NATIONAL DIGIT SHAPES
+206F;CM;NOMINAL DIGIT SHAPES
+2070;AL;SUPERSCRIPT ZERO
+2074;AI;SUPERSCRIPT FOUR
+2075;AL;SUPERSCRIPT FIVE
+2076;AL;SUPERSCRIPT SIX
+2077;AL;SUPERSCRIPT SEVEN
+2078;AL;SUPERSCRIPT EIGHT
+2079;AL;SUPERSCRIPT NINE
+207A;AL;SUPERSCRIPT PLUS SIGN
+207B;AL;SUPERSCRIPT MINUS
+207C;AL;SUPERSCRIPT EQUALS SIGN
+207D;OP;SUPERSCRIPT LEFT PARENTHESIS
+207E;CL;SUPERSCRIPT RIGHT PARENTHESIS
+207F;AI;SUPERSCRIPT LATIN SMALL LETTER N
+2080;AL;SUBSCRIPT ZERO
+2081;AI;SUBSCRIPT ONE
+2082;AI;SUBSCRIPT TWO
+2083;AI;SUBSCRIPT THREE
+2084;AI;SUBSCRIPT FOUR
+2085;AL;SUBSCRIPT FIVE
+2086;AL;SUBSCRIPT SIX
+2087;AL;SUBSCRIPT SEVEN
+2088;AL;SUBSCRIPT EIGHT
+2089;AL;SUBSCRIPT NINE
+208A;AL;SUBSCRIPT PLUS SIGN
+208B;AL;SUBSCRIPT MINUS
+208C;AL;SUBSCRIPT EQUALS SIGN
+208D;OP;SUBSCRIPT LEFT PARENTHESIS
+208E;CL;SUBSCRIPT RIGHT PARENTHESIS
+20A0;PR;EURO-CURRENCY SIGN
+20A1;PR;COLON SIGN
+20A2;PR;CRUZEIRO SIGN
+20A3;PR;FRENCH FRANC SIGN
+20A4;PR;LIRA SIGN
+20A5;PR;MILL SIGN
+20A6;PR;NAIRA SIGN
+20A7;PO;PESETA SIGN
+20A8;PR;RUPEE SIGN
+20A9;PR;WON SIGN
+20AA;PR;NEW SHEQEL SIGN
+20AB;PR;DONG SIGN
+20AC;PR;EURO SIGN
+20AD;PR;KIP SIGN
+20AE;PR;TUGRIK SIGN
+20AF;PR;DRACHMA SIGN
+20D0;CM;COMBINING LEFT HARPOON ABOVE
+20D1;CM;COMBINING RIGHT HARPOON ABOVE
+20D2;CM;COMBINING LONG VERTICAL LINE OVERLAY
+20D3;CM;COMBINING SHORT VERTICAL LINE OVERLAY
+20D4;CM;COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5;CM;COMBINING CLOCKWISE ARROW ABOVE
+20D6;CM;COMBINING LEFT ARROW ABOVE
+20D7;CM;COMBINING RIGHT ARROW ABOVE
+20D8;CM;COMBINING RING OVERLAY
+20D9;CM;COMBINING CLOCKWISE RING OVERLAY
+20DA;CM;COMBINING ANTICLOCKWISE RING OVERLAY
+20DB;CM;COMBINING THREE DOTS ABOVE
+20DC;CM;COMBINING FOUR DOTS ABOVE
+20DD;CM;COMBINING ENCLOSING CIRCLE
+20DE;CM;COMBINING ENCLOSING SQUARE
+20DF;CM;COMBINING ENCLOSING DIAMOND
+20E0;CM;COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1;CM;COMBINING LEFT RIGHT ARROW ABOVE
+20E2;CM;COMBINING ENCLOSING SCREEN
+20E3;CM;COMBINING ENCLOSING KEYCAP
+2100;AL;ACCOUNT OF
+2101;AL;ADDRESSED TO THE SUBJECT
+2102;AL;DOUBLE-STRUCK CAPITAL C
+2103;PO;DEGREE CELSIUS
+2104;AL;CENTRE LINE SYMBOL
+2105;AI;CARE OF
+2106;AL;CADA UNA
+2107;AL;EULER CONSTANT
+2108;AL;SCRUPLE
+2109;PO;DEGREE FAHRENHEIT
+210A;AL;SCRIPT SMALL G
+210B;AL;SCRIPT CAPITAL H
+210C;AL;BLACK-LETTER CAPITAL H
+210D;AL;DOUBLE-STRUCK CAPITAL H
+210E;AL;PLANCK CONSTANT
+210F;AL;PLANCK CONSTANT OVER TWO PI
+2110;AL;SCRIPT CAPITAL I
+2111;AL;BLACK-LETTER CAPITAL I
+2112;AL;SCRIPT CAPITAL L
+2113;AI;SCRIPT SMALL L
+2114;AL;L B BAR SYMBOL
+2115;AL;DOUBLE-STRUCK CAPITAL N
+2116;PR;NUMERO SIGN
+2117;AL;SOUND RECORDING COPYRIGHT
+2118;AL;SCRIPT CAPITAL P
+2119;AL;DOUBLE-STRUCK CAPITAL P
+211A;AL;DOUBLE-STRUCK CAPITAL Q
+211B;AL;SCRIPT CAPITAL R
+211C;AL;BLACK-LETTER CAPITAL R
+211D;AL;DOUBLE-STRUCK CAPITAL R
+211E;AL;PRESCRIPTION TAKE
+211F;AL;RESPONSE
+2120;AL;SERVICE MARK
+2121;AI;TELEPHONE SIGN
+2122;AI;TRADE MARK SIGN
+2123;AL;VERSICLE
+2124;AL;DOUBLE-STRUCK CAPITAL Z
+2125;AL;OUNCE SIGN
+2126;PO;OHM SIGN
+2127;AL;INVERTED OHM SIGN
+2128;AL;BLACK-LETTER CAPITAL Z
+2129;AL;TURNED GREEK SMALL LETTER IOTA
+212A;AL;KELVIN SIGN
+212B;AI;ANGSTROM SIGN
+212C;AL;SCRIPT CAPITAL B
+212D;AL;BLACK-LETTER CAPITAL C
+212E;AL;ESTIMATED SYMBOL
+212F;AL;SCRIPT SMALL E
+2130;AL;SCRIPT CAPITAL E
+2131;AL;SCRIPT CAPITAL F
+2132;AL;TURNED CAPITAL F
+2133;AL;SCRIPT CAPITAL M
+2134;AL;SCRIPT SMALL O
+2135;AL;ALEF SYMBOL
+2136;AL;BET SYMBOL
+2137;AL;GIMEL SYMBOL
+2138;AL;DALET SYMBOL
+2139;AL;INFORMATION SOURCE
+213A;AL;ROTATED CAPITAL Q
+2153;AL;VULGAR FRACTION ONE THIRD
+2154;AI;VULGAR FRACTION TWO THIRDS
+2155;AI;VULGAR FRACTION ONE FIFTH
+2156;AL;VULGAR FRACTION TWO FIFTHS
+2157;AL;VULGAR FRACTION THREE FIFTHS
+2158;AL;VULGAR FRACTION FOUR FIFTHS
+2159;AL;VULGAR FRACTION ONE SIXTH
+215A;AL;VULGAR FRACTION FIVE SIXTHS
+215B;AI;VULGAR FRACTION ONE EIGHTH
+215C;AL;VULGAR FRACTION THREE EIGHTHS
+215D;AL;VULGAR FRACTION FIVE EIGHTHS
+215E;AI;VULGAR FRACTION SEVEN EIGHTHS
+215F;AL;FRACTION NUMERATOR ONE
+2160;AI;ROMAN NUMERAL ONE
+2161;AI;ROMAN NUMERAL TWO
+2162;AI;ROMAN NUMERAL THREE
+2163;AI;ROMAN NUMERAL FOUR
+2164;AI;ROMAN NUMERAL FIVE
+2165;AI;ROMAN NUMERAL SIX
+2166;AI;ROMAN NUMERAL SEVEN
+2167;AI;ROMAN NUMERAL EIGHT
+2168;AI;ROMAN NUMERAL NINE
+2169;AI;ROMAN NUMERAL TEN
+216A;AI;ROMAN NUMERAL ELEVEN
+216B;AI;ROMAN NUMERAL TWELVE
+216C;AL;ROMAN NUMERAL FIFTY
+216D;AL;ROMAN NUMERAL ONE HUNDRED
+216E;AL;ROMAN NUMERAL FIVE HUNDRED
+216F;AL;ROMAN NUMERAL ONE THOUSAND
+2170;AI;SMALL ROMAN NUMERAL ONE
+2171;AI;SMALL ROMAN NUMERAL TWO
+2172;AI;SMALL ROMAN NUMERAL THREE
+2173;AI;SMALL ROMAN NUMERAL FOUR
+2174;AI;SMALL ROMAN NUMERAL FIVE
+2175;AI;SMALL ROMAN NUMERAL SIX
+2176;AI;SMALL ROMAN NUMERAL SEVEN
+2177;AI;SMALL ROMAN NUMERAL EIGHT
+2178;AI;SMALL ROMAN NUMERAL NINE
+2179;AI;SMALL ROMAN NUMERAL TEN
+217A;AL;SMALL ROMAN NUMERAL ELEVEN
+217B;AL;SMALL ROMAN NUMERAL TWELVE
+217C;AL;SMALL ROMAN NUMERAL FIFTY
+217D;AL;SMALL ROMAN NUMERAL ONE HUNDRED
+217E;AL;SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;AL;SMALL ROMAN NUMERAL ONE THOUSAND
+2180;AL;ROMAN NUMERAL ONE THOUSAND C D
+2181;AL;ROMAN NUMERAL FIVE THOUSAND
+2182;AL;ROMAN NUMERAL TEN THOUSAND
+2183;AL;ROMAN NUMERAL REVERSED ONE HUNDRED
+2190;AI;LEFTWARDS ARROW
+2191;AI;UPWARDS ARROW
+2192;AI;RIGHTWARDS ARROW
+2193;AI;DOWNWARDS ARROW
+2194;AI;LEFT RIGHT ARROW
+2195;AI;UP DOWN ARROW
+2196;AI;NORTH WEST ARROW
+2197;AI;NORTH EAST ARROW
+2198;AI;SOUTH EAST ARROW
+2199;AI;SOUTH WEST ARROW
+219A;AL;LEFTWARDS ARROW WITH STROKE
+219B;AL;RIGHTWARDS ARROW WITH STROKE
+219C;AL;LEFTWARDS WAVE ARROW
+219D;AL;RIGHTWARDS WAVE ARROW
+219E;AL;LEFTWARDS TWO HEADED ARROW
+219F;AL;UPWARDS TWO HEADED ARROW
+21A0;AL;RIGHTWARDS TWO HEADED ARROW
+21A1;AL;DOWNWARDS TWO HEADED ARROW
+21A2;AL;LEFTWARDS ARROW WITH TAIL
+21A3;AL;RIGHTWARDS ARROW WITH TAIL
+21A4;AL;LEFTWARDS ARROW FROM BAR
+21A5;AL;UPWARDS ARROW FROM BAR
+21A6;AL;RIGHTWARDS ARROW FROM BAR
+21A7;AL;DOWNWARDS ARROW FROM BAR
+21A8;AL;UP DOWN ARROW WITH BASE
+21A9;AL;LEFTWARDS ARROW WITH HOOK
+21AA;AL;RIGHTWARDS ARROW WITH HOOK
+21AB;AL;LEFTWARDS ARROW WITH LOOP
+21AC;AL;RIGHTWARDS ARROW WITH LOOP
+21AD;AL;LEFT RIGHT WAVE ARROW
+21AE;AL;LEFT RIGHT ARROW WITH STROKE
+21AF;AL;DOWNWARDS ZIGZAG ARROW
+21B0;AL;UPWARDS ARROW WITH TIP LEFTWARDS
+21B1;AL;UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2;AL;DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3;AL;DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4;AL;RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5;AL;DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6;AL;ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7;AL;CLOCKWISE TOP SEMICIRCLE ARROW
+21B8;AL;NORTH WEST ARROW TO LONG BAR
+21B9;AL;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA;AL;ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB;AL;CLOCKWISE OPEN CIRCLE ARROW
+21BC;AL;LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD;AL;LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE;AL;UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF;AL;UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0;AL;RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1;AL;RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2;AL;DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3;AL;DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4;AL;RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5;AL;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6;AL;LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7;AL;LEFTWARDS PAIRED ARROWS
+21C8;AL;UPWARDS PAIRED ARROWS
+21C9;AL;RIGHTWARDS PAIRED ARROWS
+21CA;AL;DOWNWARDS PAIRED ARROWS
+21CB;AL;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC;AL;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD;AL;LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;AL;LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;AL;RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0;AL;LEFTWARDS DOUBLE ARROW
+21D1;AL;UPWARDS DOUBLE ARROW
+21D2;AI;RIGHTWARDS DOUBLE ARROW
+21D3;AL;DOWNWARDS DOUBLE ARROW
+21D4;AI;LEFT RIGHT DOUBLE ARROW
+21D5;AL;UP DOWN DOUBLE ARROW
+21D6;AL;NORTH WEST DOUBLE ARROW
+21D7;AL;NORTH EAST DOUBLE ARROW
+21D8;AL;SOUTH EAST DOUBLE ARROW
+21D9;AL;SOUTH WEST DOUBLE ARROW
+21DA;AL;LEFTWARDS TRIPLE ARROW
+21DB;AL;RIGHTWARDS TRIPLE ARROW
+21DC;AL;LEFTWARDS SQUIGGLE ARROW
+21DD;AL;RIGHTWARDS SQUIGGLE ARROW
+21DE;AL;UPWARDS ARROW WITH DOUBLE STROKE
+21DF;AL;DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0;AL;LEFTWARDS DASHED ARROW
+21E1;AL;UPWARDS DASHED ARROW
+21E2;AL;RIGHTWARDS DASHED ARROW
+21E3;AL;DOWNWARDS DASHED ARROW
+21E4;AL;LEFTWARDS ARROW TO BAR
+21E5;AL;RIGHTWARDS ARROW TO BAR
+21E6;AL;LEFTWARDS WHITE ARROW
+21E7;AL;UPWARDS WHITE ARROW
+21E8;AL;RIGHTWARDS WHITE ARROW
+21E9;AL;DOWNWARDS WHITE ARROW
+21EA;AL;UPWARDS WHITE ARROW FROM BAR
+21EB;AL;UPWARDS WHITE ARROW ON PEDESTAL
+21EC;AL;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED;AL;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE;AL;UPWARDS WHITE DOUBLE ARROW
+21EF;AL;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0;AL;RIGHTWARDS WHITE ARROW FROM WALL
+21F1;AL;NORTH WEST ARROW TO CORNER
+21F2;AL;SOUTH EAST ARROW TO CORNER
+21F3;AL;UP DOWN WHITE ARROW
+2200;AI;FOR ALL
+2201;AL;COMPLEMENT
+2202;AI;PARTIAL DIFFERENTIAL
+2203;AI;THERE EXISTS
+2204;AL;THERE DOES NOT EXIST
+2205;AL;EMPTY SET
+2206;AL;INCREMENT
+2207;AI;NABLA
+2208;AI;ELEMENT OF
+2209;AL;NOT AN ELEMENT OF
+220A;AL;SMALL ELEMENT OF
+220B;AI;CONTAINS AS MEMBER
+220C;AL;DOES NOT CONTAIN AS MEMBER
+220D;AL;SMALL CONTAINS AS MEMBER
+220E;AL;END OF PROOF
+220F;AI;N-ARY PRODUCT
+2210;AL;N-ARY COPRODUCT
+2211;AI;N-ARY SUMMATION
+2212;PR;MINUS SIGN
+2213;PR;MINUS-OR-PLUS SIGN
+2214;AL;DOT PLUS
+2215;AI;DIVISION SLASH
+2216;AL;SET MINUS
+2217;AL;ASTERISK OPERATOR
+2218;AL;RING OPERATOR
+2219;AL;BULLET OPERATOR
+221A;AI;SQUARE ROOT
+221B;AL;CUBE ROOT
+221C;AL;FOURTH ROOT
+221D;AI;PROPORTIONAL TO
+221E;AI;INFINITY
+221F;AI;RIGHT ANGLE
+2220;AI;ANGLE
+2221;AL;MEASURED ANGLE
+2222;AL;SPHERICAL ANGLE
+2223;AI;DIVIDES
+2224;AL;DOES NOT DIVIDE
+2225;AI;PARALLEL TO
+2226;AL;NOT PARALLEL TO
+2227;AI;LOGICAL AND
+2228;AI;LOGICAL OR
+2229;AI;INTERSECTION
+222A;AI;UNION
+222B;AI;INTEGRAL
+222C;AI;DOUBLE INTEGRAL
+222D;AL;TRIPLE INTEGRAL
+222E;AI;CONTOUR INTEGRAL
+222F;AL;SURFACE INTEGRAL
+2230;AL;VOLUME INTEGRAL
+2231;AL;CLOCKWISE INTEGRAL
+2232;AL;CLOCKWISE CONTOUR INTEGRAL
+2233;AL;ANTICLOCKWISE CONTOUR INTEGRAL
+2234;AI;THEREFORE
+2235;AI;BECAUSE
+2236;AI;RATIO
+2237;AI;PROPORTION
+2238;AL;DOT MINUS
+2239;AL;EXCESS
+223A;AL;GEOMETRIC PROPORTION
+223B;AL;HOMOTHETIC
+223C;AI;TILDE OPERATOR
+223D;AI;REVERSED TILDE
+223E;AL;INVERTED LAZY S
+223F;AL;SINE WAVE
+2240;AL;WREATH PRODUCT
+2241;AL;NOT TILDE
+2242;AL;MINUS TILDE
+2243;AL;ASYMPTOTICALLY EQUAL TO
+2244;AL;NOT ASYMPTOTICALLY EQUAL TO
+2245;AL;APPROXIMATELY EQUAL TO
+2246;AL;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247;AL;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248;AI;ALMOST EQUAL TO
+2249;AL;NOT ALMOST EQUAL TO
+224A;AL;ALMOST EQUAL OR EQUAL TO
+224B;AL;TRIPLE TILDE
+224C;AI;ALL EQUAL TO
+224D;AL;EQUIVALENT TO
+224E;AL;GEOMETRICALLY EQUIVALENT TO
+224F;AL;DIFFERENCE BETWEEN
+2250;AL;APPROACHES THE LIMIT
+2251;AL;GEOMETRICALLY EQUAL TO
+2252;AI;APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253;AL;IMAGE OF OR APPROXIMATELY EQUAL TO
+2254;AL;COLON EQUALS
+2255;AL;EQUALS COLON
+2256;AL;RING IN EQUAL TO
+2257;AL;RING EQUAL TO
+2258;AL;CORRESPONDS TO
+2259;AL;ESTIMATES
+225A;AL;EQUIANGULAR TO
+225B;AL;STAR EQUALS
+225C;AL;DELTA EQUAL TO
+225D;AL;EQUAL TO BY DEFINITION
+225E;AL;MEASURED BY
+225F;AL;QUESTIONED EQUAL TO
+2260;AI;NOT EQUAL TO
+2261;AI;IDENTICAL TO
+2262;AL;NOT IDENTICAL TO
+2263;AL;STRICTLY EQUIVALENT TO
+2264;AI;LESS-THAN OR EQUAL TO
+2265;AI;GREATER-THAN OR EQUAL TO
+2266;AI;LESS-THAN OVER EQUAL TO
+2267;AI;GREATER-THAN OVER EQUAL TO
+2268;AL;LESS-THAN BUT NOT EQUAL TO
+2269;AL;GREATER-THAN BUT NOT EQUAL TO
+226A;AI;MUCH LESS-THAN
+226B;AI;MUCH GREATER-THAN
+226C;AL;BETWEEN
+226D;AL;NOT EQUIVALENT TO
+226E;AI;NOT LESS-THAN
+226F;AI;NOT GREATER-THAN
+2270;AL;NEITHER LESS-THAN NOR EQUAL TO
+2271;AL;NEITHER GREATER-THAN NOR EQUAL TO
+2272;AL;LESS-THAN OR EQUIVALENT TO
+2273;AL;GREATER-THAN OR EQUIVALENT TO
+2274;AL;NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;AL;NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276;AL;LESS-THAN OR GREATER-THAN
+2277;AL;GREATER-THAN OR LESS-THAN
+2278;AL;NEITHER LESS-THAN NOR GREATER-THAN
+2279;AL;NEITHER GREATER-THAN NOR LESS-THAN
+227A;AL;PRECEDES
+227B;AL;SUCCEEDS
+227C;AL;PRECEDES OR EQUAL TO
+227D;AL;SUCCEEDS OR EQUAL TO
+227E;AL;PRECEDES OR EQUIVALENT TO
+227F;AL;SUCCEEDS OR EQUIVALENT TO
+2280;AL;DOES NOT PRECEDE
+2281;AL;DOES NOT SUCCEED
+2282;AI;SUBSET OF
+2283;AI;SUPERSET OF
+2284;AL;NOT A SUBSET OF
+2285;AL;NOT A SUPERSET OF
+2286;AI;SUBSET OF OR EQUAL TO
+2287;AI;SUPERSET OF OR EQUAL TO
+2288;AL;NEITHER A SUBSET OF NOR EQUAL TO
+2289;AL;NEITHER A SUPERSET OF NOR EQUAL TO
+228A;AL;SUBSET OF WITH NOT EQUAL TO
+228B;AL;SUPERSET OF WITH NOT EQUAL TO
+228C;AL;MULTISET
+228D;AL;MULTISET MULTIPLICATION
+228E;AL;MULTISET UNION
+228F;AL;SQUARE IMAGE OF
+2290;AL;SQUARE ORIGINAL OF
+2291;AL;SQUARE IMAGE OF OR EQUAL TO
+2292;AL;SQUARE ORIGINAL OF OR EQUAL TO
+2293;AL;SQUARE CAP
+2294;AL;SQUARE CUP
+2295;AI;CIRCLED PLUS
+2296;AL;CIRCLED MINUS
+2297;AL;CIRCLED TIMES
+2298;AL;CIRCLED DIVISION SLASH
+2299;AI;CIRCLED DOT OPERATOR
+229A;AL;CIRCLED RING OPERATOR
+229B;AL;CIRCLED ASTERISK OPERATOR
+229C;AL;CIRCLED EQUALS
+229D;AL;CIRCLED DASH
+229E;AL;SQUARED PLUS
+229F;AL;SQUARED MINUS
+22A0;AL;SQUARED TIMES
+22A1;AL;SQUARED DOT OPERATOR
+22A2;AL;RIGHT TACK
+22A3;AL;LEFT TACK
+22A4;AL;DOWN TACK
+22A5;AI;UP TACK
+22A6;AL;ASSERTION
+22A7;AL;MODELS
+22A8;AL;TRUE
+22A9;AL;FORCES
+22AA;AL;TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB;AL;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC;AL;DOES NOT PROVE
+22AD;AL;NOT TRUE
+22AE;AL;DOES NOT FORCE
+22AF;AL;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0;AL;PRECEDES UNDER RELATION
+22B1;AL;SUCCEEDS UNDER RELATION
+22B2;AL;NORMAL SUBGROUP OF
+22B3;AL;CONTAINS AS NORMAL SUBGROUP
+22B4;AL;NORMAL SUBGROUP OF OR EQUAL TO
+22B5;AL;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6;AL;ORIGINAL OF
+22B7;AL;IMAGE OF
+22B8;AL;MULTIMAP
+22B9;AL;HERMITIAN CONJUGATE MATRIX
+22BA;AL;INTERCALATE
+22BB;AL;XOR
+22BC;AL;NAND
+22BD;AL;NOR
+22BE;AL;RIGHT ANGLE WITH ARC
+22BF;AI;RIGHT TRIANGLE
+22C0;AL;N-ARY LOGICAL AND
+22C1;AL;N-ARY LOGICAL OR
+22C2;AL;N-ARY INTERSECTION
+22C3;AL;N-ARY UNION
+22C4;AL;DIAMOND OPERATOR
+22C5;AL;DOT OPERATOR
+22C6;AL;STAR OPERATOR
+22C7;AL;DIVISION TIMES
+22C8;AL;BOWTIE
+22C9;AL;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA;AL;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB;AL;LEFT SEMIDIRECT PRODUCT
+22CC;AL;RIGHT SEMIDIRECT PRODUCT
+22CD;AL;REVERSED TILDE EQUALS
+22CE;AL;CURLY LOGICAL OR
+22CF;AL;CURLY LOGICAL AND
+22D0;AL;DOUBLE SUBSET
+22D1;AL;DOUBLE SUPERSET
+22D2;AL;DOUBLE INTERSECTION
+22D3;AL;DOUBLE UNION
+22D4;AL;PITCHFORK
+22D5;AL;EQUAL AND PARALLEL TO
+22D6;AL;LESS-THAN WITH DOT
+22D7;AL;GREATER-THAN WITH DOT
+22D8;AL;VERY MUCH LESS-THAN
+22D9;AL;VERY MUCH GREATER-THAN
+22DA;AL;LESS-THAN EQUAL TO OR GREATER-THAN
+22DB;AL;GREATER-THAN EQUAL TO OR LESS-THAN
+22DC;AL;EQUAL TO OR LESS-THAN
+22DD;AL;EQUAL TO OR GREATER-THAN
+22DE;AL;EQUAL TO OR PRECEDES
+22DF;AL;EQUAL TO OR SUCCEEDS
+22E0;AL;DOES NOT PRECEDE OR EQUAL
+22E1;AL;DOES NOT SUCCEED OR EQUAL
+22E2;AL;NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;AL;NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4;AL;SQUARE IMAGE OF OR NOT EQUAL TO
+22E5;AL;SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6;AL;LESS-THAN BUT NOT EQUIVALENT TO
+22E7;AL;GREATER-THAN BUT NOT EQUIVALENT TO
+22E8;AL;PRECEDES BUT NOT EQUIVALENT TO
+22E9;AL;SUCCEEDS BUT NOT EQUIVALENT TO
+22EA;AL;NOT NORMAL SUBGROUP OF
+22EB;AL;DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;AL;NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;AL;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE;AL;VERTICAL ELLIPSIS
+22EF;AL;MIDLINE HORIZONTAL ELLIPSIS
+22F0;AL;UP RIGHT DIAGONAL ELLIPSIS
+22F1;AL;DOWN RIGHT DIAGONAL ELLIPSIS
+2300;AL;DIAMETER SIGN
+2301;AL;ELECTRIC ARROW
+2302;AL;HOUSE
+2303;AL;UP ARROWHEAD
+2304;AL;DOWN ARROWHEAD
+2305;AL;PROJECTIVE
+2306;AL;PERSPECTIVE
+2307;AL;WAVY LINE
+2308;AL;LEFT CEILING
+2309;AL;RIGHT CEILING
+230A;AL;LEFT FLOOR
+230B;AL;RIGHT FLOOR
+230C;AL;BOTTOM RIGHT CROP
+230D;AL;BOTTOM LEFT CROP
+230E;AL;TOP RIGHT CROP
+230F;AL;TOP LEFT CROP
+2310;AL;REVERSED NOT SIGN
+2311;AL;SQUARE LOZENGE
+2312;AI;ARC
+2313;AL;SEGMENT
+2314;AL;SECTOR
+2315;AL;TELEPHONE RECORDER
+2316;AL;POSITION INDICATOR
+2317;AL;VIEWDATA SQUARE
+2318;AL;PLACE OF INTEREST SIGN
+2319;AL;TURNED NOT SIGN
+231A;AL;WATCH
+231B;AL;HOURGLASS
+231C;AL;TOP LEFT CORNER
+231D;AL;TOP RIGHT CORNER
+231E;AL;BOTTOM LEFT CORNER
+231F;AL;BOTTOM RIGHT CORNER
+2320;AL;TOP HALF INTEGRAL
+2321;AL;BOTTOM HALF INTEGRAL
+2322;AL;FROWN
+2323;AL;SMILE
+2324;AL;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325;AL;OPTION KEY
+2326;AL;ERASE TO THE RIGHT
+2327;AL;X IN A RECTANGLE BOX
+2328;AL;KEYBOARD
+2329;OP;LEFT-POINTING ANGLE BRACKET
+232A;CL;RIGHT-POINTING ANGLE BRACKET
+232B;AL;ERASE TO THE LEFT
+232C;AL;BENZENE RING
+232D;AL;CYLINDRICITY
+232E;AL;ALL AROUND-PROFILE
+232F;AL;SYMMETRY
+2330;AL;TOTAL RUNOUT
+2331;AL;DIMENSION ORIGIN
+2332;AL;CONICAL TAPER
+2333;AL;SLOPE
+2334;AL;COUNTERBORE
+2335;AL;COUNTERSINK
+2336;AL;APL FUNCTIONAL SYMBOL I-BEAM
+2337;AL;APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338;AL;APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339;AL;APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A;AL;APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B;AL;APL FUNCTIONAL SYMBOL QUAD JOT
+233C;AL;APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D;AL;APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E;AL;APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F;AL;APL FUNCTIONAL SYMBOL SLASH BAR
+2340;AL;APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341;AL;APL FUNCTIONAL SYMBOL QUAD SLASH
+2342;AL;APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343;AL;APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344;AL;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345;AL;APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346;AL;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347;AL;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348;AL;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349;AL;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A;AL;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B;AL;APL FUNCTIONAL SYMBOL DELTA STILE
+234C;AL;APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D;AL;APL FUNCTIONAL SYMBOL QUAD DELTA
+234E;AL;APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F;AL;APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350;AL;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351;AL;APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352;AL;APL FUNCTIONAL SYMBOL DEL STILE
+2353;AL;APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354;AL;APL FUNCTIONAL SYMBOL QUAD DEL
+2355;AL;APL FUNCTIONAL SYMBOL UP TACK JOT
+2356;AL;APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357;AL;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358;AL;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359;AL;APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A;AL;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B;AL;APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C;AL;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D;AL;APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E;AL;APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F;AL;APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360;AL;APL FUNCTIONAL SYMBOL QUAD COLON
+2361;AL;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362;AL;APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363;AL;APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364;AL;APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365;AL;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366;AL;APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367;AL;APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368;AL;APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369;AL;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A;AL;APL FUNCTIONAL SYMBOL COMMA BAR
+236B;AL;APL FUNCTIONAL SYMBOL DEL TILDE
+236C;AL;APL FUNCTIONAL SYMBOL ZILDE
+236D;AL;APL FUNCTIONAL SYMBOL STILE TILDE
+236E;AL;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F;AL;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370;AL;APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371;AL;APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372;AL;APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373;AL;APL FUNCTIONAL SYMBOL IOTA
+2374;AL;APL FUNCTIONAL SYMBOL RHO
+2375;AL;APL FUNCTIONAL SYMBOL OMEGA
+2376;AL;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377;AL;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378;AL;APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379;AL;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A;AL;APL FUNCTIONAL SYMBOL ALPHA
+237B;AL;NOT CHECK MARK
+237D;AL;SHOULDERED OPEN BOX
+237E;AL;BELL SYMBOL
+237F;AL;VERTICAL LINE WITH MIDDLE DOT
+2380;AL;INSERTION SYMBOL
+2381;AL;CONTINUOUS UNDERLINE SYMBOL
+2382;AL;DISCONTINUOUS UNDERLINE SYMBOL
+2383;AL;EMPHASIS SYMBOL
+2384;AL;COMPOSITION SYMBOL
+2385;AL;WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386;AL;ENTER SYMBOL
+2387;AL;ALTERNATIVE KEY SYMBOL
+2388;AL;HELM SYMBOL
+2389;AL;CIRCLED HORIZONTAL BAR WITH NOTCH
+238A;AL;CIRCLED TRIANGLE DOWN
+238B;AL;BROKEN CIRCLE WITH NORTHWEST ARROW
+238C;AL;UNDO SYMBOL
+238D;AL;MONOSTABLE SYMBOL
+238E;AL;HYSTERESIS SYMBOL
+238F;AL;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390;AL;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391;AL;PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392;AL;PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393;AL;DIRECT CURRENT SYMBOL FORM TWO
+2394;AL;SOFTWARE-FUNCTION SYMBOL
+2395;AL;APL FUNCTIONAL SYMBOL QUAD
+2396;AL;DECIMAL SEPARATOR KEY SYMBOL
+2397;AL;PREVIOUS PAGE
+2398;AL;NEXT PAGE
+2399;AL;PRINT SCREEN SYMBOL
+239A;AL;CLEAR SCREEN SYMBOL
+2400;AL;SYMBOL FOR NULL
+2401;AL;SYMBOL FOR START OF HEADING
+2402;AL;SYMBOL FOR START OF TEXT
+2403;AL;SYMBOL FOR END OF TEXT
+2404;AL;SYMBOL FOR END OF TRANSMISSION
+2405;AL;SYMBOL FOR ENQUIRY
+2406;AL;SYMBOL FOR ACKNOWLEDGE
+2407;AL;SYMBOL FOR BELL
+2408;AL;SYMBOL FOR BACKSPACE
+2409;AL;SYMBOL FOR HORIZONTAL TABULATION
+240A;AL;SYMBOL FOR LINE FEED
+240B;AL;SYMBOL FOR VERTICAL TABULATION
+240C;AL;SYMBOL FOR FORM FEED
+240D;AL;SYMBOL FOR CARRIAGE RETURN
+240E;AL;SYMBOL FOR SHIFT OUT
+240F;AL;SYMBOL FOR SHIFT IN
+2410;AL;SYMBOL FOR DATA LINK ESCAPE
+2411;AL;SYMBOL FOR DEVICE CONTROL ONE
+2412;AL;SYMBOL FOR DEVICE CONTROL TWO
+2413;AL;SYMBOL FOR DEVICE CONTROL THREE
+2414;AL;SYMBOL FOR DEVICE CONTROL FOUR
+2415;AL;SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416;AL;SYMBOL FOR SYNCHRONOUS IDLE
+2417;AL;SYMBOL FOR END OF TRANSMISSION BLOCK
+2418;AL;SYMBOL FOR CANCEL
+2419;AL;SYMBOL FOR END OF MEDIUM
+241A;AL;SYMBOL FOR SUBSTITUTE
+241B;AL;SYMBOL FOR ESCAPE
+241C;AL;SYMBOL FOR FILE SEPARATOR
+241D;AL;SYMBOL FOR GROUP SEPARATOR
+241E;AL;SYMBOL FOR RECORD SEPARATOR
+241F;AL;SYMBOL FOR UNIT SEPARATOR
+2420;AL;SYMBOL FOR SPACE
+2421;AL;SYMBOL FOR DELETE
+2422;AL;BLANK SYMBOL
+2423;AL;OPEN BOX
+2424;AL;SYMBOL FOR NEWLINE
+2425;AL;SYMBOL FOR DELETE FORM TWO
+2426;AL;SYMBOL FOR SUBSTITUTE FORM TWO
+2440;AL;OCR HOOK
+2441;AL;OCR CHAIR
+2442;AL;OCR FORK
+2443;AL;OCR INVERTED FORK
+2444;AL;OCR BELT BUCKLE
+2445;AL;OCR BOW TIE
+2446;AL;OCR BRANCH BANK IDENTIFICATION
+2447;AL;OCR AMOUNT OF CHECK
+2448;AL;OCR DASH
+2449;AL;OCR CUSTOMER ACCOUNT NUMBER
+244A;AL;OCR DOUBLE BACKSLASH
+2460;AI;CIRCLED DIGIT ONE
+2461;AI;CIRCLED DIGIT TWO
+2462;AI;CIRCLED DIGIT THREE
+2463;AI;CIRCLED DIGIT FOUR
+2464;AI;CIRCLED DIGIT FIVE
+2465;AI;CIRCLED DIGIT SIX
+2466;AI;CIRCLED DIGIT SEVEN
+2467;AI;CIRCLED DIGIT EIGHT
+2468;AI;CIRCLED DIGIT NINE
+2469;AI;CIRCLED NUMBER TEN
+246A;AI;CIRCLED NUMBER ELEVEN
+246B;AI;CIRCLED NUMBER TWELVE
+246C;AI;CIRCLED NUMBER THIRTEEN
+246D;AI;CIRCLED NUMBER FOURTEEN
+246E;AI;CIRCLED NUMBER FIFTEEN
+246F;AI;CIRCLED NUMBER SIXTEEN
+2470;AI;CIRCLED NUMBER SEVENTEEN
+2471;AI;CIRCLED NUMBER EIGHTEEN
+2472;AI;CIRCLED NUMBER NINETEEN
+2473;AI;CIRCLED NUMBER TWENTY
+2474;AI;PARENTHESIZED DIGIT ONE
+2475;AI;PARENTHESIZED DIGIT TWO
+2476;AI;PARENTHESIZED DIGIT THREE
+2477;AI;PARENTHESIZED DIGIT FOUR
+2478;AI;PARENTHESIZED DIGIT FIVE
+2479;AI;PARENTHESIZED DIGIT SIX
+247A;AI;PARENTHESIZED DIGIT SEVEN
+247B;AI;PARENTHESIZED DIGIT EIGHT
+247C;AI;PARENTHESIZED DIGIT NINE
+247D;AI;PARENTHESIZED NUMBER TEN
+247E;AI;PARENTHESIZED NUMBER ELEVEN
+247F;AI;PARENTHESIZED NUMBER TWELVE
+2480;AI;PARENTHESIZED NUMBER THIRTEEN
+2481;AI;PARENTHESIZED NUMBER FOURTEEN
+2482;AI;PARENTHESIZED NUMBER FIFTEEN
+2483;AI;PARENTHESIZED NUMBER SIXTEEN
+2484;AI;PARENTHESIZED NUMBER SEVENTEEN
+2485;AI;PARENTHESIZED NUMBER EIGHTEEN
+2486;AI;PARENTHESIZED NUMBER NINETEEN
+2487;AI;PARENTHESIZED NUMBER TWENTY
+2488;AI;DIGIT ONE FULL STOP
+2489;AI;DIGIT TWO FULL STOP
+248A;AI;DIGIT THREE FULL STOP
+248B;AI;DIGIT FOUR FULL STOP
+248C;AI;DIGIT FIVE FULL STOP
+248D;AI;DIGIT SIX FULL STOP
+248E;AI;DIGIT SEVEN FULL STOP
+248F;AI;DIGIT EIGHT FULL STOP
+2490;AI;DIGIT NINE FULL STOP
+2491;AI;NUMBER TEN FULL STOP
+2492;AI;NUMBER ELEVEN FULL STOP
+2493;AI;NUMBER TWELVE FULL STOP
+2494;AI;NUMBER THIRTEEN FULL STOP
+2495;AI;NUMBER FOURTEEN FULL STOP
+2496;AI;NUMBER FIFTEEN FULL STOP
+2497;AI;NUMBER SIXTEEN FULL STOP
+2498;AI;NUMBER SEVENTEEN FULL STOP
+2499;AI;NUMBER EIGHTEEN FULL STOP
+249A;AI;NUMBER NINETEEN FULL STOP
+249B;AI;NUMBER TWENTY FULL STOP
+249C;AI;PARENTHESIZED LATIN SMALL LETTER A
+249D;AI;PARENTHESIZED LATIN SMALL LETTER B
+249E;AI;PARENTHESIZED LATIN SMALL LETTER C
+249F;AI;PARENTHESIZED LATIN SMALL LETTER D
+24A0;AI;PARENTHESIZED LATIN SMALL LETTER E
+24A1;AI;PARENTHESIZED LATIN SMALL LETTER F
+24A2;AI;PARENTHESIZED LATIN SMALL LETTER G
+24A3;AI;PARENTHESIZED LATIN SMALL LETTER H
+24A4;AI;PARENTHESIZED LATIN SMALL LETTER I
+24A5;AI;PARENTHESIZED LATIN SMALL LETTER J
+24A6;AI;PARENTHESIZED LATIN SMALL LETTER K
+24A7;AI;PARENTHESIZED LATIN SMALL LETTER L
+24A8;AI;PARENTHESIZED LATIN SMALL LETTER M
+24A9;AI;PARENTHESIZED LATIN SMALL LETTER N
+24AA;AI;PARENTHESIZED LATIN SMALL LETTER O
+24AB;AI;PARENTHESIZED LATIN SMALL LETTER P
+24AC;AI;PARENTHESIZED LATIN SMALL LETTER Q
+24AD;AI;PARENTHESIZED LATIN SMALL LETTER R
+24AE;AI;PARENTHESIZED LATIN SMALL LETTER S
+24AF;AI;PARENTHESIZED LATIN SMALL LETTER T
+24B0;AI;PARENTHESIZED LATIN SMALL LETTER U
+24B1;AI;PARENTHESIZED LATIN SMALL LETTER V
+24B2;AI;PARENTHESIZED LATIN SMALL LETTER W
+24B3;AI;PARENTHESIZED LATIN SMALL LETTER X
+24B4;AI;PARENTHESIZED LATIN SMALL LETTER Y
+24B5;AI;PARENTHESIZED LATIN SMALL LETTER Z
+24B6;AI;CIRCLED LATIN CAPITAL LETTER A
+24B7;AI;CIRCLED LATIN CAPITAL LETTER B
+24B8;AI;CIRCLED LATIN CAPITAL LETTER C
+24B9;AI;CIRCLED LATIN CAPITAL LETTER D
+24BA;AI;CIRCLED LATIN CAPITAL LETTER E
+24BB;AI;CIRCLED LATIN CAPITAL LETTER F
+24BC;AI;CIRCLED LATIN CAPITAL LETTER G
+24BD;AI;CIRCLED LATIN CAPITAL LETTER H
+24BE;AI;CIRCLED LATIN CAPITAL LETTER I
+24BF;AI;CIRCLED LATIN CAPITAL LETTER J
+24C0;AL;CIRCLED LATIN CAPITAL LETTER K
+24C1;AL;CIRCLED LATIN CAPITAL LETTER L
+24C2;AL;CIRCLED LATIN CAPITAL LETTER M
+24C3;AL;CIRCLED LATIN CAPITAL LETTER N
+24C4;AL;CIRCLED LATIN CAPITAL LETTER O
+24C5;AL;CIRCLED LATIN CAPITAL LETTER P
+24C6;AL;CIRCLED LATIN CAPITAL LETTER Q
+24C7;AL;CIRCLED LATIN CAPITAL LETTER R
+24C8;AL;CIRCLED LATIN CAPITAL LETTER S
+24C9;AL;CIRCLED LATIN CAPITAL LETTER T
+24CA;AL;CIRCLED LATIN CAPITAL LETTER U
+24CB;AL;CIRCLED LATIN CAPITAL LETTER V
+24CC;AL;CIRCLED LATIN CAPITAL LETTER W
+24CD;AL;CIRCLED LATIN CAPITAL LETTER X
+24CE;AL;CIRCLED LATIN CAPITAL LETTER Y
+24CF;AL;CIRCLED LATIN CAPITAL LETTER Z
+24D0;AI;CIRCLED LATIN SMALL LETTER A
+24D1;AI;CIRCLED LATIN SMALL LETTER B
+24D2;AI;CIRCLED LATIN SMALL LETTER C
+24D3;AI;CIRCLED LATIN SMALL LETTER D
+24D4;AI;CIRCLED LATIN SMALL LETTER E
+24D5;AI;CIRCLED LATIN SMALL LETTER F
+24D6;AI;CIRCLED LATIN SMALL LETTER G
+24D7;AI;CIRCLED LATIN SMALL LETTER H
+24D8;AI;CIRCLED LATIN SMALL LETTER I
+24D9;AI;CIRCLED LATIN SMALL LETTER J
+24DA;AI;CIRCLED LATIN SMALL LETTER K
+24DB;AI;CIRCLED LATIN SMALL LETTER L
+24DC;AI;CIRCLED LATIN SMALL LETTER M
+24DD;AI;CIRCLED LATIN SMALL LETTER N
+24DE;AI;CIRCLED LATIN SMALL LETTER O
+24DF;AI;CIRCLED LATIN SMALL LETTER P
+24E0;AI;CIRCLED LATIN SMALL LETTER Q
+24E1;AI;CIRCLED LATIN SMALL LETTER R
+24E2;AI;CIRCLED LATIN SMALL LETTER S
+24E3;AI;CIRCLED LATIN SMALL LETTER T
+24E4;AI;CIRCLED LATIN SMALL LETTER U
+24E5;AI;CIRCLED LATIN SMALL LETTER V
+24E6;AI;CIRCLED LATIN SMALL LETTER W
+24E7;AI;CIRCLED LATIN SMALL LETTER X
+24E8;AI;CIRCLED LATIN SMALL LETTER Y
+24E9;AI;CIRCLED LATIN SMALL LETTER Z
+24EA;AL;CIRCLED DIGIT ZERO
+2500;AI;BOX DRAWINGS LIGHT HORIZONTAL
+2501;AI;BOX DRAWINGS HEAVY HORIZONTAL
+2502;AI;BOX DRAWINGS LIGHT VERTICAL
+2503;AI;BOX DRAWINGS HEAVY VERTICAL
+2504;AI;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505;AI;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506;AI;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507;AI;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508;AI;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509;AI;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A;AI;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B;AI;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C;AI;BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D;AI;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E;AI;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F;AI;BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510;AI;BOX DRAWINGS LIGHT DOWN AND LEFT
+2511;AI;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512;AI;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513;AI;BOX DRAWINGS HEAVY DOWN AND LEFT
+2514;AI;BOX DRAWINGS LIGHT UP AND RIGHT
+2515;AI;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516;AI;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517;AI;BOX DRAWINGS HEAVY UP AND RIGHT
+2518;AI;BOX DRAWINGS LIGHT UP AND LEFT
+2519;AI;BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A;AI;BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B;AI;BOX DRAWINGS HEAVY UP AND LEFT
+251C;AI;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D;AI;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E;AI;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F;AI;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520;AI;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521;AI;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522;AI;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523;AI;BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524;AI;BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525;AI;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526;AI;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527;AI;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528;AI;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529;AI;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A;AI;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B;AI;BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C;AI;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F;AI;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530;AI;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533;AI;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534;AI;BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537;AI;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538;AI;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B;AI;BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C;AI;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F;AI;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540;AI;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541;AI;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542;AI;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543;AI;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544;AI;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545;AI;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546;AI;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547;AI;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548;AI;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B;AI;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C;AL;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D;AL;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E;AL;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F;AL;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550;AI;BOX DRAWINGS DOUBLE HORIZONTAL
+2551;AI;BOX DRAWINGS DOUBLE VERTICAL
+2552;AI;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;AI;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554;AI;BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555;AI;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556;AI;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557;AI;BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558;AI;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559;AI;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A;AI;BOX DRAWINGS DOUBLE UP AND RIGHT
+255B;AI;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C;AI;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D;AI;BOX DRAWINGS DOUBLE UP AND LEFT
+255E;AI;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;AI;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560;AI;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561;AI;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;AI;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563;AI;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564;AI;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;AI;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566;AI;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567;AI;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;AI;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569;AI;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A;AI;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B;AI;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C;AI;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D;AI;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E;AI;BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F;AI;BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570;AI;BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571;AI;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572;AI;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573;AI;BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574;AI;BOX DRAWINGS LIGHT LEFT
+2575;AL;BOX DRAWINGS LIGHT UP
+2576;AL;BOX DRAWINGS LIGHT RIGHT
+2577;AL;BOX DRAWINGS LIGHT DOWN
+2578;AL;BOX DRAWINGS HEAVY LEFT
+2579;AL;BOX DRAWINGS HEAVY UP
+257A;AL;BOX DRAWINGS HEAVY RIGHT
+257B;AL;BOX DRAWINGS HEAVY DOWN
+257C;AL;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D;AL;BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E;AL;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F;AL;BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580;AI;UPPER HALF BLOCK
+2581;AI;LOWER ONE EIGHTH BLOCK
+2582;AI;LOWER ONE QUARTER BLOCK
+2583;AI;LOWER THREE EIGHTHS BLOCK
+2584;AI;LOWER HALF BLOCK
+2585;AI;LOWER FIVE EIGHTHS BLOCK
+2586;AI;LOWER THREE QUARTERS BLOCK
+2587;AI;LOWER SEVEN EIGHTHS BLOCK
+2588;AI;FULL BLOCK
+2589;AI;LEFT SEVEN EIGHTHS BLOCK
+258A;AI;LEFT THREE QUARTERS BLOCK
+258B;AI;LEFT FIVE EIGHTHS BLOCK
+258C;AI;LEFT HALF BLOCK
+258D;AI;LEFT THREE EIGHTHS BLOCK
+258E;AI;LEFT ONE QUARTER BLOCK
+258F;AI;LEFT ONE EIGHTH BLOCK
+2590;AL;RIGHT HALF BLOCK
+2591;AL;LIGHT SHADE
+2592;AI;MEDIUM SHADE
+2593;AI;DARK SHADE
+2594;AI;UPPER ONE EIGHTH BLOCK
+2595;AI;RIGHT ONE EIGHTH BLOCK
+25A0;AI;BLACK SQUARE
+25A1;AI;WHITE SQUARE
+25A2;AL;WHITE SQUARE WITH ROUNDED CORNERS
+25A3;AI;WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4;AI;SQUARE WITH HORIZONTAL FILL
+25A5;AI;SQUARE WITH VERTICAL FILL
+25A6;AI;SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7;AI;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8;AI;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9;AI;SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA;AL;BLACK SMALL SQUARE
+25AB;AL;WHITE SMALL SQUARE
+25AC;AL;BLACK RECTANGLE
+25AD;AL;WHITE RECTANGLE
+25AE;AL;BLACK VERTICAL RECTANGLE
+25AF;AL;WHITE VERTICAL RECTANGLE
+25B0;AL;BLACK PARALLELOGRAM
+25B1;AL;WHITE PARALLELOGRAM
+25B2;AI;BLACK UP-POINTING TRIANGLE
+25B3;AI;WHITE UP-POINTING TRIANGLE
+25B4;AL;BLACK UP-POINTING SMALL TRIANGLE
+25B5;AL;WHITE UP-POINTING SMALL TRIANGLE
+25B6;AI;BLACK RIGHT-POINTING TRIANGLE
+25B7;AI;WHITE RIGHT-POINTING TRIANGLE
+25B8;AL;BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9;AL;WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA;AL;BLACK RIGHT-POINTING POINTER
+25BB;AL;WHITE RIGHT-POINTING POINTER
+25BC;AI;BLACK DOWN-POINTING TRIANGLE
+25BD;AI;WHITE DOWN-POINTING TRIANGLE
+25BE;AL;BLACK DOWN-POINTING SMALL TRIANGLE
+25BF;AL;WHITE DOWN-POINTING SMALL TRIANGLE
+25C0;AI;BLACK LEFT-POINTING TRIANGLE
+25C1;AI;WHITE LEFT-POINTING TRIANGLE
+25C2;AL;BLACK LEFT-POINTING SMALL TRIANGLE
+25C3;AL;WHITE LEFT-POINTING SMALL TRIANGLE
+25C4;AL;BLACK LEFT-POINTING POINTER
+25C5;AL;WHITE LEFT-POINTING POINTER
+25C6;AI;BLACK DIAMOND
+25C7;AI;WHITE DIAMOND
+25C8;AL;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9;AL;FISHEYE
+25CA;AL;LOZENGE
+25CB;AI;WHITE CIRCLE
+25CC;AL;DOTTED CIRCLE
+25CD;AL;CIRCLE WITH VERTICAL FILL
+25CE;AI;BULLSEYE
+25CF;AI;BLACK CIRCLE
+25D0;AI;CIRCLE WITH LEFT HALF BLACK
+25D1;AI;CIRCLE WITH RIGHT HALF BLACK
+25D2;AL;CIRCLE WITH LOWER HALF BLACK
+25D3;AL;CIRCLE WITH UPPER HALF BLACK
+25D4;AL;CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5;AL;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6;AL;LEFT HALF BLACK CIRCLE
+25D7;AL;RIGHT HALF BLACK CIRCLE
+25D8;AL;INVERSE BULLET
+25D9;AL;INVERSE WHITE CIRCLE
+25DA;AL;UPPER HALF INVERSE WHITE CIRCLE
+25DB;AL;LOWER HALF INVERSE WHITE CIRCLE
+25DC;AL;UPPER LEFT QUADRANT CIRCULAR ARC
+25DD;AL;UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE;AL;LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF;AL;LOWER LEFT QUADRANT CIRCULAR ARC
+25E0;AL;UPPER HALF CIRCLE
+25E1;AL;LOWER HALF CIRCLE
+25E2;AI;BLACK LOWER RIGHT TRIANGLE
+25E3;AI;BLACK LOWER LEFT TRIANGLE
+25E4;AI;BLACK UPPER LEFT TRIANGLE
+25E5;AI;BLACK UPPER RIGHT TRIANGLE
+25E6;AL;WHITE BULLET
+25E7;AL;SQUARE WITH LEFT HALF BLACK
+25E8;AL;SQUARE WITH RIGHT HALF BLACK
+25E9;AL;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA;AL;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB;AL;WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC;AL;WHITE UP-POINTING TRIANGLE WITH DOT
+25ED;AL;UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE;AL;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF;AI;LARGE CIRCLE
+25F0;AL;WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1;AL;WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2;AL;WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3;AL;WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4;AL;WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5;AL;WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6;AL;WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7;AL;WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600;AL;BLACK SUN WITH RAYS
+2601;AL;CLOUD
+2602;AL;UMBRELLA
+2603;AL;SNOWMAN
+2604;AL;COMET
+2605;AI;BLACK STAR
+2606;AI;WHITE STAR
+2607;AL;LIGHTNING
+2608;AL;THUNDERSTORM
+2609;AI;SUN
+260A;AL;ASCENDING NODE
+260B;AL;DESCENDING NODE
+260C;AL;CONJUNCTION
+260D;AL;OPPOSITION
+260E;AI;BLACK TELEPHONE
+260F;AI;WHITE TELEPHONE
+2610;AL;BALLOT BOX
+2611;AL;BALLOT BOX WITH CHECK
+2612;AL;BALLOT BOX WITH X
+2613;AL;SALTIRE
+2619;AL;REVERSED ROTATED FLORAL HEART BULLET
+261A;AL;BLACK LEFT POINTING INDEX
+261B;AL;BLACK RIGHT POINTING INDEX
+261C;AI;WHITE LEFT POINTING INDEX
+261D;AL;WHITE UP POINTING INDEX
+261E;AI;WHITE RIGHT POINTING INDEX
+261F;AL;WHITE DOWN POINTING INDEX
+2620;AL;SKULL AND CROSSBONES
+2621;AL;CAUTION SIGN
+2622;AL;RADIOACTIVE SIGN
+2623;AL;BIOHAZARD SIGN
+2624;AL;CADUCEUS
+2625;AL;ANKH
+2626;AL;ORTHODOX CROSS
+2627;AL;CHI RHO
+2628;AL;CROSS OF LORRAINE
+2629;AL;CROSS OF JERUSALEM
+262A;AL;STAR AND CRESCENT
+262B;AL;FARSI SYMBOL
+262C;AL;ADI SHAKTI
+262D;AL;HAMMER AND SICKLE
+262E;AL;PEACE SYMBOL
+262F;AL;YIN YANG
+2630;AL;TRIGRAM FOR HEAVEN
+2631;AL;TRIGRAM FOR LAKE
+2632;AL;TRIGRAM FOR FIRE
+2633;AL;TRIGRAM FOR THUNDER
+2634;AL;TRIGRAM FOR WIND
+2635;AL;TRIGRAM FOR WATER
+2636;AL;TRIGRAM FOR MOUNTAIN
+2637;AL;TRIGRAM FOR EARTH
+2638;AL;WHEEL OF DHARMA
+2639;AL;WHITE FROWNING FACE
+263A;AL;WHITE SMILING FACE
+263B;AL;BLACK SMILING FACE
+263C;AL;WHITE SUN WITH RAYS
+263D;AL;FIRST QUARTER MOON
+263E;AL;LAST QUARTER MOON
+263F;AL;MERCURY
+2640;AI;FEMALE SIGN
+2641;AL;EARTH
+2642;AI;MALE SIGN
+2643;AL;JUPITER
+2644;AL;SATURN
+2645;AL;URANUS
+2646;AL;NEPTUNE
+2647;AL;PLUTO
+2648;AL;ARIES
+2649;AL;TAURUS
+264A;AL;GEMINI
+264B;AL;CANCER
+264C;AL;LEO
+264D;AL;VIRGO
+264E;AL;LIBRA
+264F;AL;SCORPIUS
+2650;AL;SAGITTARIUS
+2651;AL;CAPRICORN
+2652;AL;AQUARIUS
+2653;AL;PISCES
+2654;AL;WHITE CHESS KING
+2655;AL;WHITE CHESS QUEEN
+2656;AL;WHITE CHESS ROOK
+2657;AL;WHITE CHESS BISHOP
+2658;AL;WHITE CHESS KNIGHT
+2659;AL;WHITE CHESS PAWN
+265A;AL;BLACK CHESS KING
+265B;AL;BLACK CHESS QUEEN
+265C;AL;BLACK CHESS ROOK
+265D;AL;BLACK CHESS BISHOP
+265E;AL;BLACK CHESS KNIGHT
+265F;AL;BLACK CHESS PAWN
+2660;AI;BLACK SPADE SUIT
+2661;AI;WHITE HEART SUIT
+2662;AL;WHITE DIAMOND SUIT
+2663;AI;BLACK CLUB SUIT
+2664;AI;WHITE SPADE SUIT
+2665;AI;BLACK HEART SUIT
+2666;AL;BLACK DIAMOND SUIT
+2667;AI;WHITE CLUB SUIT
+2668;AI;HOT SPRINGS
+2669;AI;QUARTER NOTE
+266A;AI;EIGHTH NOTE
+266B;AL;BEAMED EIGHTH NOTES
+266C;AI;BEAMED SIXTEENTH NOTES
+266D;AI;MUSIC FLAT SIGN
+266E;AL;MUSIC NATURAL SIGN
+266F;AI;MUSIC SHARP SIGN
+2670;AL;WEST SYRIAC CROSS
+2671;AL;EAST SYRIAC CROSS
+2701;AL;UPPER BLADE SCISSORS
+2702;AL;BLACK SCISSORS
+2703;AL;LOWER BLADE SCISSORS
+2704;AL;WHITE SCISSORS
+2706;AL;TELEPHONE LOCATION SIGN
+2707;AL;TAPE DRIVE
+2708;AL;AIRPLANE
+2709;AL;ENVELOPE
+270C;AL;VICTORY HAND
+270D;AL;WRITING HAND
+270E;AL;LOWER RIGHT PENCIL
+270F;AL;PENCIL
+2710;AL;UPPER RIGHT PENCIL
+2711;AL;WHITE NIB
+2712;AL;BLACK NIB
+2713;AL;CHECK MARK
+2714;AL;HEAVY CHECK MARK
+2715;AL;MULTIPLICATION X
+2716;AL;HEAVY MULTIPLICATION X
+2717;AL;BALLOT X
+2718;AL;HEAVY BALLOT X
+2719;AL;OUTLINED GREEK CROSS
+271A;AL;HEAVY GREEK CROSS
+271B;AL;OPEN CENTRE CROSS
+271C;AL;HEAVY OPEN CENTRE CROSS
+271D;AL;LATIN CROSS
+271E;AL;SHADOWED WHITE LATIN CROSS
+271F;AL;OUTLINED LATIN CROSS
+2720;AL;MALTESE CROSS
+2721;AL;STAR OF DAVID
+2722;AL;FOUR TEARDROP-SPOKED ASTERISK
+2723;AL;FOUR BALLOON-SPOKED ASTERISK
+2724;AL;HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725;AL;FOUR CLUB-SPOKED ASTERISK
+2726;AL;BLACK FOUR POINTED STAR
+2727;AL;WHITE FOUR POINTED STAR
+2729;AL;STRESS OUTLINED WHITE STAR
+272A;AL;CIRCLED WHITE STAR
+272B;AL;OPEN CENTRE BLACK STAR
+272C;AL;BLACK CENTRE WHITE STAR
+272D;AL;OUTLINED BLACK STAR
+272E;AL;HEAVY OUTLINED BLACK STAR
+272F;AL;PINWHEEL STAR
+2730;AL;SHADOWED WHITE STAR
+2731;AL;HEAVY ASTERISK
+2732;AL;OPEN CENTRE ASTERISK
+2733;AL;EIGHT SPOKED ASTERISK
+2734;AL;EIGHT POINTED BLACK STAR
+2735;AL;EIGHT POINTED PINWHEEL STAR
+2736;AL;SIX POINTED BLACK STAR
+2737;AL;EIGHT POINTED RECTILINEAR BLACK STAR
+2738;AL;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739;AL;TWELVE POINTED BLACK STAR
+273A;AL;SIXTEEN POINTED ASTERISK
+273B;AL;TEARDROP-SPOKED ASTERISK
+273C;AL;OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D;AL;HEAVY TEARDROP-SPOKED ASTERISK
+273E;AL;SIX PETALLED BLACK AND WHITE FLORETTE
+273F;AL;BLACK FLORETTE
+2740;AL;WHITE FLORETTE
+2741;AL;EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742;AL;CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743;AL;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744;AL;SNOWFLAKE
+2745;AL;TIGHT TRIFOLIATE SNOWFLAKE
+2746;AL;HEAVY CHEVRON SNOWFLAKE
+2747;AL;SPARKLE
+2748;AL;HEAVY SPARKLE
+2749;AL;BALLOON-SPOKED ASTERISK
+274A;AL;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B;AL;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D;AL;SHADOWED WHITE CIRCLE
+274F;AL;LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750;AL;UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751;AL;LOWER RIGHT SHADOWED WHITE SQUARE
+2752;AL;UPPER RIGHT SHADOWED WHITE SQUARE
+2756;AL;BLACK DIAMOND MINUS WHITE X
+2758;AL;LIGHT VERTICAL BAR
+2759;AL;MEDIUM VERTICAL BAR
+275A;AL;HEAVY VERTICAL BAR
+275B;AL;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C;AL;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D;AL;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E;AL;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761;AL;CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762;AL;HEAVY EXCLAMATION MARK ORNAMENT
+2763;AL;HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764;AL;HEAVY BLACK HEART
+2765;AL;ROTATED HEAVY BLACK HEART BULLET
+2766;AL;FLORAL HEART
+2767;AL;ROTATED FLORAL HEART BULLET
+2776;AL;DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777;AL;DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778;AL;DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779;AL;DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277A;AL;DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277B;AL;DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277C;AL;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277D;AL;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277E;AL;DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277F;AL;DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780;AL;DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781;AL;DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782;AL;DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783;AL;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784;AL;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785;AL;DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786;AL;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787;AL;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788;AL;DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789;AL;DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278A;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278B;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278C;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278D;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278E;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278F;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794;AL;HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798;AL;HEAVY SOUTH EAST ARROW
+2799;AL;HEAVY RIGHTWARDS ARROW
+279A;AL;HEAVY NORTH EAST ARROW
+279B;AL;DRAFTING POINT RIGHTWARDS ARROW
+279C;AL;HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D;AL;TRIANGLE-HEADED RIGHTWARDS ARROW
+279E;AL;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F;AL;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0;AL;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1;AL;BLACK RIGHTWARDS ARROW
+27A2;AL;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3;AL;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4;AL;BLACK RIGHTWARDS ARROWHEAD
+27A5;AL;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6;AL;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7;AL;SQUAT BLACK RIGHTWARDS ARROW
+27A8;AL;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9;AL;RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA;AL;LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB;AL;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC;AL;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD;AL;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE;AL;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF;AL;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1;AL;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2;AL;CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3;AL;WHITE-FEATHERED RIGHTWARDS ARROW
+27B4;AL;BLACK-FEATHERED SOUTH EAST ARROW
+27B5;AL;BLACK-FEATHERED RIGHTWARDS ARROW
+27B6;AL;BLACK-FEATHERED NORTH EAST ARROW
+27B7;AL;HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8;AL;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9;AL;HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA;AL;TEARDROP-BARBED RIGHTWARDS ARROW
+27BB;AL;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC;AL;WEDGE-TAILED RIGHTWARDS ARROW
+27BD;AL;HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE;AL;OPEN-OUTLINED RIGHTWARDS ARROW
+2800;AL;BRAILLE PATTERN BLANK
+2801;AL;BRAILLE PATTERN DOTS-1
+2802;AL;BRAILLE PATTERN DOTS-2
+2803;AL;BRAILLE PATTERN DOTS-12
+2804;AL;BRAILLE PATTERN DOTS-3
+2805;AL;BRAILLE PATTERN DOTS-13
+2806;AL;BRAILLE PATTERN DOTS-23
+2807;AL;BRAILLE PATTERN DOTS-123
+2808;AL;BRAILLE PATTERN DOTS-4
+2809;AL;BRAILLE PATTERN DOTS-14
+280A;AL;BRAILLE PATTERN DOTS-24
+280B;AL;BRAILLE PATTERN DOTS-124
+280C;AL;BRAILLE PATTERN DOTS-34
+280D;AL;BRAILLE PATTERN DOTS-134
+280E;AL;BRAILLE PATTERN DOTS-234
+280F;AL;BRAILLE PATTERN DOTS-1234
+2810;AL;BRAILLE PATTERN DOTS-5
+2811;AL;BRAILLE PATTERN DOTS-15
+2812;AL;BRAILLE PATTERN DOTS-25
+2813;AL;BRAILLE PATTERN DOTS-125
+2814;AL;BRAILLE PATTERN DOTS-35
+2815;AL;BRAILLE PATTERN DOTS-135
+2816;AL;BRAILLE PATTERN DOTS-235
+2817;AL;BRAILLE PATTERN DOTS-1235
+2818;AL;BRAILLE PATTERN DOTS-45
+2819;AL;BRAILLE PATTERN DOTS-145
+281A;AL;BRAILLE PATTERN DOTS-245
+281B;AL;BRAILLE PATTERN DOTS-1245
+281C;AL;BRAILLE PATTERN DOTS-345
+281D;AL;BRAILLE PATTERN DOTS-1345
+281E;AL;BRAILLE PATTERN DOTS-2345
+281F;AL;BRAILLE PATTERN DOTS-12345
+2820;AL;BRAILLE PATTERN DOTS-6
+2821;AL;BRAILLE PATTERN DOTS-16
+2822;AL;BRAILLE PATTERN DOTS-26
+2823;AL;BRAILLE PATTERN DOTS-126
+2824;AL;BRAILLE PATTERN DOTS-36
+2825;AL;BRAILLE PATTERN DOTS-136
+2826;AL;BRAILLE PATTERN DOTS-236
+2827;AL;BRAILLE PATTERN DOTS-1236
+2828;AL;BRAILLE PATTERN DOTS-46
+2829;AL;BRAILLE PATTERN DOTS-146
+282A;AL;BRAILLE PATTERN DOTS-246
+282B;AL;BRAILLE PATTERN DOTS-1246
+282C;AL;BRAILLE PATTERN DOTS-346
+282D;AL;BRAILLE PATTERN DOTS-1346
+282E;AL;BRAILLE PATTERN DOTS-2346
+282F;AL;BRAILLE PATTERN DOTS-12346
+2830;AL;BRAILLE PATTERN DOTS-56
+2831;AL;BRAILLE PATTERN DOTS-156
+2832;AL;BRAILLE PATTERN DOTS-256
+2833;AL;BRAILLE PATTERN DOTS-1256
+2834;AL;BRAILLE PATTERN DOTS-356
+2835;AL;BRAILLE PATTERN DOTS-1356
+2836;AL;BRAILLE PATTERN DOTS-2356
+2837;AL;BRAILLE PATTERN DOTS-12356
+2838;AL;BRAILLE PATTERN DOTS-456
+2839;AL;BRAILLE PATTERN DOTS-1456
+283A;AL;BRAILLE PATTERN DOTS-2456
+283B;AL;BRAILLE PATTERN DOTS-12456
+283C;AL;BRAILLE PATTERN DOTS-3456
+283D;AL;BRAILLE PATTERN DOTS-13456
+283E;AL;BRAILLE PATTERN DOTS-23456
+283F;AL;BRAILLE PATTERN DOTS-123456
+2840;AL;BRAILLE PATTERN DOTS-7
+2841;AL;BRAILLE PATTERN DOTS-17
+2842;AL;BRAILLE PATTERN DOTS-27
+2843;AL;BRAILLE PATTERN DOTS-127
+2844;AL;BRAILLE PATTERN DOTS-37
+2845;AL;BRAILLE PATTERN DOTS-137
+2846;AL;BRAILLE PATTERN DOTS-237
+2847;AL;BRAILLE PATTERN DOTS-1237
+2848;AL;BRAILLE PATTERN DOTS-47
+2849;AL;BRAILLE PATTERN DOTS-147
+284A;AL;BRAILLE PATTERN DOTS-247
+284B;AL;BRAILLE PATTERN DOTS-1247
+284C;AL;BRAILLE PATTERN DOTS-347
+284D;AL;BRAILLE PATTERN DOTS-1347
+284E;AL;BRAILLE PATTERN DOTS-2347
+284F;AL;BRAILLE PATTERN DOTS-12347
+2850;AL;BRAILLE PATTERN DOTS-57
+2851;AL;BRAILLE PATTERN DOTS-157
+2852;AL;BRAILLE PATTERN DOTS-257
+2853;AL;BRAILLE PATTERN DOTS-1257
+2854;AL;BRAILLE PATTERN DOTS-357
+2855;AL;BRAILLE PATTERN DOTS-1357
+2856;AL;BRAILLE PATTERN DOTS-2357
+2857;AL;BRAILLE PATTERN DOTS-12357
+2858;AL;BRAILLE PATTERN DOTS-457
+2859;AL;BRAILLE PATTERN DOTS-1457
+285A;AL;BRAILLE PATTERN DOTS-2457
+285B;AL;BRAILLE PATTERN DOTS-12457
+285C;AL;BRAILLE PATTERN DOTS-3457
+285D;AL;BRAILLE PATTERN DOTS-13457
+285E;AL;BRAILLE PATTERN DOTS-23457
+285F;AL;BRAILLE PATTERN DOTS-123457
+2860;AL;BRAILLE PATTERN DOTS-67
+2861;AL;BRAILLE PATTERN DOTS-167
+2862;AL;BRAILLE PATTERN DOTS-267
+2863;AL;BRAILLE PATTERN DOTS-1267
+2864;AL;BRAILLE PATTERN DOTS-367
+2865;AL;BRAILLE PATTERN DOTS-1367
+2866;AL;BRAILLE PATTERN DOTS-2367
+2867;AL;BRAILLE PATTERN DOTS-12367
+2868;AL;BRAILLE PATTERN DOTS-467
+2869;AL;BRAILLE PATTERN DOTS-1467
+286A;AL;BRAILLE PATTERN DOTS-2467
+286B;AL;BRAILLE PATTERN DOTS-12467
+286C;AL;BRAILLE PATTERN DOTS-3467
+286D;AL;BRAILLE PATTERN DOTS-13467
+286E;AL;BRAILLE PATTERN DOTS-23467
+286F;AL;BRAILLE PATTERN DOTS-123467
+2870;AL;BRAILLE PATTERN DOTS-567
+2871;AL;BRAILLE PATTERN DOTS-1567
+2872;AL;BRAILLE PATTERN DOTS-2567
+2873;AL;BRAILLE PATTERN DOTS-12567
+2874;AL;BRAILLE PATTERN DOTS-3567
+2875;AL;BRAILLE PATTERN DOTS-13567
+2876;AL;BRAILLE PATTERN DOTS-23567
+2877;AL;BRAILLE PATTERN DOTS-123567
+2878;AL;BRAILLE PATTERN DOTS-4567
+2879;AL;BRAILLE PATTERN DOTS-14567
+287A;AL;BRAILLE PATTERN DOTS-24567
+287B;AL;BRAILLE PATTERN DOTS-124567
+287C;AL;BRAILLE PATTERN DOTS-34567
+287D;AL;BRAILLE PATTERN DOTS-134567
+287E;AL;BRAILLE PATTERN DOTS-234567
+287F;AL;BRAILLE PATTERN DOTS-1234567
+2880;AL;BRAILLE PATTERN DOTS-8
+2881;AL;BRAILLE PATTERN DOTS-18
+2882;AL;BRAILLE PATTERN DOTS-28
+2883;AL;BRAILLE PATTERN DOTS-128
+2884;AL;BRAILLE PATTERN DOTS-38
+2885;AL;BRAILLE PATTERN DOTS-138
+2886;AL;BRAILLE PATTERN DOTS-238
+2887;AL;BRAILLE PATTERN DOTS-1238
+2888;AL;BRAILLE PATTERN DOTS-48
+2889;AL;BRAILLE PATTERN DOTS-148
+288A;AL;BRAILLE PATTERN DOTS-248
+288B;AL;BRAILLE PATTERN DOTS-1248
+288C;AL;BRAILLE PATTERN DOTS-348
+288D;AL;BRAILLE PATTERN DOTS-1348
+288E;AL;BRAILLE PATTERN DOTS-2348
+288F;AL;BRAILLE PATTERN DOTS-12348
+2890;AL;BRAILLE PATTERN DOTS-58
+2891;AL;BRAILLE PATTERN DOTS-158
+2892;AL;BRAILLE PATTERN DOTS-258
+2893;AL;BRAILLE PATTERN DOTS-1258
+2894;AL;BRAILLE PATTERN DOTS-358
+2895;AL;BRAILLE PATTERN DOTS-1358
+2896;AL;BRAILLE PATTERN DOTS-2358
+2897;AL;BRAILLE PATTERN DOTS-12358
+2898;AL;BRAILLE PATTERN DOTS-458
+2899;AL;BRAILLE PATTERN DOTS-1458
+289A;AL;BRAILLE PATTERN DOTS-2458
+289B;AL;BRAILLE PATTERN DOTS-12458
+289C;AL;BRAILLE PATTERN DOTS-3458
+289D;AL;BRAILLE PATTERN DOTS-13458
+289E;AL;BRAILLE PATTERN DOTS-23458
+289F;AL;BRAILLE PATTERN DOTS-123458
+28A0;AL;BRAILLE PATTERN DOTS-68
+28A1;AL;BRAILLE PATTERN DOTS-168
+28A2;AL;BRAILLE PATTERN DOTS-268
+28A3;AL;BRAILLE PATTERN DOTS-1268
+28A4;AL;BRAILLE PATTERN DOTS-368
+28A5;AL;BRAILLE PATTERN DOTS-1368
+28A6;AL;BRAILLE PATTERN DOTS-2368
+28A7;AL;BRAILLE PATTERN DOTS-12368
+28A8;AL;BRAILLE PATTERN DOTS-468
+28A9;AL;BRAILLE PATTERN DOTS-1468
+28AA;AL;BRAILLE PATTERN DOTS-2468
+28AB;AL;BRAILLE PATTERN DOTS-12468
+28AC;AL;BRAILLE PATTERN DOTS-3468
+28AD;AL;BRAILLE PATTERN DOTS-13468
+28AE;AL;BRAILLE PATTERN DOTS-23468
+28AF;AL;BRAILLE PATTERN DOTS-123468
+28B0;AL;BRAILLE PATTERN DOTS-568
+28B1;AL;BRAILLE PATTERN DOTS-1568
+28B2;AL;BRAILLE PATTERN DOTS-2568
+28B3;AL;BRAILLE PATTERN DOTS-12568
+28B4;AL;BRAILLE PATTERN DOTS-3568
+28B5;AL;BRAILLE PATTERN DOTS-13568
+28B6;AL;BRAILLE PATTERN DOTS-23568
+28B7;AL;BRAILLE PATTERN DOTS-123568
+28B8;AL;BRAILLE PATTERN DOTS-4568
+28B9;AL;BRAILLE PATTERN DOTS-14568
+28BA;AL;BRAILLE PATTERN DOTS-24568
+28BB;AL;BRAILLE PATTERN DOTS-124568
+28BC;AL;BRAILLE PATTERN DOTS-34568
+28BD;AL;BRAILLE PATTERN DOTS-134568
+28BE;AL;BRAILLE PATTERN DOTS-234568
+28BF;AL;BRAILLE PATTERN DOTS-1234568
+28C0;AL;BRAILLE PATTERN DOTS-78
+28C1;AL;BRAILLE PATTERN DOTS-178
+28C2;AL;BRAILLE PATTERN DOTS-278
+28C3;AL;BRAILLE PATTERN DOTS-1278
+28C4;AL;BRAILLE PATTERN DOTS-378
+28C5;AL;BRAILLE PATTERN DOTS-1378
+28C6;AL;BRAILLE PATTERN DOTS-2378
+28C7;AL;BRAILLE PATTERN DOTS-12378
+28C8;AL;BRAILLE PATTERN DOTS-478
+28C9;AL;BRAILLE PATTERN DOTS-1478
+28CA;AL;BRAILLE PATTERN DOTS-2478
+28CB;AL;BRAILLE PATTERN DOTS-12478
+28CC;AL;BRAILLE PATTERN DOTS-3478
+28CD;AL;BRAILLE PATTERN DOTS-13478
+28CE;AL;BRAILLE PATTERN DOTS-23478
+28CF;AL;BRAILLE PATTERN DOTS-123478
+28D0;AL;BRAILLE PATTERN DOTS-578
+28D1;AL;BRAILLE PATTERN DOTS-1578
+28D2;AL;BRAILLE PATTERN DOTS-2578
+28D3;AL;BRAILLE PATTERN DOTS-12578
+28D4;AL;BRAILLE PATTERN DOTS-3578
+28D5;AL;BRAILLE PATTERN DOTS-13578
+28D6;AL;BRAILLE PATTERN DOTS-23578
+28D7;AL;BRAILLE PATTERN DOTS-123578
+28D8;AL;BRAILLE PATTERN DOTS-4578
+28D9;AL;BRAILLE PATTERN DOTS-14578
+28DA;AL;BRAILLE PATTERN DOTS-24578
+28DB;AL;BRAILLE PATTERN DOTS-124578
+28DC;AL;BRAILLE PATTERN DOTS-34578
+28DD;AL;BRAILLE PATTERN DOTS-134578
+28DE;AL;BRAILLE PATTERN DOTS-234578
+28DF;AL;BRAILLE PATTERN DOTS-1234578
+28E0;AL;BRAILLE PATTERN DOTS-678
+28E1;AL;BRAILLE PATTERN DOTS-1678
+28E2;AL;BRAILLE PATTERN DOTS-2678
+28E3;AL;BRAILLE PATTERN DOTS-12678
+28E4;AL;BRAILLE PATTERN DOTS-3678
+28E5;AL;BRAILLE PATTERN DOTS-13678
+28E6;AL;BRAILLE PATTERN DOTS-23678
+28E7;AL;BRAILLE PATTERN DOTS-123678
+28E8;AL;BRAILLE PATTERN DOTS-4678
+28E9;AL;BRAILLE PATTERN DOTS-14678
+28EA;AL;BRAILLE PATTERN DOTS-24678
+28EB;AL;BRAILLE PATTERN DOTS-124678
+28EC;AL;BRAILLE PATTERN DOTS-34678
+28ED;AL;BRAILLE PATTERN DOTS-134678
+28EE;AL;BRAILLE PATTERN DOTS-234678
+28EF;AL;BRAILLE PATTERN DOTS-1234678
+28F0;AL;BRAILLE PATTERN DOTS-5678
+28F1;AL;BRAILLE PATTERN DOTS-15678
+28F2;AL;BRAILLE PATTERN DOTS-25678
+28F3;AL;BRAILLE PATTERN DOTS-125678
+28F4;AL;BRAILLE PATTERN DOTS-35678
+28F5;AL;BRAILLE PATTERN DOTS-135678
+28F6;AL;BRAILLE PATTERN DOTS-235678
+28F7;AL;BRAILLE PATTERN DOTS-1235678
+28F8;AL;BRAILLE PATTERN DOTS-45678
+28F9;AL;BRAILLE PATTERN DOTS-145678
+28FA;AL;BRAILLE PATTERN DOTS-245678
+28FB;AL;BRAILLE PATTERN DOTS-1245678
+28FC;AL;BRAILLE PATTERN DOTS-345678
+28FD;AL;BRAILLE PATTERN DOTS-1345678
+28FE;AL;BRAILLE PATTERN DOTS-2345678
+28FF;AL;BRAILLE PATTERN DOTS-12345678
+2E80;ID;CJK RADICAL REPEAT
+2E81;ID;CJK RADICAL CLIFF
+2E82;ID;CJK RADICAL SECOND ONE
+2E83;ID;CJK RADICAL SECOND TWO
+2E84;ID;CJK RADICAL SECOND THREE
+2E85;ID;CJK RADICAL PERSON
+2E86;ID;CJK RADICAL BOX
+2E87;ID;CJK RADICAL TABLE
+2E88;ID;CJK RADICAL KNIFE ONE
+2E89;ID;CJK RADICAL KNIFE TWO
+2E8A;ID;CJK RADICAL DIVINATION
+2E8B;ID;CJK RADICAL SEAL
+2E8C;ID;CJK RADICAL SMALL ONE
+2E8D;ID;CJK RADICAL SMALL TWO
+2E8E;ID;CJK RADICAL LAME ONE
+2E8F;ID;CJK RADICAL LAME TWO
+2E90;ID;CJK RADICAL LAME THREE
+2E91;ID;CJK RADICAL LAME FOUR
+2E92;ID;CJK RADICAL SNAKE
+2E93;ID;CJK RADICAL THREAD
+2E94;ID;CJK RADICAL SNOUT ONE
+2E95;ID;CJK RADICAL SNOUT TWO
+2E96;ID;CJK RADICAL HEART ONE
+2E97;ID;CJK RADICAL HEART TWO
+2E98;ID;CJK RADICAL HAND
+2E99;ID;CJK RADICAL RAP
+2E9B;ID;CJK RADICAL CHOKE
+2E9C;ID;CJK RADICAL SUN
+2E9D;ID;CJK RADICAL MOON
+2E9E;ID;CJK RADICAL DEATH
+2E9F;ID;CJK RADICAL MOTHER
+2EA0;ID;CJK RADICAL CIVILIAN
+2EA1;ID;CJK RADICAL WATER ONE
+2EA2;ID;CJK RADICAL WATER TWO
+2EA3;ID;CJK RADICAL FIRE
+2EA4;ID;CJK RADICAL PAW ONE
+2EA5;ID;CJK RADICAL PAW TWO
+2EA6;ID;CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2EA7;ID;CJK RADICAL COW
+2EA8;ID;CJK RADICAL DOG
+2EA9;ID;CJK RADICAL JADE
+2EAA;ID;CJK RADICAL BOLT OF CLOTH
+2EAB;ID;CJK RADICAL EYE
+2EAC;ID;CJK RADICAL SPIRIT ONE
+2EAD;ID;CJK RADICAL SPIRIT TWO
+2EAE;ID;CJK RADICAL BAMBOO
+2EAF;ID;CJK RADICAL SILK
+2EB0;ID;CJK RADICAL C-SIMPLIFIED SILK
+2EB1;ID;CJK RADICAL NET ONE
+2EB2;ID;CJK RADICAL NET TWO
+2EB3;ID;CJK RADICAL NET THREE
+2EB4;ID;CJK RADICAL NET FOUR
+2EB5;ID;CJK RADICAL MESH
+2EB6;ID;CJK RADICAL SHEEP
+2EB7;ID;CJK RADICAL RAM
+2EB8;ID;CJK RADICAL EWE
+2EB9;ID;CJK RADICAL OLD
+2EBA;ID;CJK RADICAL BRUSH ONE
+2EBB;ID;CJK RADICAL BRUSH TWO
+2EBC;ID;CJK RADICAL MEAT
+2EBD;ID;CJK RADICAL MORTAR
+2EBE;ID;CJK RADICAL GRASS ONE
+2EBF;ID;CJK RADICAL GRASS TWO
+2EC0;ID;CJK RADICAL GRASS THREE
+2EC1;ID;CJK RADICAL TIGER
+2EC2;ID;CJK RADICAL CLOTHES
+2EC3;ID;CJK RADICAL WEST ONE
+2EC4;ID;CJK RADICAL WEST TWO
+2EC5;ID;CJK RADICAL C-SIMPLIFIED SEE
+2EC6;ID;CJK RADICAL SIMPLIFIED HORN
+2EC7;ID;CJK RADICAL HORN
+2EC8;ID;CJK RADICAL C-SIMPLIFIED SPEECH
+2EC9;ID;CJK RADICAL C-SIMPLIFIED SHELL
+2ECA;ID;CJK RADICAL FOOT
+2ECB;ID;CJK RADICAL C-SIMPLIFIED CART
+2ECC;ID;CJK RADICAL SIMPLIFIED WALK
+2ECD;ID;CJK RADICAL WALK ONE
+2ECE;ID;CJK RADICAL WALK TWO
+2ECF;ID;CJK RADICAL CITY
+2ED0;ID;CJK RADICAL C-SIMPLIFIED GOLD
+2ED1;ID;CJK RADICAL LONG ONE
+2ED2;ID;CJK RADICAL LONG TWO
+2ED3;ID;CJK RADICAL C-SIMPLIFIED LONG
+2ED4;ID;CJK RADICAL C-SIMPLIFIED GATE
+2ED5;ID;CJK RADICAL MOUND ONE
+2ED6;ID;CJK RADICAL MOUND TWO
+2ED7;ID;CJK RADICAL RAIN
+2ED8;ID;CJK RADICAL BLUE
+2ED9;ID;CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2EDA;ID;CJK RADICAL C-SIMPLIFIED LEAF
+2EDB;ID;CJK RADICAL C-SIMPLIFIED WIND
+2EDC;ID;CJK RADICAL C-SIMPLIFIED FLY
+2EDD;ID;CJK RADICAL EAT ONE
+2EDE;ID;CJK RADICAL EAT TWO
+2EDF;ID;CJK RADICAL EAT THREE
+2EE0;ID;CJK RADICAL C-SIMPLIFIED EAT
+2EE1;ID;CJK RADICAL HEAD
+2EE2;ID;CJK RADICAL C-SIMPLIFIED HORSE
+2EE3;ID;CJK RADICAL BONE
+2EE4;ID;CJK RADICAL GHOST
+2EE5;ID;CJK RADICAL C-SIMPLIFIED FISH
+2EE6;ID;CJK RADICAL C-SIMPLIFIED BIRD
+2EE7;ID;CJK RADICAL C-SIMPLIFIED SALT
+2EE8;ID;CJK RADICAL SIMPLIFIED WHEAT
+2EE9;ID;CJK RADICAL SIMPLIFIED YELLOW
+2EEA;ID;CJK RADICAL C-SIMPLIFIED FROG
+2EEB;ID;CJK RADICAL J-SIMPLIFIED EVEN
+2EEC;ID;CJK RADICAL C-SIMPLIFIED EVEN
+2EED;ID;CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE;ID;CJK RADICAL C-SIMPLIFIED TOOTH
+2EEF;ID;CJK RADICAL J-SIMPLIFIED DRAGON
+2EF0;ID;CJK RADICAL C-SIMPLIFIED DRAGON
+2EF1;ID;CJK RADICAL TURTLE
+2EF2;ID;CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3;ID;CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;ID;KANGXI RADICAL ONE
+2F01;ID;KANGXI RADICAL LINE
+2F02;ID;KANGXI RADICAL DOT
+2F03;ID;KANGXI RADICAL SLASH
+2F04;ID;KANGXI RADICAL SECOND
+2F05;ID;KANGXI RADICAL HOOK
+2F06;ID;KANGXI RADICAL TWO
+2F07;ID;KANGXI RADICAL LID
+2F08;ID;KANGXI RADICAL MAN
+2F09;ID;KANGXI RADICAL LEGS
+2F0A;ID;KANGXI RADICAL ENTER
+2F0B;ID;KANGXI RADICAL EIGHT
+2F0C;ID;KANGXI RADICAL DOWN BOX
+2F0D;ID;KANGXI RADICAL COVER
+2F0E;ID;KANGXI RADICAL ICE
+2F0F;ID;KANGXI RADICAL TABLE
+2F10;ID;KANGXI RADICAL OPEN BOX
+2F11;ID;KANGXI RADICAL KNIFE
+2F12;ID;KANGXI RADICAL POWER
+2F13;ID;KANGXI RADICAL WRAP
+2F14;ID;KANGXI RADICAL SPOON
+2F15;ID;KANGXI RADICAL RIGHT OPEN BOX
+2F16;ID;KANGXI RADICAL HIDING ENCLOSURE
+2F17;ID;KANGXI RADICAL TEN
+2F18;ID;KANGXI RADICAL DIVINATION
+2F19;ID;KANGXI RADICAL SEAL
+2F1A;ID;KANGXI RADICAL CLIFF
+2F1B;ID;KANGXI RADICAL PRIVATE
+2F1C;ID;KANGXI RADICAL AGAIN
+2F1D;ID;KANGXI RADICAL MOUTH
+2F1E;ID;KANGXI RADICAL ENCLOSURE
+2F1F;ID;KANGXI RADICAL EARTH
+2F20;ID;KANGXI RADICAL SCHOLAR
+2F21;ID;KANGXI RADICAL GO
+2F22;ID;KANGXI RADICAL GO SLOWLY
+2F23;ID;KANGXI RADICAL EVENING
+2F24;ID;KANGXI RADICAL BIG
+2F25;ID;KANGXI RADICAL WOMAN
+2F26;ID;KANGXI RADICAL CHILD
+2F27;ID;KANGXI RADICAL ROOF
+2F28;ID;KANGXI RADICAL INCH
+2F29;ID;KANGXI RADICAL SMALL
+2F2A;ID;KANGXI RADICAL LAME
+2F2B;ID;KANGXI RADICAL CORPSE
+2F2C;ID;KANGXI RADICAL SPROUT
+2F2D;ID;KANGXI RADICAL MOUNTAIN
+2F2E;ID;KANGXI RADICAL RIVER
+2F2F;ID;KANGXI RADICAL WORK
+2F30;ID;KANGXI RADICAL ONESELF
+2F31;ID;KANGXI RADICAL TURBAN
+2F32;ID;KANGXI RADICAL DRY
+2F33;ID;KANGXI RADICAL SHORT THREAD
+2F34;ID;KANGXI RADICAL DOTTED CLIFF
+2F35;ID;KANGXI RADICAL LONG STRIDE
+2F36;ID;KANGXI RADICAL TWO HANDS
+2F37;ID;KANGXI RADICAL SHOOT
+2F38;ID;KANGXI RADICAL BOW
+2F39;ID;KANGXI RADICAL SNOUT
+2F3A;ID;KANGXI RADICAL BRISTLE
+2F3B;ID;KANGXI RADICAL STEP
+2F3C;ID;KANGXI RADICAL HEART
+2F3D;ID;KANGXI RADICAL HALBERD
+2F3E;ID;KANGXI RADICAL DOOR
+2F3F;ID;KANGXI RADICAL HAND
+2F40;ID;KANGXI RADICAL BRANCH
+2F41;ID;KANGXI RADICAL RAP
+2F42;ID;KANGXI RADICAL SCRIPT
+2F43;ID;KANGXI RADICAL DIPPER
+2F44;ID;KANGXI RADICAL AXE
+2F45;ID;KANGXI RADICAL SQUARE
+2F46;ID;KANGXI RADICAL NOT
+2F47;ID;KANGXI RADICAL SUN
+2F48;ID;KANGXI RADICAL SAY
+2F49;ID;KANGXI RADICAL MOON
+2F4A;ID;KANGXI RADICAL TREE
+2F4B;ID;KANGXI RADICAL LACK
+2F4C;ID;KANGXI RADICAL STOP
+2F4D;ID;KANGXI RADICAL DEATH
+2F4E;ID;KANGXI RADICAL WEAPON
+2F4F;ID;KANGXI RADICAL DO NOT
+2F50;ID;KANGXI RADICAL COMPARE
+2F51;ID;KANGXI RADICAL FUR
+2F52;ID;KANGXI RADICAL CLAN
+2F53;ID;KANGXI RADICAL STEAM
+2F54;ID;KANGXI RADICAL WATER
+2F55;ID;KANGXI RADICAL FIRE
+2F56;ID;KANGXI RADICAL CLAW
+2F57;ID;KANGXI RADICAL FATHER
+2F58;ID;KANGXI RADICAL DOUBLE X
+2F59;ID;KANGXI RADICAL HALF TREE TRUNK
+2F5A;ID;KANGXI RADICAL SLICE
+2F5B;ID;KANGXI RADICAL FANG
+2F5C;ID;KANGXI RADICAL COW
+2F5D;ID;KANGXI RADICAL DOG
+2F5E;ID;KANGXI RADICAL PROFOUND
+2F5F;ID;KANGXI RADICAL JADE
+2F60;ID;KANGXI RADICAL MELON
+2F61;ID;KANGXI RADICAL TILE
+2F62;ID;KANGXI RADICAL SWEET
+2F63;ID;KANGXI RADICAL LIFE
+2F64;ID;KANGXI RADICAL USE
+2F65;ID;KANGXI RADICAL FIELD
+2F66;ID;KANGXI RADICAL BOLT OF CLOTH
+2F67;ID;KANGXI RADICAL SICKNESS
+2F68;ID;KANGXI RADICAL DOTTED TENT
+2F69;ID;KANGXI RADICAL WHITE
+2F6A;ID;KANGXI RADICAL SKIN
+2F6B;ID;KANGXI RADICAL DISH
+2F6C;ID;KANGXI RADICAL EYE
+2F6D;ID;KANGXI RADICAL SPEAR
+2F6E;ID;KANGXI RADICAL ARROW
+2F6F;ID;KANGXI RADICAL STONE
+2F70;ID;KANGXI RADICAL SPIRIT
+2F71;ID;KANGXI RADICAL TRACK
+2F72;ID;KANGXI RADICAL GRAIN
+2F73;ID;KANGXI RADICAL CAVE
+2F74;ID;KANGXI RADICAL STAND
+2F75;ID;KANGXI RADICAL BAMBOO
+2F76;ID;KANGXI RADICAL RICE
+2F77;ID;KANGXI RADICAL SILK
+2F78;ID;KANGXI RADICAL JAR
+2F79;ID;KANGXI RADICAL NET
+2F7A;ID;KANGXI RADICAL SHEEP
+2F7B;ID;KANGXI RADICAL FEATHER
+2F7C;ID;KANGXI RADICAL OLD
+2F7D;ID;KANGXI RADICAL AND
+2F7E;ID;KANGXI RADICAL PLOW
+2F7F;ID;KANGXI RADICAL EAR
+2F80;ID;KANGXI RADICAL BRUSH
+2F81;ID;KANGXI RADICAL MEAT
+2F82;ID;KANGXI RADICAL MINISTER
+2F83;ID;KANGXI RADICAL SELF
+2F84;ID;KANGXI RADICAL ARRIVE
+2F85;ID;KANGXI RADICAL MORTAR
+2F86;ID;KANGXI RADICAL TONGUE
+2F87;ID;KANGXI RADICAL OPPOSE
+2F88;ID;KANGXI RADICAL BOAT
+2F89;ID;KANGXI RADICAL STOPPING
+2F8A;ID;KANGXI RADICAL COLOR
+2F8B;ID;KANGXI RADICAL GRASS
+2F8C;ID;KANGXI RADICAL TIGER
+2F8D;ID;KANGXI RADICAL INSECT
+2F8E;ID;KANGXI RADICAL BLOOD
+2F8F;ID;KANGXI RADICAL WALK ENCLOSURE
+2F90;ID;KANGXI RADICAL CLOTHES
+2F91;ID;KANGXI RADICAL WEST
+2F92;ID;KANGXI RADICAL SEE
+2F93;ID;KANGXI RADICAL HORN
+2F94;ID;KANGXI RADICAL SPEECH
+2F95;ID;KANGXI RADICAL VALLEY
+2F96;ID;KANGXI RADICAL BEAN
+2F97;ID;KANGXI RADICAL PIG
+2F98;ID;KANGXI RADICAL BADGER
+2F99;ID;KANGXI RADICAL SHELL
+2F9A;ID;KANGXI RADICAL RED
+2F9B;ID;KANGXI RADICAL RUN
+2F9C;ID;KANGXI RADICAL FOOT
+2F9D;ID;KANGXI RADICAL BODY
+2F9E;ID;KANGXI RADICAL CART
+2F9F;ID;KANGXI RADICAL BITTER
+2FA0;ID;KANGXI RADICAL MORNING
+2FA1;ID;KANGXI RADICAL WALK
+2FA2;ID;KANGXI RADICAL CITY
+2FA3;ID;KANGXI RADICAL WINE
+2FA4;ID;KANGXI RADICAL DISTINGUISH
+2FA5;ID;KANGXI RADICAL VILLAGE
+2FA6;ID;KANGXI RADICAL GOLD
+2FA7;ID;KANGXI RADICAL LONG
+2FA8;ID;KANGXI RADICAL GATE
+2FA9;ID;KANGXI RADICAL MOUND
+2FAA;ID;KANGXI RADICAL SLAVE
+2FAB;ID;KANGXI RADICAL SHORT TAILED BIRD
+2FAC;ID;KANGXI RADICAL RAIN
+2FAD;ID;KANGXI RADICAL BLUE
+2FAE;ID;KANGXI RADICAL WRONG
+2FAF;ID;KANGXI RADICAL FACE
+2FB0;ID;KANGXI RADICAL LEATHER
+2FB1;ID;KANGXI RADICAL TANNED LEATHER
+2FB2;ID;KANGXI RADICAL LEEK
+2FB3;ID;KANGXI RADICAL SOUND
+2FB4;ID;KANGXI RADICAL LEAF
+2FB5;ID;KANGXI RADICAL WIND
+2FB6;ID;KANGXI RADICAL FLY
+2FB7;ID;KANGXI RADICAL EAT
+2FB8;ID;KANGXI RADICAL HEAD
+2FB9;ID;KANGXI RADICAL FRAGRANT
+2FBA;ID;KANGXI RADICAL HORSE
+2FBB;ID;KANGXI RADICAL BONE
+2FBC;ID;KANGXI RADICAL TALL
+2FBD;ID;KANGXI RADICAL HAIR
+2FBE;ID;KANGXI RADICAL FIGHT
+2FBF;ID;KANGXI RADICAL SACRIFICIAL WINE
+2FC0;ID;KANGXI RADICAL CAULDRON
+2FC1;ID;KANGXI RADICAL GHOST
+2FC2;ID;KANGXI RADICAL FISH
+2FC3;ID;KANGXI RADICAL BIRD
+2FC4;ID;KANGXI RADICAL SALT
+2FC5;ID;KANGXI RADICAL DEER
+2FC6;ID;KANGXI RADICAL WHEAT
+2FC7;ID;KANGXI RADICAL HEMP
+2FC8;ID;KANGXI RADICAL YELLOW
+2FC9;ID;KANGXI RADICAL MILLET
+2FCA;ID;KANGXI RADICAL BLACK
+2FCB;ID;KANGXI RADICAL EMBROIDERY
+2FCC;ID;KANGXI RADICAL FROG
+2FCD;ID;KANGXI RADICAL TRIPOD
+2FCE;ID;KANGXI RADICAL DRUM
+2FCF;ID;KANGXI RADICAL RAT
+2FD0;ID;KANGXI RADICAL NOSE
+2FD1;ID;KANGXI RADICAL EVEN
+2FD2;ID;KANGXI RADICAL TOOTH
+2FD3;ID;KANGXI RADICAL DRAGON
+2FD4;ID;KANGXI RADICAL TURTLE
+2FD5;ID;KANGXI RADICAL FLUTE
+2FF0;ID;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1;ID;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2;ID;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3;ID;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4;ID;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB;ID;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000;ID;IDEOGRAPHIC SPACE
+3001;CL;IDEOGRAPHIC COMMA
+3002;CL;IDEOGRAPHIC FULL STOP
+3003;ID;DITTO MARK
+3004;ID;JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005;NS;IDEOGRAPHIC ITERATION MARK
+3006;ID;IDEOGRAPHIC CLOSING MARK
+3007;ID;IDEOGRAPHIC NUMBER ZERO
+3008;OP;LEFT ANGLE BRACKET
+3009;CL;RIGHT ANGLE BRACKET
+300A;OP;LEFT DOUBLE ANGLE BRACKET
+300B;CL;RIGHT DOUBLE ANGLE BRACKET
+300C;OP;LEFT CORNER BRACKET
+300D;CL;RIGHT CORNER BRACKET
+300E;OP;LEFT WHITE CORNER BRACKET
+300F;CL;RIGHT WHITE CORNER BRACKET
+3010;OP;LEFT BLACK LENTICULAR BRACKET
+3011;CL;RIGHT BLACK LENTICULAR BRACKET
+3012;ID;POSTAL MARK
+3013;ID;GETA MARK
+3014;OP;LEFT TORTOISE SHELL BRACKET
+3015;CL;RIGHT TORTOISE SHELL BRACKET
+3016;OP;LEFT WHITE LENTICULAR BRACKET
+3017;CL;RIGHT WHITE LENTICULAR BRACKET
+3018;OP;LEFT WHITE TORTOISE SHELL BRACKET
+3019;CL;RIGHT WHITE TORTOISE SHELL BRACKET
+301A;OP;LEFT WHITE SQUARE BRACKET
+301B;CL;RIGHT WHITE SQUARE BRACKET
+301C;NS;WAVE DASH
+301D;OP;REVERSED DOUBLE PRIME QUOTATION MARK
+301E;CL;DOUBLE PRIME QUOTATION MARK
+301F;CL;LOW DOUBLE PRIME QUOTATION MARK
+3020;ID;POSTAL MARK FACE
+3021;ID;HANGZHOU NUMERAL ONE
+3022;ID;HANGZHOU NUMERAL TWO
+3023;ID;HANGZHOU NUMERAL THREE
+3024;ID;HANGZHOU NUMERAL FOUR
+3025;ID;HANGZHOU NUMERAL FIVE
+3026;ID;HANGZHOU NUMERAL SIX
+3027;ID;HANGZHOU NUMERAL SEVEN
+3028;ID;HANGZHOU NUMERAL EIGHT
+3029;ID;HANGZHOU NUMERAL NINE
+302A;CM;IDEOGRAPHIC LEVEL TONE MARK
+302B;CM;IDEOGRAPHIC RISING TONE MARK
+302C;CM;IDEOGRAPHIC DEPARTING TONE MARK
+302D;CM;IDEOGRAPHIC ENTERING TONE MARK
+302E;CM;HANGUL SINGLE DOT TONE MARK
+302F;CM;HANGUL DOUBLE DOT TONE MARK
+3030;ID;WAVY DASH
+3031;ID;VERTICAL KANA REPEAT MARK
+3032;ID;VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033;ID;VERTICAL KANA REPEAT MARK UPPER HALF
+3034;ID;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035;ID;VERTICAL KANA REPEAT MARK LOWER HALF
+3036;ID;CIRCLED POSTAL MARK
+3037;ID;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038;ID;HANGZHOU NUMERAL TEN
+3039;ID;HANGZHOU NUMERAL TWENTY
+303A;ID;HANGZHOU NUMERAL THIRTY
+303E;ID;IDEOGRAPHIC VARIATION INDICATOR
+303F;ID;IDEOGRAPHIC HALF FILL SPACE
+3041;NS;HIRAGANA LETTER SMALL A
+3042;ID;HIRAGANA LETTER A
+3043;NS;HIRAGANA LETTER SMALL I
+3044;ID;HIRAGANA LETTER I
+3045;NS;HIRAGANA LETTER SMALL U
+3046;ID;HIRAGANA LETTER U
+3047;NS;HIRAGANA LETTER SMALL E
+3048;ID;HIRAGANA LETTER E
+3049;NS;HIRAGANA LETTER SMALL O
+304A;ID;HIRAGANA LETTER O
+304B;ID;HIRAGANA LETTER KA
+304C;ID;HIRAGANA LETTER GA
+304D;ID;HIRAGANA LETTER KI
+304E;ID;HIRAGANA LETTER GI
+304F;ID;HIRAGANA LETTER KU
+3050;ID;HIRAGANA LETTER GU
+3051;ID;HIRAGANA LETTER KE
+3052;ID;HIRAGANA LETTER GE
+3053;ID;HIRAGANA LETTER KO
+3054;ID;HIRAGANA LETTER GO
+3055;ID;HIRAGANA LETTER SA
+3056;ID;HIRAGANA LETTER ZA
+3057;ID;HIRAGANA LETTER SI
+3058;ID;HIRAGANA LETTER ZI
+3059;ID;HIRAGANA LETTER SU
+305A;ID;HIRAGANA LETTER ZU
+305B;ID;HIRAGANA LETTER SE
+305C;ID;HIRAGANA LETTER ZE
+305D;ID;HIRAGANA LETTER SO
+305E;ID;HIRAGANA LETTER ZO
+305F;ID;HIRAGANA LETTER TA
+3060;ID;HIRAGANA LETTER DA
+3061;ID;HIRAGANA LETTER TI
+3062;ID;HIRAGANA LETTER DI
+3063;NS;HIRAGANA LETTER SMALL TU
+3064;ID;HIRAGANA LETTER TU
+3065;ID;HIRAGANA LETTER DU
+3066;ID;HIRAGANA LETTER TE
+3067;ID;HIRAGANA LETTER DE
+3068;ID;HIRAGANA LETTER TO
+3069;ID;HIRAGANA LETTER DO
+306A;ID;HIRAGANA LETTER NA
+306B;ID;HIRAGANA LETTER NI
+306C;ID;HIRAGANA LETTER NU
+306D;ID;HIRAGANA LETTER NE
+306E;ID;HIRAGANA LETTER NO
+306F;ID;HIRAGANA LETTER HA
+3070;ID;HIRAGANA LETTER BA
+3071;ID;HIRAGANA LETTER PA
+3072;ID;HIRAGANA LETTER HI
+3073;ID;HIRAGANA LETTER BI
+3074;ID;HIRAGANA LETTER PI
+3075;ID;HIRAGANA LETTER HU
+3076;ID;HIRAGANA LETTER BU
+3077;ID;HIRAGANA LETTER PU
+3078;ID;HIRAGANA LETTER HE
+3079;ID;HIRAGANA LETTER BE
+307A;ID;HIRAGANA LETTER PE
+307B;ID;HIRAGANA LETTER HO
+307C;ID;HIRAGANA LETTER BO
+307D;ID;HIRAGANA LETTER PO
+307E;ID;HIRAGANA LETTER MA
+307F;ID;HIRAGANA LETTER MI
+3080;ID;HIRAGANA LETTER MU
+3081;ID;HIRAGANA LETTER ME
+3082;ID;HIRAGANA LETTER MO
+3083;NS;HIRAGANA LETTER SMALL YA
+3084;ID;HIRAGANA LETTER YA
+3085;NS;HIRAGANA LETTER SMALL YU
+3086;ID;HIRAGANA LETTER YU
+3087;NS;HIRAGANA LETTER SMALL YO
+3088;ID;HIRAGANA LETTER YO
+3089;ID;HIRAGANA LETTER RA
+308A;ID;HIRAGANA LETTER RI
+308B;ID;HIRAGANA LETTER RU
+308C;ID;HIRAGANA LETTER RE
+308D;ID;HIRAGANA LETTER RO
+308E;NS;HIRAGANA LETTER SMALL WA
+308F;ID;HIRAGANA LETTER WA
+3090;ID;HIRAGANA LETTER WI
+3091;ID;HIRAGANA LETTER WE
+3092;ID;HIRAGANA LETTER WO
+3093;ID;HIRAGANA LETTER N
+3094;ID;HIRAGANA LETTER VU
+3099;CM;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309A;CM;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B;NS;KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;NS;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309D;NS;HIRAGANA ITERATION MARK
+309E;NS;HIRAGANA VOICED ITERATION MARK
+30A1;NS;KATAKANA LETTER SMALL A
+30A2;ID;KATAKANA LETTER A
+30A3;NS;KATAKANA LETTER SMALL I
+30A4;ID;KATAKANA LETTER I
+30A5;NS;KATAKANA LETTER SMALL U
+30A6;ID;KATAKANA LETTER U
+30A7;NS;KATAKANA LETTER SMALL E
+30A8;ID;KATAKANA LETTER E
+30A9;NS;KATAKANA LETTER SMALL O
+30AA;ID;KATAKANA LETTER O
+30AB;ID;KATAKANA LETTER KA
+30AC;ID;KATAKANA LETTER GA
+30AD;ID;KATAKANA LETTER KI
+30AE;ID;KATAKANA LETTER GI
+30AF;ID;KATAKANA LETTER KU
+30B0;ID;KATAKANA LETTER GU
+30B1;ID;KATAKANA LETTER KE
+30B2;ID;KATAKANA LETTER GE
+30B3;ID;KATAKANA LETTER KO
+30B4;ID;KATAKANA LETTER GO
+30B5;ID;KATAKANA LETTER SA
+30B6;ID;KATAKANA LETTER ZA
+30B7;ID;KATAKANA LETTER SI
+30B8;ID;KATAKANA LETTER ZI
+30B9;ID;KATAKANA LETTER SU
+30BA;ID;KATAKANA LETTER ZU
+30BB;ID;KATAKANA LETTER SE
+30BC;ID;KATAKANA LETTER ZE
+30BD;ID;KATAKANA LETTER SO
+30BE;ID;KATAKANA LETTER ZO
+30BF;ID;KATAKANA LETTER TA
+30C0;ID;KATAKANA LETTER DA
+30C1;ID;KATAKANA LETTER TI
+30C2;ID;KATAKANA LETTER DI
+30C3;NS;KATAKANA LETTER SMALL TU
+30C4;ID;KATAKANA LETTER TU
+30C5;ID;KATAKANA LETTER DU
+30C6;ID;KATAKANA LETTER TE
+30C7;ID;KATAKANA LETTER DE
+30C8;ID;KATAKANA LETTER TO
+30C9;ID;KATAKANA LETTER DO
+30CA;ID;KATAKANA LETTER NA
+30CB;ID;KATAKANA LETTER NI
+30CC;ID;KATAKANA LETTER NU
+30CD;ID;KATAKANA LETTER NE
+30CE;ID;KATAKANA LETTER NO
+30CF;ID;KATAKANA LETTER HA
+30D0;ID;KATAKANA LETTER BA
+30D1;ID;KATAKANA LETTER PA
+30D2;ID;KATAKANA LETTER HI
+30D3;ID;KATAKANA LETTER BI
+30D4;ID;KATAKANA LETTER PI
+30D5;ID;KATAKANA LETTER HU
+30D6;ID;KATAKANA LETTER BU
+30D7;ID;KATAKANA LETTER PU
+30D8;ID;KATAKANA LETTER HE
+30D9;ID;KATAKANA LETTER BE
+30DA;ID;KATAKANA LETTER PE
+30DB;ID;KATAKANA LETTER HO
+30DC;ID;KATAKANA LETTER BO
+30DD;ID;KATAKANA LETTER PO
+30DE;ID;KATAKANA LETTER MA
+30DF;ID;KATAKANA LETTER MI
+30E0;ID;KATAKANA LETTER MU
+30E1;ID;KATAKANA LETTER ME
+30E2;ID;KATAKANA LETTER MO
+30E3;NS;KATAKANA LETTER SMALL YA
+30E4;ID;KATAKANA LETTER YA
+30E5;NS;KATAKANA LETTER SMALL YU
+30E6;ID;KATAKANA LETTER YU
+30E7;NS;KATAKANA LETTER SMALL YO
+30E8;ID;KATAKANA LETTER YO
+30E9;ID;KATAKANA LETTER RA
+30EA;ID;KATAKANA LETTER RI
+30EB;ID;KATAKANA LETTER RU
+30EC;ID;KATAKANA LETTER RE
+30ED;ID;KATAKANA LETTER RO
+30EE;NS;KATAKANA LETTER SMALL WA
+30EF;ID;KATAKANA LETTER WA
+30F0;ID;KATAKANA LETTER WI
+30F1;ID;KATAKANA LETTER WE
+30F2;ID;KATAKANA LETTER WO
+30F3;ID;KATAKANA LETTER N
+30F4;ID;KATAKANA LETTER VU
+30F5;NS;KATAKANA LETTER SMALL KA
+30F6;NS;KATAKANA LETTER SMALL KE
+30F7;ID;KATAKANA LETTER VA
+30F8;ID;KATAKANA LETTER VI
+30F9;ID;KATAKANA LETTER VE
+30FA;ID;KATAKANA LETTER VO
+30FB;NS;KATAKANA MIDDLE DOT
+30FC;ID;KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD;NS;KATAKANA ITERATION MARK
+30FE;ID;KATAKANA VOICED ITERATION MARK
+3105;ID;BOPOMOFO LETTER B
+3106;ID;BOPOMOFO LETTER P
+3107;ID;BOPOMOFO LETTER M
+3108;ID;BOPOMOFO LETTER F
+3109;ID;BOPOMOFO LETTER D
+310A;ID;BOPOMOFO LETTER T
+310B;ID;BOPOMOFO LETTER N
+310C;ID;BOPOMOFO LETTER L
+310D;ID;BOPOMOFO LETTER G
+310E;ID;BOPOMOFO LETTER K
+310F;ID;BOPOMOFO LETTER H
+3110;ID;BOPOMOFO LETTER J
+3111;ID;BOPOMOFO LETTER Q
+3112;ID;BOPOMOFO LETTER X
+3113;ID;BOPOMOFO LETTER ZH
+3114;ID;BOPOMOFO LETTER CH
+3115;ID;BOPOMOFO LETTER SH
+3116;ID;BOPOMOFO LETTER R
+3117;ID;BOPOMOFO LETTER Z
+3118;ID;BOPOMOFO LETTER C
+3119;ID;BOPOMOFO LETTER S
+311A;ID;BOPOMOFO LETTER A
+311B;ID;BOPOMOFO LETTER O
+311C;ID;BOPOMOFO LETTER E
+311D;ID;BOPOMOFO LETTER EH
+311E;ID;BOPOMOFO LETTER AI
+311F;ID;BOPOMOFO LETTER EI
+3120;ID;BOPOMOFO LETTER AU
+3121;ID;BOPOMOFO LETTER OU
+3122;ID;BOPOMOFO LETTER AN
+3123;ID;BOPOMOFO LETTER EN
+3124;ID;BOPOMOFO LETTER ANG
+3125;ID;BOPOMOFO LETTER ENG
+3126;ID;BOPOMOFO LETTER ER
+3127;ID;BOPOMOFO LETTER I
+3128;ID;BOPOMOFO LETTER U
+3129;ID;BOPOMOFO LETTER IU
+312A;ID;BOPOMOFO LETTER V
+312B;ID;BOPOMOFO LETTER NG
+312C;ID;BOPOMOFO LETTER GN
+3131;ID;HANGUL LETTER KIYEOK
+3132;ID;HANGUL LETTER SSANGKIYEOK
+3133;ID;HANGUL LETTER KIYEOK-SIOS
+3134;ID;HANGUL LETTER NIEUN
+3135;ID;HANGUL LETTER NIEUN-CIEUC
+3136;ID;HANGUL LETTER NIEUN-HIEUH
+3137;ID;HANGUL LETTER TIKEUT
+3138;ID;HANGUL LETTER SSANGTIKEUT
+3139;ID;HANGUL LETTER RIEUL
+313A;ID;HANGUL LETTER RIEUL-KIYEOK
+313B;ID;HANGUL LETTER RIEUL-MIEUM
+313C;ID;HANGUL LETTER RIEUL-PIEUP
+313D;ID;HANGUL LETTER RIEUL-SIOS
+313E;ID;HANGUL LETTER RIEUL-THIEUTH
+313F;ID;HANGUL LETTER RIEUL-PHIEUPH
+3140;ID;HANGUL LETTER RIEUL-HIEUH
+3141;ID;HANGUL LETTER MIEUM
+3142;ID;HANGUL LETTER PIEUP
+3143;ID;HANGUL LETTER SSANGPIEUP
+3144;ID;HANGUL LETTER PIEUP-SIOS
+3145;ID;HANGUL LETTER SIOS
+3146;ID;HANGUL LETTER SSANGSIOS
+3147;ID;HANGUL LETTER IEUNG
+3148;ID;HANGUL LETTER CIEUC
+3149;ID;HANGUL LETTER SSANGCIEUC
+314A;ID;HANGUL LETTER CHIEUCH
+314B;ID;HANGUL LETTER KHIEUKH
+314C;ID;HANGUL LETTER THIEUTH
+314D;ID;HANGUL LETTER PHIEUPH
+314E;ID;HANGUL LETTER HIEUH
+314F;ID;HANGUL LETTER A
+3150;ID;HANGUL LETTER AE
+3151;ID;HANGUL LETTER YA
+3152;ID;HANGUL LETTER YAE
+3153;ID;HANGUL LETTER EO
+3154;ID;HANGUL LETTER E
+3155;ID;HANGUL LETTER YEO
+3156;ID;HANGUL LETTER YE
+3157;ID;HANGUL LETTER O
+3158;ID;HANGUL LETTER WA
+3159;ID;HANGUL LETTER WAE
+315A;ID;HANGUL LETTER OE
+315B;ID;HANGUL LETTER YO
+315C;ID;HANGUL LETTER U
+315D;ID;HANGUL LETTER WEO
+315E;ID;HANGUL LETTER WE
+315F;ID;HANGUL LETTER WI
+3160;ID;HANGUL LETTER YU
+3161;ID;HANGUL LETTER EU
+3162;ID;HANGUL LETTER YI
+3163;ID;HANGUL LETTER I
+3164;ID;HANGUL FILLER
+3165;ID;HANGUL LETTER SSANGNIEUN
+3166;ID;HANGUL LETTER NIEUN-TIKEUT
+3167;ID;HANGUL LETTER NIEUN-SIOS
+3168;ID;HANGUL LETTER NIEUN-PANSIOS
+3169;ID;HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;ID;HANGUL LETTER RIEUL-TIKEUT
+316B;ID;HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;ID;HANGUL LETTER RIEUL-PANSIOS
+316D;ID;HANGUL LETTER RIEUL-YEORINHIEUH
+316E;ID;HANGUL LETTER MIEUM-PIEUP
+316F;ID;HANGUL LETTER MIEUM-SIOS
+3170;ID;HANGUL LETTER MIEUM-PANSIOS
+3171;ID;HANGUL LETTER KAPYEOUNMIEUM
+3172;ID;HANGUL LETTER PIEUP-KIYEOK
+3173;ID;HANGUL LETTER PIEUP-TIKEUT
+3174;ID;HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;ID;HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;ID;HANGUL LETTER PIEUP-CIEUC
+3177;ID;HANGUL LETTER PIEUP-THIEUTH
+3178;ID;HANGUL LETTER KAPYEOUNPIEUP
+3179;ID;HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;ID;HANGUL LETTER SIOS-KIYEOK
+317B;ID;HANGUL LETTER SIOS-NIEUN
+317C;ID;HANGUL LETTER SIOS-TIKEUT
+317D;ID;HANGUL LETTER SIOS-PIEUP
+317E;ID;HANGUL LETTER SIOS-CIEUC
+317F;ID;HANGUL LETTER PANSIOS
+3180;ID;HANGUL LETTER SSANGIEUNG
+3181;ID;HANGUL LETTER YESIEUNG
+3182;ID;HANGUL LETTER YESIEUNG-SIOS
+3183;ID;HANGUL LETTER YESIEUNG-PANSIOS
+3184;ID;HANGUL LETTER KAPYEOUNPHIEUPH
+3185;ID;HANGUL LETTER SSANGHIEUH
+3186;ID;HANGUL LETTER YEORINHIEUH
+3187;ID;HANGUL LETTER YO-YA
+3188;ID;HANGUL LETTER YO-YAE
+3189;ID;HANGUL LETTER YO-I
+318A;ID;HANGUL LETTER YU-YEO
+318B;ID;HANGUL LETTER YU-YE
+318C;ID;HANGUL LETTER YU-I
+318D;ID;HANGUL LETTER ARAEA
+318E;ID;HANGUL LETTER ARAEAE
+3190;ID;IDEOGRAPHIC ANNOTATION LINKING MARK
+3191;ID;IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192;ID;IDEOGRAPHIC ANNOTATION ONE MARK
+3193;ID;IDEOGRAPHIC ANNOTATION TWO MARK
+3194;ID;IDEOGRAPHIC ANNOTATION THREE MARK
+3195;ID;IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;ID;IDEOGRAPHIC ANNOTATION TOP MARK
+3197;ID;IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;ID;IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;ID;IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;ID;IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;ID;IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;ID;IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;ID;IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;ID;IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;ID;IDEOGRAPHIC ANNOTATION MAN MARK
+31A0;ID;BOPOMOFO LETTER BU
+31A1;ID;BOPOMOFO LETTER ZI
+31A2;ID;BOPOMOFO LETTER JI
+31A3;ID;BOPOMOFO LETTER GU
+31A4;ID;BOPOMOFO LETTER EE
+31A5;ID;BOPOMOFO LETTER ENN
+31A6;ID;BOPOMOFO LETTER OO
+31A7;ID;BOPOMOFO LETTER ONN
+31A8;ID;BOPOMOFO LETTER IR
+31A9;ID;BOPOMOFO LETTER ANN
+31AA;ID;BOPOMOFO LETTER INN
+31AB;ID;BOPOMOFO LETTER UNN
+31AC;ID;BOPOMOFO LETTER IM
+31AD;ID;BOPOMOFO LETTER NGG
+31AE;ID;BOPOMOFO LETTER AINN
+31AF;ID;BOPOMOFO LETTER AUNN
+31B0;ID;BOPOMOFO LETTER AM
+31B1;ID;BOPOMOFO LETTER OM
+31B2;ID;BOPOMOFO LETTER ONG
+31B3;ID;BOPOMOFO LETTER INNN
+31B4;ID;BOPOMOFO FINAL LETTER P
+31B5;ID;BOPOMOFO FINAL LETTER T
+31B6;ID;BOPOMOFO FINAL LETTER K
+31B7;ID;BOPOMOFO FINAL LETTER H
+3200;ID;PARENTHESIZED HANGUL KIYEOK
+3201;ID;PARENTHESIZED HANGUL NIEUN
+3202;ID;PARENTHESIZED HANGUL TIKEUT
+3203;ID;PARENTHESIZED HANGUL RIEUL
+3204;ID;PARENTHESIZED HANGUL MIEUM
+3205;ID;PARENTHESIZED HANGUL PIEUP
+3206;ID;PARENTHESIZED HANGUL SIOS
+3207;ID;PARENTHESIZED HANGUL IEUNG
+3208;ID;PARENTHESIZED HANGUL CIEUC
+3209;ID;PARENTHESIZED HANGUL CHIEUCH
+320A;ID;PARENTHESIZED HANGUL KHIEUKH
+320B;ID;PARENTHESIZED HANGUL THIEUTH
+320C;ID;PARENTHESIZED HANGUL PHIEUPH
+320D;ID;PARENTHESIZED HANGUL HIEUH
+320E;ID;PARENTHESIZED HANGUL KIYEOK A
+320F;ID;PARENTHESIZED HANGUL NIEUN A
+3210;ID;PARENTHESIZED HANGUL TIKEUT A
+3211;ID;PARENTHESIZED HANGUL RIEUL A
+3212;ID;PARENTHESIZED HANGUL MIEUM A
+3213;ID;PARENTHESIZED HANGUL PIEUP A
+3214;ID;PARENTHESIZED HANGUL SIOS A
+3215;ID;PARENTHESIZED HANGUL IEUNG A
+3216;ID;PARENTHESIZED HANGUL CIEUC A
+3217;ID;PARENTHESIZED HANGUL CHIEUCH A
+3218;ID;PARENTHESIZED HANGUL KHIEUKH A
+3219;ID;PARENTHESIZED HANGUL THIEUTH A
+321A;ID;PARENTHESIZED HANGUL PHIEUPH A
+321B;ID;PARENTHESIZED HANGUL HIEUH A
+321C;ID;PARENTHESIZED HANGUL CIEUC U
+3220;ID;PARENTHESIZED IDEOGRAPH ONE
+3221;ID;PARENTHESIZED IDEOGRAPH TWO
+3222;ID;PARENTHESIZED IDEOGRAPH THREE
+3223;ID;PARENTHESIZED IDEOGRAPH FOUR
+3224;ID;PARENTHESIZED IDEOGRAPH FIVE
+3225;ID;PARENTHESIZED IDEOGRAPH SIX
+3226;ID;PARENTHESIZED IDEOGRAPH SEVEN
+3227;ID;PARENTHESIZED IDEOGRAPH EIGHT
+3228;ID;PARENTHESIZED IDEOGRAPH NINE
+3229;ID;PARENTHESIZED IDEOGRAPH TEN
+322A;ID;PARENTHESIZED IDEOGRAPH MOON
+322B;ID;PARENTHESIZED IDEOGRAPH FIRE
+322C;ID;PARENTHESIZED IDEOGRAPH WATER
+322D;ID;PARENTHESIZED IDEOGRAPH WOOD
+322E;ID;PARENTHESIZED IDEOGRAPH METAL
+322F;ID;PARENTHESIZED IDEOGRAPH EARTH
+3230;ID;PARENTHESIZED IDEOGRAPH SUN
+3231;ID;PARENTHESIZED IDEOGRAPH STOCK
+3232;ID;PARENTHESIZED IDEOGRAPH HAVE
+3233;ID;PARENTHESIZED IDEOGRAPH SOCIETY
+3234;ID;PARENTHESIZED IDEOGRAPH NAME
+3235;ID;PARENTHESIZED IDEOGRAPH SPECIAL
+3236;ID;PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;ID;PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;ID;PARENTHESIZED IDEOGRAPH LABOR
+3239;ID;PARENTHESIZED IDEOGRAPH REPRESENT
+323A;ID;PARENTHESIZED IDEOGRAPH CALL
+323B;ID;PARENTHESIZED IDEOGRAPH STUDY
+323C;ID;PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;ID;PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;ID;PARENTHESIZED IDEOGRAPH RESOURCE
+323F;ID;PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;ID;PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;ID;PARENTHESIZED IDEOGRAPH REST
+3242;ID;PARENTHESIZED IDEOGRAPH SELF
+3243;ID;PARENTHESIZED IDEOGRAPH REACH
+3260;ID;CIRCLED HANGUL KIYEOK
+3261;ID;CIRCLED HANGUL NIEUN
+3262;ID;CIRCLED HANGUL TIKEUT
+3263;ID;CIRCLED HANGUL RIEUL
+3264;ID;CIRCLED HANGUL MIEUM
+3265;ID;CIRCLED HANGUL PIEUP
+3266;ID;CIRCLED HANGUL SIOS
+3267;ID;CIRCLED HANGUL IEUNG
+3268;ID;CIRCLED HANGUL CIEUC
+3269;ID;CIRCLED HANGUL CHIEUCH
+326A;ID;CIRCLED HANGUL KHIEUKH
+326B;ID;CIRCLED HANGUL THIEUTH
+326C;ID;CIRCLED HANGUL PHIEUPH
+326D;ID;CIRCLED HANGUL HIEUH
+326E;ID;CIRCLED HANGUL KIYEOK A
+326F;ID;CIRCLED HANGUL NIEUN A
+3270;ID;CIRCLED HANGUL TIKEUT A
+3271;ID;CIRCLED HANGUL RIEUL A
+3272;ID;CIRCLED HANGUL MIEUM A
+3273;ID;CIRCLED HANGUL PIEUP A
+3274;ID;CIRCLED HANGUL SIOS A
+3275;ID;CIRCLED HANGUL IEUNG A
+3276;ID;CIRCLED HANGUL CIEUC A
+3277;ID;CIRCLED HANGUL CHIEUCH A
+3278;ID;CIRCLED HANGUL KHIEUKH A
+3279;ID;CIRCLED HANGUL THIEUTH A
+327A;ID;CIRCLED HANGUL PHIEUPH A
+327B;ID;CIRCLED HANGUL HIEUH A
+327F;ID;KOREAN STANDARD SYMBOL
+3280;ID;CIRCLED IDEOGRAPH ONE
+3281;ID;CIRCLED IDEOGRAPH TWO
+3282;ID;CIRCLED IDEOGRAPH THREE
+3283;ID;CIRCLED IDEOGRAPH FOUR
+3284;ID;CIRCLED IDEOGRAPH FIVE
+3285;ID;CIRCLED IDEOGRAPH SIX
+3286;ID;CIRCLED IDEOGRAPH SEVEN
+3287;ID;CIRCLED IDEOGRAPH EIGHT
+3288;ID;CIRCLED IDEOGRAPH NINE
+3289;ID;CIRCLED IDEOGRAPH TEN
+328A;ID;CIRCLED IDEOGRAPH MOON
+328B;ID;CIRCLED IDEOGRAPH FIRE
+328C;ID;CIRCLED IDEOGRAPH WATER
+328D;ID;CIRCLED IDEOGRAPH WOOD
+328E;ID;CIRCLED IDEOGRAPH METAL
+328F;ID;CIRCLED IDEOGRAPH EARTH
+3290;ID;CIRCLED IDEOGRAPH SUN
+3291;ID;CIRCLED IDEOGRAPH STOCK
+3292;ID;CIRCLED IDEOGRAPH HAVE
+3293;ID;CIRCLED IDEOGRAPH SOCIETY
+3294;ID;CIRCLED IDEOGRAPH NAME
+3295;ID;CIRCLED IDEOGRAPH SPECIAL
+3296;ID;CIRCLED IDEOGRAPH FINANCIAL
+3297;ID;CIRCLED IDEOGRAPH CONGRATULATION
+3298;ID;CIRCLED IDEOGRAPH LABOR
+3299;ID;CIRCLED IDEOGRAPH SECRET
+329A;ID;CIRCLED IDEOGRAPH MALE
+329B;ID;CIRCLED IDEOGRAPH FEMALE
+329C;ID;CIRCLED IDEOGRAPH SUITABLE
+329D;ID;CIRCLED IDEOGRAPH EXCELLENT
+329E;ID;CIRCLED IDEOGRAPH PRINT
+329F;ID;CIRCLED IDEOGRAPH ATTENTION
+32A0;ID;CIRCLED IDEOGRAPH ITEM
+32A1;ID;CIRCLED IDEOGRAPH REST
+32A2;ID;CIRCLED IDEOGRAPH COPY
+32A3;ID;CIRCLED IDEOGRAPH CORRECT
+32A4;ID;CIRCLED IDEOGRAPH HIGH
+32A5;ID;CIRCLED IDEOGRAPH CENTRE
+32A6;ID;CIRCLED IDEOGRAPH LOW
+32A7;ID;CIRCLED IDEOGRAPH LEFT
+32A8;ID;CIRCLED IDEOGRAPH RIGHT
+32A9;ID;CIRCLED IDEOGRAPH MEDICINE
+32AA;ID;CIRCLED IDEOGRAPH RELIGION
+32AB;ID;CIRCLED IDEOGRAPH STUDY
+32AC;ID;CIRCLED IDEOGRAPH SUPERVISE
+32AD;ID;CIRCLED IDEOGRAPH ENTERPRISE
+32AE;ID;CIRCLED IDEOGRAPH RESOURCE
+32AF;ID;CIRCLED IDEOGRAPH ALLIANCE
+32B0;ID;CIRCLED IDEOGRAPH NIGHT
+32C0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32D0;ID;CIRCLED KATAKANA A
+32D1;ID;CIRCLED KATAKANA I
+32D2;ID;CIRCLED KATAKANA U
+32D3;ID;CIRCLED KATAKANA E
+32D4;ID;CIRCLED KATAKANA O
+32D5;ID;CIRCLED KATAKANA KA
+32D6;ID;CIRCLED KATAKANA KI
+32D7;ID;CIRCLED KATAKANA KU
+32D8;ID;CIRCLED KATAKANA KE
+32D9;ID;CIRCLED KATAKANA KO
+32DA;ID;CIRCLED KATAKANA SA
+32DB;ID;CIRCLED KATAKANA SI
+32DC;ID;CIRCLED KATAKANA SU
+32DD;ID;CIRCLED KATAKANA SE
+32DE;ID;CIRCLED KATAKANA SO
+32DF;ID;CIRCLED KATAKANA TA
+32E0;ID;CIRCLED KATAKANA TI
+32E1;ID;CIRCLED KATAKANA TU
+32E2;ID;CIRCLED KATAKANA TE
+32E3;ID;CIRCLED KATAKANA TO
+32E4;ID;CIRCLED KATAKANA NA
+32E5;ID;CIRCLED KATAKANA NI
+32E6;ID;CIRCLED KATAKANA NU
+32E7;ID;CIRCLED KATAKANA NE
+32E8;ID;CIRCLED KATAKANA NO
+32E9;ID;CIRCLED KATAKANA HA
+32EA;ID;CIRCLED KATAKANA HI
+32EB;ID;CIRCLED KATAKANA HU
+32EC;ID;CIRCLED KATAKANA HE
+32ED;ID;CIRCLED KATAKANA HO
+32EE;ID;CIRCLED KATAKANA MA
+32EF;ID;CIRCLED KATAKANA MI
+32F0;ID;CIRCLED KATAKANA MU
+32F1;ID;CIRCLED KATAKANA ME
+32F2;ID;CIRCLED KATAKANA MO
+32F3;ID;CIRCLED KATAKANA YA
+32F4;ID;CIRCLED KATAKANA YU
+32F5;ID;CIRCLED KATAKANA YO
+32F6;ID;CIRCLED KATAKANA RA
+32F7;ID;CIRCLED KATAKANA RI
+32F8;ID;CIRCLED KATAKANA RU
+32F9;ID;CIRCLED KATAKANA RE
+32FA;ID;CIRCLED KATAKANA RO
+32FB;ID;CIRCLED KATAKANA WA
+32FC;ID;CIRCLED KATAKANA WI
+32FD;ID;CIRCLED KATAKANA WE
+32FE;ID;CIRCLED KATAKANA WO
+3300;ID;SQUARE APAATO
+3301;ID;SQUARE ARUHUA
+3302;ID;SQUARE ANPEA
+3303;ID;SQUARE AARU
+3304;ID;SQUARE ININGU
+3305;ID;SQUARE INTI
+3306;ID;SQUARE UON
+3307;ID;SQUARE ESUKUUDO
+3308;ID;SQUARE EEKAA
+3309;ID;SQUARE ONSU
+330A;ID;SQUARE OOMU
+330B;ID;SQUARE KAIRI
+330C;ID;SQUARE KARATTO
+330D;ID;SQUARE KARORII
+330E;ID;SQUARE GARON
+330F;ID;SQUARE GANMA
+3310;ID;SQUARE GIGA
+3311;ID;SQUARE GINII
+3312;ID;SQUARE KYURII
+3313;ID;SQUARE GIRUDAA
+3314;ID;SQUARE KIRO
+3315;ID;SQUARE KIROGURAMU
+3316;ID;SQUARE KIROMEETORU
+3317;ID;SQUARE KIROWATTO
+3318;ID;SQUARE GURAMU
+3319;ID;SQUARE GURAMUTON
+331A;ID;SQUARE KURUZEIRO
+331B;ID;SQUARE KUROONE
+331C;ID;SQUARE KEESU
+331D;ID;SQUARE KORUNA
+331E;ID;SQUARE KOOPO
+331F;ID;SQUARE SAIKURU
+3320;ID;SQUARE SANTIIMU
+3321;ID;SQUARE SIRINGU
+3322;ID;SQUARE SENTI
+3323;ID;SQUARE SENTO
+3324;ID;SQUARE DAASU
+3325;ID;SQUARE DESI
+3326;ID;SQUARE DORU
+3327;ID;SQUARE TON
+3328;ID;SQUARE NANO
+3329;ID;SQUARE NOTTO
+332A;ID;SQUARE HAITU
+332B;ID;SQUARE PAASENTO
+332C;ID;SQUARE PAATU
+332D;ID;SQUARE BAARERU
+332E;ID;SQUARE PIASUTORU
+332F;ID;SQUARE PIKURU
+3330;ID;SQUARE PIKO
+3331;ID;SQUARE BIRU
+3332;ID;SQUARE HUARADDO
+3333;ID;SQUARE HUIITO
+3334;ID;SQUARE BUSSYERU
+3335;ID;SQUARE HURAN
+3336;ID;SQUARE HEKUTAARU
+3337;ID;SQUARE PESO
+3338;ID;SQUARE PENIHI
+3339;ID;SQUARE HERUTU
+333A;ID;SQUARE PENSU
+333B;ID;SQUARE PEEZI
+333C;ID;SQUARE BEETA
+333D;ID;SQUARE POINTO
+333E;ID;SQUARE BORUTO
+333F;ID;SQUARE HON
+3340;ID;SQUARE PONDO
+3341;ID;SQUARE HOORU
+3342;ID;SQUARE HOON
+3343;ID;SQUARE MAIKURO
+3344;ID;SQUARE MAIRU
+3345;ID;SQUARE MAHHA
+3346;ID;SQUARE MARUKU
+3347;ID;SQUARE MANSYON
+3348;ID;SQUARE MIKURON
+3349;ID;SQUARE MIRI
+334A;ID;SQUARE MIRIBAARU
+334B;ID;SQUARE MEGA
+334C;ID;SQUARE MEGATON
+334D;ID;SQUARE MEETORU
+334E;ID;SQUARE YAADO
+334F;ID;SQUARE YAARU
+3350;ID;SQUARE YUAN
+3351;ID;SQUARE RITTORU
+3352;ID;SQUARE RIRA
+3353;ID;SQUARE RUPII
+3354;ID;SQUARE RUUBURU
+3355;ID;SQUARE REMU
+3356;ID;SQUARE RENTOGEN
+3357;ID;SQUARE WATTO
+3358;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;ID;SQUARE HPA
+3372;ID;SQUARE DA
+3373;ID;SQUARE AU
+3374;ID;SQUARE BAR
+3375;ID;SQUARE OV
+3376;ID;SQUARE PC
+337B;ID;SQUARE ERA NAME HEISEI
+337C;ID;SQUARE ERA NAME SYOUWA
+337D;ID;SQUARE ERA NAME TAISYOU
+337E;ID;SQUARE ERA NAME MEIZI
+337F;ID;SQUARE CORPORATION
+3380;ID;SQUARE PA AMPS
+3381;ID;SQUARE NA
+3382;ID;SQUARE MU A
+3383;ID;SQUARE MA
+3384;ID;SQUARE KA
+3385;ID;SQUARE KB
+3386;ID;SQUARE MB
+3387;ID;SQUARE GB
+3388;ID;SQUARE CAL
+3389;ID;SQUARE KCAL
+338A;ID;SQUARE PF
+338B;ID;SQUARE NF
+338C;ID;SQUARE MU F
+338D;ID;SQUARE MU G
+338E;ID;SQUARE MG
+338F;ID;SQUARE KG
+3390;ID;SQUARE HZ
+3391;ID;SQUARE KHZ
+3392;ID;SQUARE MHZ
+3393;ID;SQUARE GHZ
+3394;ID;SQUARE THZ
+3395;ID;SQUARE MU L
+3396;ID;SQUARE ML
+3397;ID;SQUARE DL
+3398;ID;SQUARE KL
+3399;ID;SQUARE FM
+339A;ID;SQUARE NM
+339B;ID;SQUARE MU M
+339C;ID;SQUARE MM
+339D;ID;SQUARE CM
+339E;ID;SQUARE KM
+339F;ID;SQUARE MM SQUARED
+33A0;ID;SQUARE CM SQUARED
+33A1;ID;SQUARE M SQUARED
+33A2;ID;SQUARE KM SQUARED
+33A3;ID;SQUARE MM CUBED
+33A4;ID;SQUARE CM CUBED
+33A5;ID;SQUARE M CUBED
+33A6;ID;SQUARE KM CUBED
+33A7;ID;SQUARE M OVER S
+33A8;ID;SQUARE M OVER S SQUARED
+33A9;ID;SQUARE PA
+33AA;ID;SQUARE KPA
+33AB;ID;SQUARE MPA
+33AC;ID;SQUARE GPA
+33AD;ID;SQUARE RAD
+33AE;ID;SQUARE RAD OVER S
+33AF;ID;SQUARE RAD OVER S SQUARED
+33B0;ID;SQUARE PS
+33B1;ID;SQUARE NS
+33B2;ID;SQUARE MU S
+33B3;ID;SQUARE MS
+33B4;ID;SQUARE PV
+33B5;ID;SQUARE NV
+33B6;ID;SQUARE MU V
+33B7;ID;SQUARE MV
+33B8;ID;SQUARE KV
+33B9;ID;SQUARE MV MEGA
+33BA;ID;SQUARE PW
+33BB;ID;SQUARE NW
+33BC;ID;SQUARE MU W
+33BD;ID;SQUARE MW
+33BE;ID;SQUARE KW
+33BF;ID;SQUARE MW MEGA
+33C0;ID;SQUARE K OHM
+33C1;ID;SQUARE M OHM
+33C2;ID;SQUARE AM
+33C3;ID;SQUARE BQ
+33C4;ID;SQUARE CC
+33C5;ID;SQUARE CD
+33C6;ID;SQUARE C OVER KG
+33C7;ID;SQUARE CO
+33C8;ID;SQUARE DB
+33C9;ID;SQUARE GY
+33CA;ID;SQUARE HA
+33CB;ID;SQUARE HP
+33CC;ID;SQUARE IN
+33CD;ID;SQUARE KK
+33CE;ID;SQUARE KM CAPITAL
+33CF;ID;SQUARE KT
+33D0;ID;SQUARE LM
+33D1;ID;SQUARE LN
+33D2;ID;SQUARE LOG
+33D3;ID;SQUARE LX
+33D4;ID;SQUARE MB SMALL
+33D5;ID;SQUARE MIL
+33D6;ID;SQUARE MOL
+33D7;ID;SQUARE PH
+33D8;ID;SQUARE PM
+33D9;ID;SQUARE PPM
+33DA;ID;SQUARE PR
+33DB;ID;SQUARE SR
+33DC;ID;SQUARE SV
+33DD;ID;SQUARE WB
+33E0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+3400;ID;<CJK Ideograph Extension A, First>
+4DB5;ID;<CJK Ideograph Extension A, Last>
+4E00;ID;<CJK Ideograph, First>
+9FA5;ID;<CJK Ideograph, Last>
+A000;ID;YI SYLLABLE IT
+A001;ID;YI SYLLABLE IX
+A002;ID;YI SYLLABLE I
+A003;ID;YI SYLLABLE IP
+A004;ID;YI SYLLABLE IET
+A005;ID;YI SYLLABLE IEX
+A006;ID;YI SYLLABLE IE
+A007;ID;YI SYLLABLE IEP
+A008;ID;YI SYLLABLE AT
+A009;ID;YI SYLLABLE AX
+A00A;ID;YI SYLLABLE A
+A00B;ID;YI SYLLABLE AP
+A00C;ID;YI SYLLABLE UOX
+A00D;ID;YI SYLLABLE UO
+A00E;ID;YI SYLLABLE UOP
+A00F;ID;YI SYLLABLE OT
+A010;ID;YI SYLLABLE OX
+A011;ID;YI SYLLABLE O
+A012;ID;YI SYLLABLE OP
+A013;ID;YI SYLLABLE EX
+A014;ID;YI SYLLABLE E
+A015;ID;YI SYLLABLE WU
+A016;ID;YI SYLLABLE BIT
+A017;ID;YI SYLLABLE BIX
+A018;ID;YI SYLLABLE BI
+A019;ID;YI SYLLABLE BIP
+A01A;ID;YI SYLLABLE BIET
+A01B;ID;YI SYLLABLE BIEX
+A01C;ID;YI SYLLABLE BIE
+A01D;ID;YI SYLLABLE BIEP
+A01E;ID;YI SYLLABLE BAT
+A01F;ID;YI SYLLABLE BAX
+A020;ID;YI SYLLABLE BA
+A021;ID;YI SYLLABLE BAP
+A022;ID;YI SYLLABLE BUOX
+A023;ID;YI SYLLABLE BUO
+A024;ID;YI SYLLABLE BUOP
+A025;ID;YI SYLLABLE BOT
+A026;ID;YI SYLLABLE BOX
+A027;ID;YI SYLLABLE BO
+A028;ID;YI SYLLABLE BOP
+A029;ID;YI SYLLABLE BEX
+A02A;ID;YI SYLLABLE BE
+A02B;ID;YI SYLLABLE BEP
+A02C;ID;YI SYLLABLE BUT
+A02D;ID;YI SYLLABLE BUX
+A02E;ID;YI SYLLABLE BU
+A02F;ID;YI SYLLABLE BUP
+A030;ID;YI SYLLABLE BURX
+A031;ID;YI SYLLABLE BUR
+A032;ID;YI SYLLABLE BYT
+A033;ID;YI SYLLABLE BYX
+A034;ID;YI SYLLABLE BY
+A035;ID;YI SYLLABLE BYP
+A036;ID;YI SYLLABLE BYRX
+A037;ID;YI SYLLABLE BYR
+A038;ID;YI SYLLABLE PIT
+A039;ID;YI SYLLABLE PIX
+A03A;ID;YI SYLLABLE PI
+A03B;ID;YI SYLLABLE PIP
+A03C;ID;YI SYLLABLE PIEX
+A03D;ID;YI SYLLABLE PIE
+A03E;ID;YI SYLLABLE PIEP
+A03F;ID;YI SYLLABLE PAT
+A040;ID;YI SYLLABLE PAX
+A041;ID;YI SYLLABLE PA
+A042;ID;YI SYLLABLE PAP
+A043;ID;YI SYLLABLE PUOX
+A044;ID;YI SYLLABLE PUO
+A045;ID;YI SYLLABLE PUOP
+A046;ID;YI SYLLABLE POT
+A047;ID;YI SYLLABLE POX
+A048;ID;YI SYLLABLE PO
+A049;ID;YI SYLLABLE POP
+A04A;ID;YI SYLLABLE PUT
+A04B;ID;YI SYLLABLE PUX
+A04C;ID;YI SYLLABLE PU
+A04D;ID;YI SYLLABLE PUP
+A04E;ID;YI SYLLABLE PURX
+A04F;ID;YI SYLLABLE PUR
+A050;ID;YI SYLLABLE PYT
+A051;ID;YI SYLLABLE PYX
+A052;ID;YI SYLLABLE PY
+A053;ID;YI SYLLABLE PYP
+A054;ID;YI SYLLABLE PYRX
+A055;ID;YI SYLLABLE PYR
+A056;ID;YI SYLLABLE BBIT
+A057;ID;YI SYLLABLE BBIX
+A058;ID;YI SYLLABLE BBI
+A059;ID;YI SYLLABLE BBIP
+A05A;ID;YI SYLLABLE BBIET
+A05B;ID;YI SYLLABLE BBIEX
+A05C;ID;YI SYLLABLE BBIE
+A05D;ID;YI SYLLABLE BBIEP
+A05E;ID;YI SYLLABLE BBAT
+A05F;ID;YI SYLLABLE BBAX
+A060;ID;YI SYLLABLE BBA
+A061;ID;YI SYLLABLE BBAP
+A062;ID;YI SYLLABLE BBUOX
+A063;ID;YI SYLLABLE BBUO
+A064;ID;YI SYLLABLE BBUOP
+A065;ID;YI SYLLABLE BBOT
+A066;ID;YI SYLLABLE BBOX
+A067;ID;YI SYLLABLE BBO
+A068;ID;YI SYLLABLE BBOP
+A069;ID;YI SYLLABLE BBEX
+A06A;ID;YI SYLLABLE BBE
+A06B;ID;YI SYLLABLE BBEP
+A06C;ID;YI SYLLABLE BBUT
+A06D;ID;YI SYLLABLE BBUX
+A06E;ID;YI SYLLABLE BBU
+A06F;ID;YI SYLLABLE BBUP
+A070;ID;YI SYLLABLE BBURX
+A071;ID;YI SYLLABLE BBUR
+A072;ID;YI SYLLABLE BBYT
+A073;ID;YI SYLLABLE BBYX
+A074;ID;YI SYLLABLE BBY
+A075;ID;YI SYLLABLE BBYP
+A076;ID;YI SYLLABLE NBIT
+A077;ID;YI SYLLABLE NBIX
+A078;ID;YI SYLLABLE NBI
+A079;ID;YI SYLLABLE NBIP
+A07A;ID;YI SYLLABLE NBIEX
+A07B;ID;YI SYLLABLE NBIE
+A07C;ID;YI SYLLABLE NBIEP
+A07D;ID;YI SYLLABLE NBAT
+A07E;ID;YI SYLLABLE NBAX
+A07F;ID;YI SYLLABLE NBA
+A080;ID;YI SYLLABLE NBAP
+A081;ID;YI SYLLABLE NBOT
+A082;ID;YI SYLLABLE NBOX
+A083;ID;YI SYLLABLE NBO
+A084;ID;YI SYLLABLE NBOP
+A085;ID;YI SYLLABLE NBUT
+A086;ID;YI SYLLABLE NBUX
+A087;ID;YI SYLLABLE NBU
+A088;ID;YI SYLLABLE NBUP
+A089;ID;YI SYLLABLE NBURX
+A08A;ID;YI SYLLABLE NBUR
+A08B;ID;YI SYLLABLE NBYT
+A08C;ID;YI SYLLABLE NBYX
+A08D;ID;YI SYLLABLE NBY
+A08E;ID;YI SYLLABLE NBYP
+A08F;ID;YI SYLLABLE NBYRX
+A090;ID;YI SYLLABLE NBYR
+A091;ID;YI SYLLABLE HMIT
+A092;ID;YI SYLLABLE HMIX
+A093;ID;YI SYLLABLE HMI
+A094;ID;YI SYLLABLE HMIP
+A095;ID;YI SYLLABLE HMIEX
+A096;ID;YI SYLLABLE HMIE
+A097;ID;YI SYLLABLE HMIEP
+A098;ID;YI SYLLABLE HMAT
+A099;ID;YI SYLLABLE HMAX
+A09A;ID;YI SYLLABLE HMA
+A09B;ID;YI SYLLABLE HMAP
+A09C;ID;YI SYLLABLE HMUOX
+A09D;ID;YI SYLLABLE HMUO
+A09E;ID;YI SYLLABLE HMUOP
+A09F;ID;YI SYLLABLE HMOT
+A0A0;ID;YI SYLLABLE HMOX
+A0A1;ID;YI SYLLABLE HMO
+A0A2;ID;YI SYLLABLE HMOP
+A0A3;ID;YI SYLLABLE HMUT
+A0A4;ID;YI SYLLABLE HMUX
+A0A5;ID;YI SYLLABLE HMU
+A0A6;ID;YI SYLLABLE HMUP
+A0A7;ID;YI SYLLABLE HMURX
+A0A8;ID;YI SYLLABLE HMUR
+A0A9;ID;YI SYLLABLE HMYX
+A0AA;ID;YI SYLLABLE HMY
+A0AB;ID;YI SYLLABLE HMYP
+A0AC;ID;YI SYLLABLE HMYRX
+A0AD;ID;YI SYLLABLE HMYR
+A0AE;ID;YI SYLLABLE MIT
+A0AF;ID;YI SYLLABLE MIX
+A0B0;ID;YI SYLLABLE MI
+A0B1;ID;YI SYLLABLE MIP
+A0B2;ID;YI SYLLABLE MIEX
+A0B3;ID;YI SYLLABLE MIE
+A0B4;ID;YI SYLLABLE MIEP
+A0B5;ID;YI SYLLABLE MAT
+A0B6;ID;YI SYLLABLE MAX
+A0B7;ID;YI SYLLABLE MA
+A0B8;ID;YI SYLLABLE MAP
+A0B9;ID;YI SYLLABLE MUOT
+A0BA;ID;YI SYLLABLE MUOX
+A0BB;ID;YI SYLLABLE MUO
+A0BC;ID;YI SYLLABLE MUOP
+A0BD;ID;YI SYLLABLE MOT
+A0BE;ID;YI SYLLABLE MOX
+A0BF;ID;YI SYLLABLE MO
+A0C0;ID;YI SYLLABLE MOP
+A0C1;ID;YI SYLLABLE MEX
+A0C2;ID;YI SYLLABLE ME
+A0C3;ID;YI SYLLABLE MUT
+A0C4;ID;YI SYLLABLE MUX
+A0C5;ID;YI SYLLABLE MU
+A0C6;ID;YI SYLLABLE MUP
+A0C7;ID;YI SYLLABLE MURX
+A0C8;ID;YI SYLLABLE MUR
+A0C9;ID;YI SYLLABLE MYT
+A0CA;ID;YI SYLLABLE MYX
+A0CB;ID;YI SYLLABLE MY
+A0CC;ID;YI SYLLABLE MYP
+A0CD;ID;YI SYLLABLE FIT
+A0CE;ID;YI SYLLABLE FIX
+A0CF;ID;YI SYLLABLE FI
+A0D0;ID;YI SYLLABLE FIP
+A0D1;ID;YI SYLLABLE FAT
+A0D2;ID;YI SYLLABLE FAX
+A0D3;ID;YI SYLLABLE FA
+A0D4;ID;YI SYLLABLE FAP
+A0D5;ID;YI SYLLABLE FOX
+A0D6;ID;YI SYLLABLE FO
+A0D7;ID;YI SYLLABLE FOP
+A0D8;ID;YI SYLLABLE FUT
+A0D9;ID;YI SYLLABLE FUX
+A0DA;ID;YI SYLLABLE FU
+A0DB;ID;YI SYLLABLE FUP
+A0DC;ID;YI SYLLABLE FURX
+A0DD;ID;YI SYLLABLE FUR
+A0DE;ID;YI SYLLABLE FYT
+A0DF;ID;YI SYLLABLE FYX
+A0E0;ID;YI SYLLABLE FY
+A0E1;ID;YI SYLLABLE FYP
+A0E2;ID;YI SYLLABLE VIT
+A0E3;ID;YI SYLLABLE VIX
+A0E4;ID;YI SYLLABLE VI
+A0E5;ID;YI SYLLABLE VIP
+A0E6;ID;YI SYLLABLE VIET
+A0E7;ID;YI SYLLABLE VIEX
+A0E8;ID;YI SYLLABLE VIE
+A0E9;ID;YI SYLLABLE VIEP
+A0EA;ID;YI SYLLABLE VAT
+A0EB;ID;YI SYLLABLE VAX
+A0EC;ID;YI SYLLABLE VA
+A0ED;ID;YI SYLLABLE VAP
+A0EE;ID;YI SYLLABLE VOT
+A0EF;ID;YI SYLLABLE VOX
+A0F0;ID;YI SYLLABLE VO
+A0F1;ID;YI SYLLABLE VOP
+A0F2;ID;YI SYLLABLE VEX
+A0F3;ID;YI SYLLABLE VEP
+A0F4;ID;YI SYLLABLE VUT
+A0F5;ID;YI SYLLABLE VUX
+A0F6;ID;YI SYLLABLE VU
+A0F7;ID;YI SYLLABLE VUP
+A0F8;ID;YI SYLLABLE VURX
+A0F9;ID;YI SYLLABLE VUR
+A0FA;ID;YI SYLLABLE VYT
+A0FB;ID;YI SYLLABLE VYX
+A0FC;ID;YI SYLLABLE VY
+A0FD;ID;YI SYLLABLE VYP
+A0FE;ID;YI SYLLABLE VYRX
+A0FF;ID;YI SYLLABLE VYR
+A100;ID;YI SYLLABLE DIT
+A101;ID;YI SYLLABLE DIX
+A102;ID;YI SYLLABLE DI
+A103;ID;YI SYLLABLE DIP
+A104;ID;YI SYLLABLE DIEX
+A105;ID;YI SYLLABLE DIE
+A106;ID;YI SYLLABLE DIEP
+A107;ID;YI SYLLABLE DAT
+A108;ID;YI SYLLABLE DAX
+A109;ID;YI SYLLABLE DA
+A10A;ID;YI SYLLABLE DAP
+A10B;ID;YI SYLLABLE DUOX
+A10C;ID;YI SYLLABLE DUO
+A10D;ID;YI SYLLABLE DOT
+A10E;ID;YI SYLLABLE DOX
+A10F;ID;YI SYLLABLE DO
+A110;ID;YI SYLLABLE DOP
+A111;ID;YI SYLLABLE DEX
+A112;ID;YI SYLLABLE DE
+A113;ID;YI SYLLABLE DEP
+A114;ID;YI SYLLABLE DUT
+A115;ID;YI SYLLABLE DUX
+A116;ID;YI SYLLABLE DU
+A117;ID;YI SYLLABLE DUP
+A118;ID;YI SYLLABLE DURX
+A119;ID;YI SYLLABLE DUR
+A11A;ID;YI SYLLABLE TIT
+A11B;ID;YI SYLLABLE TIX
+A11C;ID;YI SYLLABLE TI
+A11D;ID;YI SYLLABLE TIP
+A11E;ID;YI SYLLABLE TIEX
+A11F;ID;YI SYLLABLE TIE
+A120;ID;YI SYLLABLE TIEP
+A121;ID;YI SYLLABLE TAT
+A122;ID;YI SYLLABLE TAX
+A123;ID;YI SYLLABLE TA
+A124;ID;YI SYLLABLE TAP
+A125;ID;YI SYLLABLE TUOT
+A126;ID;YI SYLLABLE TUOX
+A127;ID;YI SYLLABLE TUO
+A128;ID;YI SYLLABLE TUOP
+A129;ID;YI SYLLABLE TOT
+A12A;ID;YI SYLLABLE TOX
+A12B;ID;YI SYLLABLE TO
+A12C;ID;YI SYLLABLE TOP
+A12D;ID;YI SYLLABLE TEX
+A12E;ID;YI SYLLABLE TE
+A12F;ID;YI SYLLABLE TEP
+A130;ID;YI SYLLABLE TUT
+A131;ID;YI SYLLABLE TUX
+A132;ID;YI SYLLABLE TU
+A133;ID;YI SYLLABLE TUP
+A134;ID;YI SYLLABLE TURX
+A135;ID;YI SYLLABLE TUR
+A136;ID;YI SYLLABLE DDIT
+A137;ID;YI SYLLABLE DDIX
+A138;ID;YI SYLLABLE DDI
+A139;ID;YI SYLLABLE DDIP
+A13A;ID;YI SYLLABLE DDIEX
+A13B;ID;YI SYLLABLE DDIE
+A13C;ID;YI SYLLABLE DDIEP
+A13D;ID;YI SYLLABLE DDAT
+A13E;ID;YI SYLLABLE DDAX
+A13F;ID;YI SYLLABLE DDA
+A140;ID;YI SYLLABLE DDAP
+A141;ID;YI SYLLABLE DDUOX
+A142;ID;YI SYLLABLE DDUO
+A143;ID;YI SYLLABLE DDUOP
+A144;ID;YI SYLLABLE DDOT
+A145;ID;YI SYLLABLE DDOX
+A146;ID;YI SYLLABLE DDO
+A147;ID;YI SYLLABLE DDOP
+A148;ID;YI SYLLABLE DDEX
+A149;ID;YI SYLLABLE DDE
+A14A;ID;YI SYLLABLE DDEP
+A14B;ID;YI SYLLABLE DDUT
+A14C;ID;YI SYLLABLE DDUX
+A14D;ID;YI SYLLABLE DDU
+A14E;ID;YI SYLLABLE DDUP
+A14F;ID;YI SYLLABLE DDURX
+A150;ID;YI SYLLABLE DDUR
+A151;ID;YI SYLLABLE NDIT
+A152;ID;YI SYLLABLE NDIX
+A153;ID;YI SYLLABLE NDI
+A154;ID;YI SYLLABLE NDIP
+A155;ID;YI SYLLABLE NDIEX
+A156;ID;YI SYLLABLE NDIE
+A157;ID;YI SYLLABLE NDAT
+A158;ID;YI SYLLABLE NDAX
+A159;ID;YI SYLLABLE NDA
+A15A;ID;YI SYLLABLE NDAP
+A15B;ID;YI SYLLABLE NDOT
+A15C;ID;YI SYLLABLE NDOX
+A15D;ID;YI SYLLABLE NDO
+A15E;ID;YI SYLLABLE NDOP
+A15F;ID;YI SYLLABLE NDEX
+A160;ID;YI SYLLABLE NDE
+A161;ID;YI SYLLABLE NDEP
+A162;ID;YI SYLLABLE NDUT
+A163;ID;YI SYLLABLE NDUX
+A164;ID;YI SYLLABLE NDU
+A165;ID;YI SYLLABLE NDUP
+A166;ID;YI SYLLABLE NDURX
+A167;ID;YI SYLLABLE NDUR
+A168;ID;YI SYLLABLE HNIT
+A169;ID;YI SYLLABLE HNIX
+A16A;ID;YI SYLLABLE HNI
+A16B;ID;YI SYLLABLE HNIP
+A16C;ID;YI SYLLABLE HNIET
+A16D;ID;YI SYLLABLE HNIEX
+A16E;ID;YI SYLLABLE HNIE
+A16F;ID;YI SYLLABLE HNIEP
+A170;ID;YI SYLLABLE HNAT
+A171;ID;YI SYLLABLE HNAX
+A172;ID;YI SYLLABLE HNA
+A173;ID;YI SYLLABLE HNAP
+A174;ID;YI SYLLABLE HNUOX
+A175;ID;YI SYLLABLE HNUO
+A176;ID;YI SYLLABLE HNOT
+A177;ID;YI SYLLABLE HNOX
+A178;ID;YI SYLLABLE HNOP
+A179;ID;YI SYLLABLE HNEX
+A17A;ID;YI SYLLABLE HNE
+A17B;ID;YI SYLLABLE HNEP
+A17C;ID;YI SYLLABLE HNUT
+A17D;ID;YI SYLLABLE NIT
+A17E;ID;YI SYLLABLE NIX
+A17F;ID;YI SYLLABLE NI
+A180;ID;YI SYLLABLE NIP
+A181;ID;YI SYLLABLE NIEX
+A182;ID;YI SYLLABLE NIE
+A183;ID;YI SYLLABLE NIEP
+A184;ID;YI SYLLABLE NAX
+A185;ID;YI SYLLABLE NA
+A186;ID;YI SYLLABLE NAP
+A187;ID;YI SYLLABLE NUOX
+A188;ID;YI SYLLABLE NUO
+A189;ID;YI SYLLABLE NUOP
+A18A;ID;YI SYLLABLE NOT
+A18B;ID;YI SYLLABLE NOX
+A18C;ID;YI SYLLABLE NO
+A18D;ID;YI SYLLABLE NOP
+A18E;ID;YI SYLLABLE NEX
+A18F;ID;YI SYLLABLE NE
+A190;ID;YI SYLLABLE NEP
+A191;ID;YI SYLLABLE NUT
+A192;ID;YI SYLLABLE NUX
+A193;ID;YI SYLLABLE NU
+A194;ID;YI SYLLABLE NUP
+A195;ID;YI SYLLABLE NURX
+A196;ID;YI SYLLABLE NUR
+A197;ID;YI SYLLABLE HLIT
+A198;ID;YI SYLLABLE HLIX
+A199;ID;YI SYLLABLE HLI
+A19A;ID;YI SYLLABLE HLIP
+A19B;ID;YI SYLLABLE HLIEX
+A19C;ID;YI SYLLABLE HLIE
+A19D;ID;YI SYLLABLE HLIEP
+A19E;ID;YI SYLLABLE HLAT
+A19F;ID;YI SYLLABLE HLAX
+A1A0;ID;YI SYLLABLE HLA
+A1A1;ID;YI SYLLABLE HLAP
+A1A2;ID;YI SYLLABLE HLUOX
+A1A3;ID;YI SYLLABLE HLUO
+A1A4;ID;YI SYLLABLE HLUOP
+A1A5;ID;YI SYLLABLE HLOX
+A1A6;ID;YI SYLLABLE HLO
+A1A7;ID;YI SYLLABLE HLOP
+A1A8;ID;YI SYLLABLE HLEX
+A1A9;ID;YI SYLLABLE HLE
+A1AA;ID;YI SYLLABLE HLEP
+A1AB;ID;YI SYLLABLE HLUT
+A1AC;ID;YI SYLLABLE HLUX
+A1AD;ID;YI SYLLABLE HLU
+A1AE;ID;YI SYLLABLE HLUP
+A1AF;ID;YI SYLLABLE HLURX
+A1B0;ID;YI SYLLABLE HLUR
+A1B1;ID;YI SYLLABLE HLYT
+A1B2;ID;YI SYLLABLE HLYX
+A1B3;ID;YI SYLLABLE HLY
+A1B4;ID;YI SYLLABLE HLYP
+A1B5;ID;YI SYLLABLE HLYRX
+A1B6;ID;YI SYLLABLE HLYR
+A1B7;ID;YI SYLLABLE LIT
+A1B8;ID;YI SYLLABLE LIX
+A1B9;ID;YI SYLLABLE LI
+A1BA;ID;YI SYLLABLE LIP
+A1BB;ID;YI SYLLABLE LIET
+A1BC;ID;YI SYLLABLE LIEX
+A1BD;ID;YI SYLLABLE LIE
+A1BE;ID;YI SYLLABLE LIEP
+A1BF;ID;YI SYLLABLE LAT
+A1C0;ID;YI SYLLABLE LAX
+A1C1;ID;YI SYLLABLE LA
+A1C2;ID;YI SYLLABLE LAP
+A1C3;ID;YI SYLLABLE LUOT
+A1C4;ID;YI SYLLABLE LUOX
+A1C5;ID;YI SYLLABLE LUO
+A1C6;ID;YI SYLLABLE LUOP
+A1C7;ID;YI SYLLABLE LOT
+A1C8;ID;YI SYLLABLE LOX
+A1C9;ID;YI SYLLABLE LO
+A1CA;ID;YI SYLLABLE LOP
+A1CB;ID;YI SYLLABLE LEX
+A1CC;ID;YI SYLLABLE LE
+A1CD;ID;YI SYLLABLE LEP
+A1CE;ID;YI SYLLABLE LUT
+A1CF;ID;YI SYLLABLE LUX
+A1D0;ID;YI SYLLABLE LU
+A1D1;ID;YI SYLLABLE LUP
+A1D2;ID;YI SYLLABLE LURX
+A1D3;ID;YI SYLLABLE LUR
+A1D4;ID;YI SYLLABLE LYT
+A1D5;ID;YI SYLLABLE LYX
+A1D6;ID;YI SYLLABLE LY
+A1D7;ID;YI SYLLABLE LYP
+A1D8;ID;YI SYLLABLE LYRX
+A1D9;ID;YI SYLLABLE LYR
+A1DA;ID;YI SYLLABLE GIT
+A1DB;ID;YI SYLLABLE GIX
+A1DC;ID;YI SYLLABLE GI
+A1DD;ID;YI SYLLABLE GIP
+A1DE;ID;YI SYLLABLE GIET
+A1DF;ID;YI SYLLABLE GIEX
+A1E0;ID;YI SYLLABLE GIE
+A1E1;ID;YI SYLLABLE GIEP
+A1E2;ID;YI SYLLABLE GAT
+A1E3;ID;YI SYLLABLE GAX
+A1E4;ID;YI SYLLABLE GA
+A1E5;ID;YI SYLLABLE GAP
+A1E6;ID;YI SYLLABLE GUOT
+A1E7;ID;YI SYLLABLE GUOX
+A1E8;ID;YI SYLLABLE GUO
+A1E9;ID;YI SYLLABLE GUOP
+A1EA;ID;YI SYLLABLE GOT
+A1EB;ID;YI SYLLABLE GOX
+A1EC;ID;YI SYLLABLE GO
+A1ED;ID;YI SYLLABLE GOP
+A1EE;ID;YI SYLLABLE GET
+A1EF;ID;YI SYLLABLE GEX
+A1F0;ID;YI SYLLABLE GE
+A1F1;ID;YI SYLLABLE GEP
+A1F2;ID;YI SYLLABLE GUT
+A1F3;ID;YI SYLLABLE GUX
+A1F4;ID;YI SYLLABLE GU
+A1F5;ID;YI SYLLABLE GUP
+A1F6;ID;YI SYLLABLE GURX
+A1F7;ID;YI SYLLABLE GUR
+A1F8;ID;YI SYLLABLE KIT
+A1F9;ID;YI SYLLABLE KIX
+A1FA;ID;YI SYLLABLE KI
+A1FB;ID;YI SYLLABLE KIP
+A1FC;ID;YI SYLLABLE KIEX
+A1FD;ID;YI SYLLABLE KIE
+A1FE;ID;YI SYLLABLE KIEP
+A1FF;ID;YI SYLLABLE KAT
+A200;ID;YI SYLLABLE KAX
+A201;ID;YI SYLLABLE KA
+A202;ID;YI SYLLABLE KAP
+A203;ID;YI SYLLABLE KUOX
+A204;ID;YI SYLLABLE KUO
+A205;ID;YI SYLLABLE KUOP
+A206;ID;YI SYLLABLE KOT
+A207;ID;YI SYLLABLE KOX
+A208;ID;YI SYLLABLE KO
+A209;ID;YI SYLLABLE KOP
+A20A;ID;YI SYLLABLE KET
+A20B;ID;YI SYLLABLE KEX
+A20C;ID;YI SYLLABLE KE
+A20D;ID;YI SYLLABLE KEP
+A20E;ID;YI SYLLABLE KUT
+A20F;ID;YI SYLLABLE KUX
+A210;ID;YI SYLLABLE KU
+A211;ID;YI SYLLABLE KUP
+A212;ID;YI SYLLABLE KURX
+A213;ID;YI SYLLABLE KUR
+A214;ID;YI SYLLABLE GGIT
+A215;ID;YI SYLLABLE GGIX
+A216;ID;YI SYLLABLE GGI
+A217;ID;YI SYLLABLE GGIEX
+A218;ID;YI SYLLABLE GGIE
+A219;ID;YI SYLLABLE GGIEP
+A21A;ID;YI SYLLABLE GGAT
+A21B;ID;YI SYLLABLE GGAX
+A21C;ID;YI SYLLABLE GGA
+A21D;ID;YI SYLLABLE GGAP
+A21E;ID;YI SYLLABLE GGUOT
+A21F;ID;YI SYLLABLE GGUOX
+A220;ID;YI SYLLABLE GGUO
+A221;ID;YI SYLLABLE GGUOP
+A222;ID;YI SYLLABLE GGOT
+A223;ID;YI SYLLABLE GGOX
+A224;ID;YI SYLLABLE GGO
+A225;ID;YI SYLLABLE GGOP
+A226;ID;YI SYLLABLE GGET
+A227;ID;YI SYLLABLE GGEX
+A228;ID;YI SYLLABLE GGE
+A229;ID;YI SYLLABLE GGEP
+A22A;ID;YI SYLLABLE GGUT
+A22B;ID;YI SYLLABLE GGUX
+A22C;ID;YI SYLLABLE GGU
+A22D;ID;YI SYLLABLE GGUP
+A22E;ID;YI SYLLABLE GGURX
+A22F;ID;YI SYLLABLE GGUR
+A230;ID;YI SYLLABLE MGIEX
+A231;ID;YI SYLLABLE MGIE
+A232;ID;YI SYLLABLE MGAT
+A233;ID;YI SYLLABLE MGAX
+A234;ID;YI SYLLABLE MGA
+A235;ID;YI SYLLABLE MGAP
+A236;ID;YI SYLLABLE MGUOX
+A237;ID;YI SYLLABLE MGUO
+A238;ID;YI SYLLABLE MGUOP
+A239;ID;YI SYLLABLE MGOT
+A23A;ID;YI SYLLABLE MGOX
+A23B;ID;YI SYLLABLE MGO
+A23C;ID;YI SYLLABLE MGOP
+A23D;ID;YI SYLLABLE MGEX
+A23E;ID;YI SYLLABLE MGE
+A23F;ID;YI SYLLABLE MGEP
+A240;ID;YI SYLLABLE MGUT
+A241;ID;YI SYLLABLE MGUX
+A242;ID;YI SYLLABLE MGU
+A243;ID;YI SYLLABLE MGUP
+A244;ID;YI SYLLABLE MGURX
+A245;ID;YI SYLLABLE MGUR
+A246;ID;YI SYLLABLE HXIT
+A247;ID;YI SYLLABLE HXIX
+A248;ID;YI SYLLABLE HXI
+A249;ID;YI SYLLABLE HXIP
+A24A;ID;YI SYLLABLE HXIET
+A24B;ID;YI SYLLABLE HXIEX
+A24C;ID;YI SYLLABLE HXIE
+A24D;ID;YI SYLLABLE HXIEP
+A24E;ID;YI SYLLABLE HXAT
+A24F;ID;YI SYLLABLE HXAX
+A250;ID;YI SYLLABLE HXA
+A251;ID;YI SYLLABLE HXAP
+A252;ID;YI SYLLABLE HXUOT
+A253;ID;YI SYLLABLE HXUOX
+A254;ID;YI SYLLABLE HXUO
+A255;ID;YI SYLLABLE HXUOP
+A256;ID;YI SYLLABLE HXOT
+A257;ID;YI SYLLABLE HXOX
+A258;ID;YI SYLLABLE HXO
+A259;ID;YI SYLLABLE HXOP
+A25A;ID;YI SYLLABLE HXEX
+A25B;ID;YI SYLLABLE HXE
+A25C;ID;YI SYLLABLE HXEP
+A25D;ID;YI SYLLABLE NGIEX
+A25E;ID;YI SYLLABLE NGIE
+A25F;ID;YI SYLLABLE NGIEP
+A260;ID;YI SYLLABLE NGAT
+A261;ID;YI SYLLABLE NGAX
+A262;ID;YI SYLLABLE NGA
+A263;ID;YI SYLLABLE NGAP
+A264;ID;YI SYLLABLE NGUOT
+A265;ID;YI SYLLABLE NGUOX
+A266;ID;YI SYLLABLE NGUO
+A267;ID;YI SYLLABLE NGOT
+A268;ID;YI SYLLABLE NGOX
+A269;ID;YI SYLLABLE NGO
+A26A;ID;YI SYLLABLE NGOP
+A26B;ID;YI SYLLABLE NGEX
+A26C;ID;YI SYLLABLE NGE
+A26D;ID;YI SYLLABLE NGEP
+A26E;ID;YI SYLLABLE HIT
+A26F;ID;YI SYLLABLE HIEX
+A270;ID;YI SYLLABLE HIE
+A271;ID;YI SYLLABLE HAT
+A272;ID;YI SYLLABLE HAX
+A273;ID;YI SYLLABLE HA
+A274;ID;YI SYLLABLE HAP
+A275;ID;YI SYLLABLE HUOT
+A276;ID;YI SYLLABLE HUOX
+A277;ID;YI SYLLABLE HUO
+A278;ID;YI SYLLABLE HUOP
+A279;ID;YI SYLLABLE HOT
+A27A;ID;YI SYLLABLE HOX
+A27B;ID;YI SYLLABLE HO
+A27C;ID;YI SYLLABLE HOP
+A27D;ID;YI SYLLABLE HEX
+A27E;ID;YI SYLLABLE HE
+A27F;ID;YI SYLLABLE HEP
+A280;ID;YI SYLLABLE WAT
+A281;ID;YI SYLLABLE WAX
+A282;ID;YI SYLLABLE WA
+A283;ID;YI SYLLABLE WAP
+A284;ID;YI SYLLABLE WUOX
+A285;ID;YI SYLLABLE WUO
+A286;ID;YI SYLLABLE WUOP
+A287;ID;YI SYLLABLE WOX
+A288;ID;YI SYLLABLE WO
+A289;ID;YI SYLLABLE WOP
+A28A;ID;YI SYLLABLE WEX
+A28B;ID;YI SYLLABLE WE
+A28C;ID;YI SYLLABLE WEP
+A28D;ID;YI SYLLABLE ZIT
+A28E;ID;YI SYLLABLE ZIX
+A28F;ID;YI SYLLABLE ZI
+A290;ID;YI SYLLABLE ZIP
+A291;ID;YI SYLLABLE ZIEX
+A292;ID;YI SYLLABLE ZIE
+A293;ID;YI SYLLABLE ZIEP
+A294;ID;YI SYLLABLE ZAT
+A295;ID;YI SYLLABLE ZAX
+A296;ID;YI SYLLABLE ZA
+A297;ID;YI SYLLABLE ZAP
+A298;ID;YI SYLLABLE ZUOX
+A299;ID;YI SYLLABLE ZUO
+A29A;ID;YI SYLLABLE ZUOP
+A29B;ID;YI SYLLABLE ZOT
+A29C;ID;YI SYLLABLE ZOX
+A29D;ID;YI SYLLABLE ZO
+A29E;ID;YI SYLLABLE ZOP
+A29F;ID;YI SYLLABLE ZEX
+A2A0;ID;YI SYLLABLE ZE
+A2A1;ID;YI SYLLABLE ZEP
+A2A2;ID;YI SYLLABLE ZUT
+A2A3;ID;YI SYLLABLE ZUX
+A2A4;ID;YI SYLLABLE ZU
+A2A5;ID;YI SYLLABLE ZUP
+A2A6;ID;YI SYLLABLE ZURX
+A2A7;ID;YI SYLLABLE ZUR
+A2A8;ID;YI SYLLABLE ZYT
+A2A9;ID;YI SYLLABLE ZYX
+A2AA;ID;YI SYLLABLE ZY
+A2AB;ID;YI SYLLABLE ZYP
+A2AC;ID;YI SYLLABLE ZYRX
+A2AD;ID;YI SYLLABLE ZYR
+A2AE;ID;YI SYLLABLE CIT
+A2AF;ID;YI SYLLABLE CIX
+A2B0;ID;YI SYLLABLE CI
+A2B1;ID;YI SYLLABLE CIP
+A2B2;ID;YI SYLLABLE CIET
+A2B3;ID;YI SYLLABLE CIEX
+A2B4;ID;YI SYLLABLE CIE
+A2B5;ID;YI SYLLABLE CIEP
+A2B6;ID;YI SYLLABLE CAT
+A2B7;ID;YI SYLLABLE CAX
+A2B8;ID;YI SYLLABLE CA
+A2B9;ID;YI SYLLABLE CAP
+A2BA;ID;YI SYLLABLE CUOX
+A2BB;ID;YI SYLLABLE CUO
+A2BC;ID;YI SYLLABLE CUOP
+A2BD;ID;YI SYLLABLE COT
+A2BE;ID;YI SYLLABLE COX
+A2BF;ID;YI SYLLABLE CO
+A2C0;ID;YI SYLLABLE COP
+A2C1;ID;YI SYLLABLE CEX
+A2C2;ID;YI SYLLABLE CE
+A2C3;ID;YI SYLLABLE CEP
+A2C4;ID;YI SYLLABLE CUT
+A2C5;ID;YI SYLLABLE CUX
+A2C6;ID;YI SYLLABLE CU
+A2C7;ID;YI SYLLABLE CUP
+A2C8;ID;YI SYLLABLE CURX
+A2C9;ID;YI SYLLABLE CUR
+A2CA;ID;YI SYLLABLE CYT
+A2CB;ID;YI SYLLABLE CYX
+A2CC;ID;YI SYLLABLE CY
+A2CD;ID;YI SYLLABLE CYP
+A2CE;ID;YI SYLLABLE CYRX
+A2CF;ID;YI SYLLABLE CYR
+A2D0;ID;YI SYLLABLE ZZIT
+A2D1;ID;YI SYLLABLE ZZIX
+A2D2;ID;YI SYLLABLE ZZI
+A2D3;ID;YI SYLLABLE ZZIP
+A2D4;ID;YI SYLLABLE ZZIET
+A2D5;ID;YI SYLLABLE ZZIEX
+A2D6;ID;YI SYLLABLE ZZIE
+A2D7;ID;YI SYLLABLE ZZIEP
+A2D8;ID;YI SYLLABLE ZZAT
+A2D9;ID;YI SYLLABLE ZZAX
+A2DA;ID;YI SYLLABLE ZZA
+A2DB;ID;YI SYLLABLE ZZAP
+A2DC;ID;YI SYLLABLE ZZOX
+A2DD;ID;YI SYLLABLE ZZO
+A2DE;ID;YI SYLLABLE ZZOP
+A2DF;ID;YI SYLLABLE ZZEX
+A2E0;ID;YI SYLLABLE ZZE
+A2E1;ID;YI SYLLABLE ZZEP
+A2E2;ID;YI SYLLABLE ZZUX
+A2E3;ID;YI SYLLABLE ZZU
+A2E4;ID;YI SYLLABLE ZZUP
+A2E5;ID;YI SYLLABLE ZZURX
+A2E6;ID;YI SYLLABLE ZZUR
+A2E7;ID;YI SYLLABLE ZZYT
+A2E8;ID;YI SYLLABLE ZZYX
+A2E9;ID;YI SYLLABLE ZZY
+A2EA;ID;YI SYLLABLE ZZYP
+A2EB;ID;YI SYLLABLE ZZYRX
+A2EC;ID;YI SYLLABLE ZZYR
+A2ED;ID;YI SYLLABLE NZIT
+A2EE;ID;YI SYLLABLE NZIX
+A2EF;ID;YI SYLLABLE NZI
+A2F0;ID;YI SYLLABLE NZIP
+A2F1;ID;YI SYLLABLE NZIEX
+A2F2;ID;YI SYLLABLE NZIE
+A2F3;ID;YI SYLLABLE NZIEP
+A2F4;ID;YI SYLLABLE NZAT
+A2F5;ID;YI SYLLABLE NZAX
+A2F6;ID;YI SYLLABLE NZA
+A2F7;ID;YI SYLLABLE NZAP
+A2F8;ID;YI SYLLABLE NZUOX
+A2F9;ID;YI SYLLABLE NZUO
+A2FA;ID;YI SYLLABLE NZOX
+A2FB;ID;YI SYLLABLE NZOP
+A2FC;ID;YI SYLLABLE NZEX
+A2FD;ID;YI SYLLABLE NZE
+A2FE;ID;YI SYLLABLE NZUX
+A2FF;ID;YI SYLLABLE NZU
+A300;ID;YI SYLLABLE NZUP
+A301;ID;YI SYLLABLE NZURX
+A302;ID;YI SYLLABLE NZUR
+A303;ID;YI SYLLABLE NZYT
+A304;ID;YI SYLLABLE NZYX
+A305;ID;YI SYLLABLE NZY
+A306;ID;YI SYLLABLE NZYP
+A307;ID;YI SYLLABLE NZYRX
+A308;ID;YI SYLLABLE NZYR
+A309;ID;YI SYLLABLE SIT
+A30A;ID;YI SYLLABLE SIX
+A30B;ID;YI SYLLABLE SI
+A30C;ID;YI SYLLABLE SIP
+A30D;ID;YI SYLLABLE SIEX
+A30E;ID;YI SYLLABLE SIE
+A30F;ID;YI SYLLABLE SIEP
+A310;ID;YI SYLLABLE SAT
+A311;ID;YI SYLLABLE SAX
+A312;ID;YI SYLLABLE SA
+A313;ID;YI SYLLABLE SAP
+A314;ID;YI SYLLABLE SUOX
+A315;ID;YI SYLLABLE SUO
+A316;ID;YI SYLLABLE SUOP
+A317;ID;YI SYLLABLE SOT
+A318;ID;YI SYLLABLE SOX
+A319;ID;YI SYLLABLE SO
+A31A;ID;YI SYLLABLE SOP
+A31B;ID;YI SYLLABLE SEX
+A31C;ID;YI SYLLABLE SE
+A31D;ID;YI SYLLABLE SEP
+A31E;ID;YI SYLLABLE SUT
+A31F;ID;YI SYLLABLE SUX
+A320;ID;YI SYLLABLE SU
+A321;ID;YI SYLLABLE SUP
+A322;ID;YI SYLLABLE SURX
+A323;ID;YI SYLLABLE SUR
+A324;ID;YI SYLLABLE SYT
+A325;ID;YI SYLLABLE SYX
+A326;ID;YI SYLLABLE SY
+A327;ID;YI SYLLABLE SYP
+A328;ID;YI SYLLABLE SYRX
+A329;ID;YI SYLLABLE SYR
+A32A;ID;YI SYLLABLE SSIT
+A32B;ID;YI SYLLABLE SSIX
+A32C;ID;YI SYLLABLE SSI
+A32D;ID;YI SYLLABLE SSIP
+A32E;ID;YI SYLLABLE SSIEX
+A32F;ID;YI SYLLABLE SSIE
+A330;ID;YI SYLLABLE SSIEP
+A331;ID;YI SYLLABLE SSAT
+A332;ID;YI SYLLABLE SSAX
+A333;ID;YI SYLLABLE SSA
+A334;ID;YI SYLLABLE SSAP
+A335;ID;YI SYLLABLE SSOT
+A336;ID;YI SYLLABLE SSOX
+A337;ID;YI SYLLABLE SSO
+A338;ID;YI SYLLABLE SSOP
+A339;ID;YI SYLLABLE SSEX
+A33A;ID;YI SYLLABLE SSE
+A33B;ID;YI SYLLABLE SSEP
+A33C;ID;YI SYLLABLE SSUT
+A33D;ID;YI SYLLABLE SSUX
+A33E;ID;YI SYLLABLE SSU
+A33F;ID;YI SYLLABLE SSUP
+A340;ID;YI SYLLABLE SSYT
+A341;ID;YI SYLLABLE SSYX
+A342;ID;YI SYLLABLE SSY
+A343;ID;YI SYLLABLE SSYP
+A344;ID;YI SYLLABLE SSYRX
+A345;ID;YI SYLLABLE SSYR
+A346;ID;YI SYLLABLE ZHAT
+A347;ID;YI SYLLABLE ZHAX
+A348;ID;YI SYLLABLE ZHA
+A349;ID;YI SYLLABLE ZHAP
+A34A;ID;YI SYLLABLE ZHUOX
+A34B;ID;YI SYLLABLE ZHUO
+A34C;ID;YI SYLLABLE ZHUOP
+A34D;ID;YI SYLLABLE ZHOT
+A34E;ID;YI SYLLABLE ZHOX
+A34F;ID;YI SYLLABLE ZHO
+A350;ID;YI SYLLABLE ZHOP
+A351;ID;YI SYLLABLE ZHET
+A352;ID;YI SYLLABLE ZHEX
+A353;ID;YI SYLLABLE ZHE
+A354;ID;YI SYLLABLE ZHEP
+A355;ID;YI SYLLABLE ZHUT
+A356;ID;YI SYLLABLE ZHUX
+A357;ID;YI SYLLABLE ZHU
+A358;ID;YI SYLLABLE ZHUP
+A359;ID;YI SYLLABLE ZHURX
+A35A;ID;YI SYLLABLE ZHUR
+A35B;ID;YI SYLLABLE ZHYT
+A35C;ID;YI SYLLABLE ZHYX
+A35D;ID;YI SYLLABLE ZHY
+A35E;ID;YI SYLLABLE ZHYP
+A35F;ID;YI SYLLABLE ZHYRX
+A360;ID;YI SYLLABLE ZHYR
+A361;ID;YI SYLLABLE CHAT
+A362;ID;YI SYLLABLE CHAX
+A363;ID;YI SYLLABLE CHA
+A364;ID;YI SYLLABLE CHAP
+A365;ID;YI SYLLABLE CHUOT
+A366;ID;YI SYLLABLE CHUOX
+A367;ID;YI SYLLABLE CHUO
+A368;ID;YI SYLLABLE CHUOP
+A369;ID;YI SYLLABLE CHOT
+A36A;ID;YI SYLLABLE CHOX
+A36B;ID;YI SYLLABLE CHO
+A36C;ID;YI SYLLABLE CHOP
+A36D;ID;YI SYLLABLE CHET
+A36E;ID;YI SYLLABLE CHEX
+A36F;ID;YI SYLLABLE CHE
+A370;ID;YI SYLLABLE CHEP
+A371;ID;YI SYLLABLE CHUX
+A372;ID;YI SYLLABLE CHU
+A373;ID;YI SYLLABLE CHUP
+A374;ID;YI SYLLABLE CHURX
+A375;ID;YI SYLLABLE CHUR
+A376;ID;YI SYLLABLE CHYT
+A377;ID;YI SYLLABLE CHYX
+A378;ID;YI SYLLABLE CHY
+A379;ID;YI SYLLABLE CHYP
+A37A;ID;YI SYLLABLE CHYRX
+A37B;ID;YI SYLLABLE CHYR
+A37C;ID;YI SYLLABLE RRAX
+A37D;ID;YI SYLLABLE RRA
+A37E;ID;YI SYLLABLE RRUOX
+A37F;ID;YI SYLLABLE RRUO
+A380;ID;YI SYLLABLE RROT
+A381;ID;YI SYLLABLE RROX
+A382;ID;YI SYLLABLE RRO
+A383;ID;YI SYLLABLE RROP
+A384;ID;YI SYLLABLE RRET
+A385;ID;YI SYLLABLE RREX
+A386;ID;YI SYLLABLE RRE
+A387;ID;YI SYLLABLE RREP
+A388;ID;YI SYLLABLE RRUT
+A389;ID;YI SYLLABLE RRUX
+A38A;ID;YI SYLLABLE RRU
+A38B;ID;YI SYLLABLE RRUP
+A38C;ID;YI SYLLABLE RRURX
+A38D;ID;YI SYLLABLE RRUR
+A38E;ID;YI SYLLABLE RRYT
+A38F;ID;YI SYLLABLE RRYX
+A390;ID;YI SYLLABLE RRY
+A391;ID;YI SYLLABLE RRYP
+A392;ID;YI SYLLABLE RRYRX
+A393;ID;YI SYLLABLE RRYR
+A394;ID;YI SYLLABLE NRAT
+A395;ID;YI SYLLABLE NRAX
+A396;ID;YI SYLLABLE NRA
+A397;ID;YI SYLLABLE NRAP
+A398;ID;YI SYLLABLE NROX
+A399;ID;YI SYLLABLE NRO
+A39A;ID;YI SYLLABLE NROP
+A39B;ID;YI SYLLABLE NRET
+A39C;ID;YI SYLLABLE NREX
+A39D;ID;YI SYLLABLE NRE
+A39E;ID;YI SYLLABLE NREP
+A39F;ID;YI SYLLABLE NRUT
+A3A0;ID;YI SYLLABLE NRUX
+A3A1;ID;YI SYLLABLE NRU
+A3A2;ID;YI SYLLABLE NRUP
+A3A3;ID;YI SYLLABLE NRURX
+A3A4;ID;YI SYLLABLE NRUR
+A3A5;ID;YI SYLLABLE NRYT
+A3A6;ID;YI SYLLABLE NRYX
+A3A7;ID;YI SYLLABLE NRY
+A3A8;ID;YI SYLLABLE NRYP
+A3A9;ID;YI SYLLABLE NRYRX
+A3AA;ID;YI SYLLABLE NRYR
+A3AB;ID;YI SYLLABLE SHAT
+A3AC;ID;YI SYLLABLE SHAX
+A3AD;ID;YI SYLLABLE SHA
+A3AE;ID;YI SYLLABLE SHAP
+A3AF;ID;YI SYLLABLE SHUOX
+A3B0;ID;YI SYLLABLE SHUO
+A3B1;ID;YI SYLLABLE SHUOP
+A3B2;ID;YI SYLLABLE SHOT
+A3B3;ID;YI SYLLABLE SHOX
+A3B4;ID;YI SYLLABLE SHO
+A3B5;ID;YI SYLLABLE SHOP
+A3B6;ID;YI SYLLABLE SHET
+A3B7;ID;YI SYLLABLE SHEX
+A3B8;ID;YI SYLLABLE SHE
+A3B9;ID;YI SYLLABLE SHEP
+A3BA;ID;YI SYLLABLE SHUT
+A3BB;ID;YI SYLLABLE SHUX
+A3BC;ID;YI SYLLABLE SHU
+A3BD;ID;YI SYLLABLE SHUP
+A3BE;ID;YI SYLLABLE SHURX
+A3BF;ID;YI SYLLABLE SHUR
+A3C0;ID;YI SYLLABLE SHYT
+A3C1;ID;YI SYLLABLE SHYX
+A3C2;ID;YI SYLLABLE SHY
+A3C3;ID;YI SYLLABLE SHYP
+A3C4;ID;YI SYLLABLE SHYRX
+A3C5;ID;YI SYLLABLE SHYR
+A3C6;ID;YI SYLLABLE RAT
+A3C7;ID;YI SYLLABLE RAX
+A3C8;ID;YI SYLLABLE RA
+A3C9;ID;YI SYLLABLE RAP
+A3CA;ID;YI SYLLABLE RUOX
+A3CB;ID;YI SYLLABLE RUO
+A3CC;ID;YI SYLLABLE RUOP
+A3CD;ID;YI SYLLABLE ROT
+A3CE;ID;YI SYLLABLE ROX
+A3CF;ID;YI SYLLABLE RO
+A3D0;ID;YI SYLLABLE ROP
+A3D1;ID;YI SYLLABLE REX
+A3D2;ID;YI SYLLABLE RE
+A3D3;ID;YI SYLLABLE REP
+A3D4;ID;YI SYLLABLE RUT
+A3D5;ID;YI SYLLABLE RUX
+A3D6;ID;YI SYLLABLE RU
+A3D7;ID;YI SYLLABLE RUP
+A3D8;ID;YI SYLLABLE RURX
+A3D9;ID;YI SYLLABLE RUR
+A3DA;ID;YI SYLLABLE RYT
+A3DB;ID;YI SYLLABLE RYX
+A3DC;ID;YI SYLLABLE RY
+A3DD;ID;YI SYLLABLE RYP
+A3DE;ID;YI SYLLABLE RYRX
+A3DF;ID;YI SYLLABLE RYR
+A3E0;ID;YI SYLLABLE JIT
+A3E1;ID;YI SYLLABLE JIX
+A3E2;ID;YI SYLLABLE JI
+A3E3;ID;YI SYLLABLE JIP
+A3E4;ID;YI SYLLABLE JIET
+A3E5;ID;YI SYLLABLE JIEX
+A3E6;ID;YI SYLLABLE JIE
+A3E7;ID;YI SYLLABLE JIEP
+A3E8;ID;YI SYLLABLE JUOT
+A3E9;ID;YI SYLLABLE JUOX
+A3EA;ID;YI SYLLABLE JUO
+A3EB;ID;YI SYLLABLE JUOP
+A3EC;ID;YI SYLLABLE JOT
+A3ED;ID;YI SYLLABLE JOX
+A3EE;ID;YI SYLLABLE JO
+A3EF;ID;YI SYLLABLE JOP
+A3F0;ID;YI SYLLABLE JUT
+A3F1;ID;YI SYLLABLE JUX
+A3F2;ID;YI SYLLABLE JU
+A3F3;ID;YI SYLLABLE JUP
+A3F4;ID;YI SYLLABLE JURX
+A3F5;ID;YI SYLLABLE JUR
+A3F6;ID;YI SYLLABLE JYT
+A3F7;ID;YI SYLLABLE JYX
+A3F8;ID;YI SYLLABLE JY
+A3F9;ID;YI SYLLABLE JYP
+A3FA;ID;YI SYLLABLE JYRX
+A3FB;ID;YI SYLLABLE JYR
+A3FC;ID;YI SYLLABLE QIT
+A3FD;ID;YI SYLLABLE QIX
+A3FE;ID;YI SYLLABLE QI
+A3FF;ID;YI SYLLABLE QIP
+A400;ID;YI SYLLABLE QIET
+A401;ID;YI SYLLABLE QIEX
+A402;ID;YI SYLLABLE QIE
+A403;ID;YI SYLLABLE QIEP
+A404;ID;YI SYLLABLE QUOT
+A405;ID;YI SYLLABLE QUOX
+A406;ID;YI SYLLABLE QUO
+A407;ID;YI SYLLABLE QUOP
+A408;ID;YI SYLLABLE QOT
+A409;ID;YI SYLLABLE QOX
+A40A;ID;YI SYLLABLE QO
+A40B;ID;YI SYLLABLE QOP
+A40C;ID;YI SYLLABLE QUT
+A40D;ID;YI SYLLABLE QUX
+A40E;ID;YI SYLLABLE QU
+A40F;ID;YI SYLLABLE QUP
+A410;ID;YI SYLLABLE QURX
+A411;ID;YI SYLLABLE QUR
+A412;ID;YI SYLLABLE QYT
+A413;ID;YI SYLLABLE QYX
+A414;ID;YI SYLLABLE QY
+A415;ID;YI SYLLABLE QYP
+A416;ID;YI SYLLABLE QYRX
+A417;ID;YI SYLLABLE QYR
+A418;ID;YI SYLLABLE JJIT
+A419;ID;YI SYLLABLE JJIX
+A41A;ID;YI SYLLABLE JJI
+A41B;ID;YI SYLLABLE JJIP
+A41C;ID;YI SYLLABLE JJIET
+A41D;ID;YI SYLLABLE JJIEX
+A41E;ID;YI SYLLABLE JJIE
+A41F;ID;YI SYLLABLE JJIEP
+A420;ID;YI SYLLABLE JJUOX
+A421;ID;YI SYLLABLE JJUO
+A422;ID;YI SYLLABLE JJUOP
+A423;ID;YI SYLLABLE JJOT
+A424;ID;YI SYLLABLE JJOX
+A425;ID;YI SYLLABLE JJO
+A426;ID;YI SYLLABLE JJOP
+A427;ID;YI SYLLABLE JJUT
+A428;ID;YI SYLLABLE JJUX
+A429;ID;YI SYLLABLE JJU
+A42A;ID;YI SYLLABLE JJUP
+A42B;ID;YI SYLLABLE JJURX
+A42C;ID;YI SYLLABLE JJUR
+A42D;ID;YI SYLLABLE JJYT
+A42E;ID;YI SYLLABLE JJYX
+A42F;ID;YI SYLLABLE JJY
+A430;ID;YI SYLLABLE JJYP
+A431;ID;YI SYLLABLE NJIT
+A432;ID;YI SYLLABLE NJIX
+A433;ID;YI SYLLABLE NJI
+A434;ID;YI SYLLABLE NJIP
+A435;ID;YI SYLLABLE NJIET
+A436;ID;YI SYLLABLE NJIEX
+A437;ID;YI SYLLABLE NJIE
+A438;ID;YI SYLLABLE NJIEP
+A439;ID;YI SYLLABLE NJUOX
+A43A;ID;YI SYLLABLE NJUO
+A43B;ID;YI SYLLABLE NJOT
+A43C;ID;YI SYLLABLE NJOX
+A43D;ID;YI SYLLABLE NJO
+A43E;ID;YI SYLLABLE NJOP
+A43F;ID;YI SYLLABLE NJUX
+A440;ID;YI SYLLABLE NJU
+A441;ID;YI SYLLABLE NJUP
+A442;ID;YI SYLLABLE NJURX
+A443;ID;YI SYLLABLE NJUR
+A444;ID;YI SYLLABLE NJYT
+A445;ID;YI SYLLABLE NJYX
+A446;ID;YI SYLLABLE NJY
+A447;ID;YI SYLLABLE NJYP
+A448;ID;YI SYLLABLE NJYRX
+A449;ID;YI SYLLABLE NJYR
+A44A;ID;YI SYLLABLE NYIT
+A44B;ID;YI SYLLABLE NYIX
+A44C;ID;YI SYLLABLE NYI
+A44D;ID;YI SYLLABLE NYIP
+A44E;ID;YI SYLLABLE NYIET
+A44F;ID;YI SYLLABLE NYIEX
+A450;ID;YI SYLLABLE NYIE
+A451;ID;YI SYLLABLE NYIEP
+A452;ID;YI SYLLABLE NYUOX
+A453;ID;YI SYLLABLE NYUO
+A454;ID;YI SYLLABLE NYUOP
+A455;ID;YI SYLLABLE NYOT
+A456;ID;YI SYLLABLE NYOX
+A457;ID;YI SYLLABLE NYO
+A458;ID;YI SYLLABLE NYOP
+A459;ID;YI SYLLABLE NYUT
+A45A;ID;YI SYLLABLE NYUX
+A45B;ID;YI SYLLABLE NYU
+A45C;ID;YI SYLLABLE NYUP
+A45D;ID;YI SYLLABLE XIT
+A45E;ID;YI SYLLABLE XIX
+A45F;ID;YI SYLLABLE XI
+A460;ID;YI SYLLABLE XIP
+A461;ID;YI SYLLABLE XIET
+A462;ID;YI SYLLABLE XIEX
+A463;ID;YI SYLLABLE XIE
+A464;ID;YI SYLLABLE XIEP
+A465;ID;YI SYLLABLE XUOX
+A466;ID;YI SYLLABLE XUO
+A467;ID;YI SYLLABLE XOT
+A468;ID;YI SYLLABLE XOX
+A469;ID;YI SYLLABLE XO
+A46A;ID;YI SYLLABLE XOP
+A46B;ID;YI SYLLABLE XYT
+A46C;ID;YI SYLLABLE XYX
+A46D;ID;YI SYLLABLE XY
+A46E;ID;YI SYLLABLE XYP
+A46F;ID;YI SYLLABLE XYRX
+A470;ID;YI SYLLABLE XYR
+A471;ID;YI SYLLABLE YIT
+A472;ID;YI SYLLABLE YIX
+A473;ID;YI SYLLABLE YI
+A474;ID;YI SYLLABLE YIP
+A475;ID;YI SYLLABLE YIET
+A476;ID;YI SYLLABLE YIEX
+A477;ID;YI SYLLABLE YIE
+A478;ID;YI SYLLABLE YIEP
+A479;ID;YI SYLLABLE YUOT
+A47A;ID;YI SYLLABLE YUOX
+A47B;ID;YI SYLLABLE YUO
+A47C;ID;YI SYLLABLE YUOP
+A47D;ID;YI SYLLABLE YOT
+A47E;ID;YI SYLLABLE YOX
+A47F;ID;YI SYLLABLE YO
+A480;ID;YI SYLLABLE YOP
+A481;ID;YI SYLLABLE YUT
+A482;ID;YI SYLLABLE YUX
+A483;ID;YI SYLLABLE YU
+A484;ID;YI SYLLABLE YUP
+A485;ID;YI SYLLABLE YURX
+A486;ID;YI SYLLABLE YUR
+A487;ID;YI SYLLABLE YYT
+A488;ID;YI SYLLABLE YYX
+A489;ID;YI SYLLABLE YY
+A48A;ID;YI SYLLABLE YYP
+A48B;ID;YI SYLLABLE YYRX
+A48C;ID;YI SYLLABLE YYR
+A490;ID;YI RADICAL QOT
+A491;ID;YI RADICAL LI
+A492;ID;YI RADICAL KIT
+A493;ID;YI RADICAL NYIP
+A494;ID;YI RADICAL CYP
+A495;ID;YI RADICAL SSI
+A496;ID;YI RADICAL GGOP
+A497;ID;YI RADICAL GEP
+A498;ID;YI RADICAL MI
+A499;ID;YI RADICAL HXIT
+A49A;ID;YI RADICAL LYR
+A49B;ID;YI RADICAL BBUT
+A49C;ID;YI RADICAL MOP
+A49D;ID;YI RADICAL YO
+A49E;ID;YI RADICAL PUT
+A49F;ID;YI RADICAL HXUO
+A4A0;ID;YI RADICAL TAT
+A4A1;ID;YI RADICAL GA
+A4A4;ID;YI RADICAL DDUR
+A4A5;ID;YI RADICAL BUR
+A4A6;ID;YI RADICAL GGUO
+A4A7;ID;YI RADICAL NYOP
+A4A8;ID;YI RADICAL TU
+A4A9;ID;YI RADICAL OP
+A4AA;ID;YI RADICAL JJUT
+A4AB;ID;YI RADICAL ZOT
+A4AC;ID;YI RADICAL PYT
+A4AD;ID;YI RADICAL HMO
+A4AE;ID;YI RADICAL YIT
+A4AF;ID;YI RADICAL VUR
+A4B0;ID;YI RADICAL SHY
+A4B1;ID;YI RADICAL VEP
+A4B2;ID;YI RADICAL ZA
+A4B3;ID;YI RADICAL JO
+A4B5;ID;YI RADICAL JJY
+A4B6;ID;YI RADICAL GOT
+A4B7;ID;YI RADICAL JJIE
+A4B8;ID;YI RADICAL WO
+A4B9;ID;YI RADICAL DU
+A4BA;ID;YI RADICAL SHUR
+A4BB;ID;YI RADICAL LIE
+A4BC;ID;YI RADICAL CY
+A4BD;ID;YI RADICAL CUOP
+A4BE;ID;YI RADICAL CIP
+A4BF;ID;YI RADICAL HXOP
+A4C0;ID;YI RADICAL SHAT
+A4C2;ID;YI RADICAL SHOP
+A4C3;ID;YI RADICAL CHE
+A4C4;ID;YI RADICAL ZZIET
+A4C6;ID;YI RADICAL KE
+AC00;ID;<Hangul Syllable, First>
+D7A3;ID;<Hangul Syllable, Last>
+D800;SG;<Non Private Use High Surrogate, First>
+DB7F;SG;<Non Private Use High Surrogate, Last>
+DB80;SG;<Private Use High Surrogate, First>
+DBFF;SG;<Private Use High Surrogate, Last>
+DC00;SG;<Low Surrogate, First>
+DFFF;SG;<Low Surrogate, Last>
+E000;AI;<Private Use, First>
+F8FF;AI;<Private Use, Last>
+F900;ID;CJK COMPATIBILITY IDEOGRAPH-F900
+F901;ID;CJK COMPATIBILITY IDEOGRAPH-F901
+F902;ID;CJK COMPATIBILITY IDEOGRAPH-F902
+F903;ID;CJK COMPATIBILITY IDEOGRAPH-F903
+F904;ID;CJK COMPATIBILITY IDEOGRAPH-F904
+F905;ID;CJK COMPATIBILITY IDEOGRAPH-F905
+F906;ID;CJK COMPATIBILITY IDEOGRAPH-F906
+F907;ID;CJK COMPATIBILITY IDEOGRAPH-F907
+F908;ID;CJK COMPATIBILITY IDEOGRAPH-F908
+F909;ID;CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;ID;CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;ID;CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;ID;CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;ID;CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;ID;CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;ID;CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;ID;CJK COMPATIBILITY IDEOGRAPH-F910
+F911;ID;CJK COMPATIBILITY IDEOGRAPH-F911
+F912;ID;CJK COMPATIBILITY IDEOGRAPH-F912
+F913;ID;CJK COMPATIBILITY IDEOGRAPH-F913
+F914;ID;CJK COMPATIBILITY IDEOGRAPH-F914
+F915;ID;CJK COMPATIBILITY IDEOGRAPH-F915
+F916;ID;CJK COMPATIBILITY IDEOGRAPH-F916
+F917;ID;CJK COMPATIBILITY IDEOGRAPH-F917
+F918;ID;CJK COMPATIBILITY IDEOGRAPH-F918
+F919;ID;CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;ID;CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;ID;CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;ID;CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;ID;CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;ID;CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;ID;CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;ID;CJK COMPATIBILITY IDEOGRAPH-F920
+F921;ID;CJK COMPATIBILITY IDEOGRAPH-F921
+F922;ID;CJK COMPATIBILITY IDEOGRAPH-F922
+F923;ID;CJK COMPATIBILITY IDEOGRAPH-F923
+F924;ID;CJK COMPATIBILITY IDEOGRAPH-F924
+F925;ID;CJK COMPATIBILITY IDEOGRAPH-F925
+F926;ID;CJK COMPATIBILITY IDEOGRAPH-F926
+F927;ID;CJK COMPATIBILITY IDEOGRAPH-F927
+F928;ID;CJK COMPATIBILITY IDEOGRAPH-F928
+F929;ID;CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;ID;CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;ID;CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;ID;CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;ID;CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;ID;CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;ID;CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;ID;CJK COMPATIBILITY IDEOGRAPH-F930
+F931;ID;CJK COMPATIBILITY IDEOGRAPH-F931
+F932;ID;CJK COMPATIBILITY IDEOGRAPH-F932
+F933;ID;CJK COMPATIBILITY IDEOGRAPH-F933
+F934;ID;CJK COMPATIBILITY IDEOGRAPH-F934
+F935;ID;CJK COMPATIBILITY IDEOGRAPH-F935
+F936;ID;CJK COMPATIBILITY IDEOGRAPH-F936
+F937;ID;CJK COMPATIBILITY IDEOGRAPH-F937
+F938;ID;CJK COMPATIBILITY IDEOGRAPH-F938
+F939;ID;CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;ID;CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;ID;CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;ID;CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;ID;CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;ID;CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;ID;CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;ID;CJK COMPATIBILITY IDEOGRAPH-F940
+F941;ID;CJK COMPATIBILITY IDEOGRAPH-F941
+F942;ID;CJK COMPATIBILITY IDEOGRAPH-F942
+F943;ID;CJK COMPATIBILITY IDEOGRAPH-F943
+F944;ID;CJK COMPATIBILITY IDEOGRAPH-F944
+F945;ID;CJK COMPATIBILITY IDEOGRAPH-F945
+F946;ID;CJK COMPATIBILITY IDEOGRAPH-F946
+F947;ID;CJK COMPATIBILITY IDEOGRAPH-F947
+F948;ID;CJK COMPATIBILITY IDEOGRAPH-F948
+F949;ID;CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;ID;CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;ID;CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;ID;CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;ID;CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;ID;CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;ID;CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;ID;CJK COMPATIBILITY IDEOGRAPH-F950
+F951;ID;CJK COMPATIBILITY IDEOGRAPH-F951
+F952;ID;CJK COMPATIBILITY IDEOGRAPH-F952
+F953;ID;CJK COMPATIBILITY IDEOGRAPH-F953
+F954;ID;CJK COMPATIBILITY IDEOGRAPH-F954
+F955;ID;CJK COMPATIBILITY IDEOGRAPH-F955
+F956;ID;CJK COMPATIBILITY IDEOGRAPH-F956
+F957;ID;CJK COMPATIBILITY IDEOGRAPH-F957
+F958;ID;CJK COMPATIBILITY IDEOGRAPH-F958
+F959;ID;CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;ID;CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;ID;CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;ID;CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;ID;CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;ID;CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;ID;CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;ID;CJK COMPATIBILITY IDEOGRAPH-F960
+F961;ID;CJK COMPATIBILITY IDEOGRAPH-F961
+F962;ID;CJK COMPATIBILITY IDEOGRAPH-F962
+F963;ID;CJK COMPATIBILITY IDEOGRAPH-F963
+F964;ID;CJK COMPATIBILITY IDEOGRAPH-F964
+F965;ID;CJK COMPATIBILITY IDEOGRAPH-F965
+F966;ID;CJK COMPATIBILITY IDEOGRAPH-F966
+F967;ID;CJK COMPATIBILITY IDEOGRAPH-F967
+F968;ID;CJK COMPATIBILITY IDEOGRAPH-F968
+F969;ID;CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;ID;CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;ID;CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;ID;CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;ID;CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;ID;CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;ID;CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;ID;CJK COMPATIBILITY IDEOGRAPH-F970
+F971;ID;CJK COMPATIBILITY IDEOGRAPH-F971
+F972;ID;CJK COMPATIBILITY IDEOGRAPH-F972
+F973;ID;CJK COMPATIBILITY IDEOGRAPH-F973
+F974;ID;CJK COMPATIBILITY IDEOGRAPH-F974
+F975;ID;CJK COMPATIBILITY IDEOGRAPH-F975
+F976;ID;CJK COMPATIBILITY IDEOGRAPH-F976
+F977;ID;CJK COMPATIBILITY IDEOGRAPH-F977
+F978;ID;CJK COMPATIBILITY IDEOGRAPH-F978
+F979;ID;CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;ID;CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;ID;CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;ID;CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;ID;CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;ID;CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;ID;CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;ID;CJK COMPATIBILITY IDEOGRAPH-F980
+F981;ID;CJK COMPATIBILITY IDEOGRAPH-F981
+F982;ID;CJK COMPATIBILITY IDEOGRAPH-F982
+F983;ID;CJK COMPATIBILITY IDEOGRAPH-F983
+F984;ID;CJK COMPATIBILITY IDEOGRAPH-F984
+F985;ID;CJK COMPATIBILITY IDEOGRAPH-F985
+F986;ID;CJK COMPATIBILITY IDEOGRAPH-F986
+F987;ID;CJK COMPATIBILITY IDEOGRAPH-F987
+F988;ID;CJK COMPATIBILITY IDEOGRAPH-F988
+F989;ID;CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;ID;CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;ID;CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;ID;CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;ID;CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;ID;CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;ID;CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;ID;CJK COMPATIBILITY IDEOGRAPH-F990
+F991;ID;CJK COMPATIBILITY IDEOGRAPH-F991
+F992;ID;CJK COMPATIBILITY IDEOGRAPH-F992
+F993;ID;CJK COMPATIBILITY IDEOGRAPH-F993
+F994;ID;CJK COMPATIBILITY IDEOGRAPH-F994
+F995;ID;CJK COMPATIBILITY IDEOGRAPH-F995
+F996;ID;CJK COMPATIBILITY IDEOGRAPH-F996
+F997;ID;CJK COMPATIBILITY IDEOGRAPH-F997
+F998;ID;CJK COMPATIBILITY IDEOGRAPH-F998
+F999;ID;CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;ID;CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;ID;CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;ID;CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;ID;CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;ID;CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;ID;CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;ID;CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;ID;CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;ID;CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;ID;CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;ID;CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;ID;CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;ID;CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;ID;CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;ID;CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;ID;CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;ID;CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;ID;CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;ID;CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;ID;CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;ID;CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;ID;CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;ID;CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;ID;CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;ID;CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;ID;CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;ID;CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;ID;CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;ID;CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;ID;CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;ID;CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;ID;CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;ID;CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;ID;CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;ID;CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;ID;CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;ID;CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;ID;CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;ID;CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;ID;CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;ID;CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;ID;CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;ID;CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;ID;CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;ID;CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;ID;CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;ID;CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;ID;CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;ID;CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;ID;CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;ID;CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;ID;CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;ID;CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;ID;CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;ID;CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;ID;CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;ID;CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;ID;CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;ID;CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;ID;CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;ID;CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;ID;CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;ID;CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;ID;CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;ID;CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;ID;CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;ID;CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;ID;CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;ID;CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;ID;CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;ID;CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;ID;CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;ID;CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;ID;CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;ID;CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;ID;CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;ID;CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;ID;CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;ID;CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;ID;CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;ID;CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;ID;CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;ID;CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;ID;CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;ID;CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;ID;CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;ID;CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;ID;CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;ID;CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;ID;CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;ID;CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;ID;CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;ID;CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;ID;CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;ID;CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;ID;CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;ID;CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;ID;CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;ID;CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;ID;CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;ID;CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;ID;CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;ID;CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;ID;CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;ID;CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;ID;CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;ID;CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;ID;CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;ID;CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;ID;CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;ID;CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;ID;CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;ID;CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;ID;CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;ID;CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;ID;CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA0E;ID;CJK COMPATIBILITY IDEOGRAPH-FA0E
+FA0F;ID;CJK COMPATIBILITY IDEOGRAPH-FA0F
+FA10;ID;CJK COMPATIBILITY IDEOGRAPH-FA10
+FA11;ID;CJK COMPATIBILITY IDEOGRAPH-FA11
+FA12;ID;CJK COMPATIBILITY IDEOGRAPH-FA12
+FA13;ID;CJK COMPATIBILITY IDEOGRAPH-FA13
+FA14;ID;CJK COMPATIBILITY IDEOGRAPH-FA14
+FA15;ID;CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;ID;CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;ID;CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;ID;CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;ID;CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;ID;CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;ID;CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;ID;CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;ID;CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;ID;CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA1F;ID;CJK COMPATIBILITY IDEOGRAPH-FA1F
+FA20;ID;CJK COMPATIBILITY IDEOGRAPH-FA20
+FA21;ID;CJK COMPATIBILITY IDEOGRAPH-FA21
+FA22;ID;CJK COMPATIBILITY IDEOGRAPH-FA22
+FA23;ID;CJK COMPATIBILITY IDEOGRAPH-FA23
+FA24;ID;CJK COMPATIBILITY IDEOGRAPH-FA24
+FA25;ID;CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;ID;CJK COMPATIBILITY IDEOGRAPH-FA26
+FA27;ID;CJK COMPATIBILITY IDEOGRAPH-FA27
+FA28;ID;CJK COMPATIBILITY IDEOGRAPH-FA28
+FA29;ID;CJK COMPATIBILITY IDEOGRAPH-FA29
+FA2A;ID;CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;ID;CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;ID;CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;ID;CJK COMPATIBILITY IDEOGRAPH-FA2D
+FB00;AL;LATIN SMALL LIGATURE FF
+FB01;AL;LATIN SMALL LIGATURE FI
+FB02;AL;LATIN SMALL LIGATURE FL
+FB03;AL;LATIN SMALL LIGATURE FFI
+FB04;AL;LATIN SMALL LIGATURE FFL
+FB05;AL;LATIN SMALL LIGATURE LONG S T
+FB06;AL;LATIN SMALL LIGATURE ST
+FB13;AL;ARMENIAN SMALL LIGATURE MEN NOW
+FB14;AL;ARMENIAN SMALL LIGATURE MEN ECH
+FB15;AL;ARMENIAN SMALL LIGATURE MEN INI
+FB16;AL;ARMENIAN SMALL LIGATURE VEW NOW
+FB17;AL;ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;AL;HEBREW LETTER YOD WITH HIRIQ
+FB1E;CM;HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F;AL;HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;AL;HEBREW LETTER ALTERNATIVE AYIN
+FB21;AL;HEBREW LETTER WIDE ALEF
+FB22;AL;HEBREW LETTER WIDE DALET
+FB23;AL;HEBREW LETTER WIDE HE
+FB24;AL;HEBREW LETTER WIDE KAF
+FB25;AL;HEBREW LETTER WIDE LAMED
+FB26;AL;HEBREW LETTER WIDE FINAL MEM
+FB27;AL;HEBREW LETTER WIDE RESH
+FB28;AL;HEBREW LETTER WIDE TAV
+FB29;AL;HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;AL;HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;AL;HEBREW LETTER SHIN WITH SIN DOT
+FB2C;AL;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;AL;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;AL;HEBREW LETTER ALEF WITH PATAH
+FB2F;AL;HEBREW LETTER ALEF WITH QAMATS
+FB30;AL;HEBREW LETTER ALEF WITH MAPIQ
+FB31;AL;HEBREW LETTER BET WITH DAGESH
+FB32;AL;HEBREW LETTER GIMEL WITH DAGESH
+FB33;AL;HEBREW LETTER DALET WITH DAGESH
+FB34;AL;HEBREW LETTER HE WITH MAPIQ
+FB35;AL;HEBREW LETTER VAV WITH DAGESH
+FB36;AL;HEBREW LETTER ZAYIN WITH DAGESH
+FB38;AL;HEBREW LETTER TET WITH DAGESH
+FB39;AL;HEBREW LETTER YOD WITH DAGESH
+FB3A;AL;HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;AL;HEBREW LETTER KAF WITH DAGESH
+FB3C;AL;HEBREW LETTER LAMED WITH DAGESH
+FB3E;AL;HEBREW LETTER MEM WITH DAGESH
+FB40;AL;HEBREW LETTER NUN WITH DAGESH
+FB41;AL;HEBREW LETTER SAMEKH WITH DAGESH
+FB43;AL;HEBREW LETTER FINAL PE WITH DAGESH
+FB44;AL;HEBREW LETTER PE WITH DAGESH
+FB46;AL;HEBREW LETTER TSADI WITH DAGESH
+FB47;AL;HEBREW LETTER QOF WITH DAGESH
+FB48;AL;HEBREW LETTER RESH WITH DAGESH
+FB49;AL;HEBREW LETTER SHIN WITH DAGESH
+FB4A;AL;HEBREW LETTER TAV WITH DAGESH
+FB4B;AL;HEBREW LETTER VAV WITH HOLAM
+FB4C;AL;HEBREW LETTER BET WITH RAFE
+FB4D;AL;HEBREW LETTER KAF WITH RAFE
+FB4E;AL;HEBREW LETTER PE WITH RAFE
+FB4F;AL;HEBREW LIGATURE ALEF LAMED
+FB50;AL;ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;AL;ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;AL;ARABIC LETTER BEEH ISOLATED FORM
+FB53;AL;ARABIC LETTER BEEH FINAL FORM
+FB54;AL;ARABIC LETTER BEEH INITIAL FORM
+FB55;AL;ARABIC LETTER BEEH MEDIAL FORM
+FB56;AL;ARABIC LETTER PEH ISOLATED FORM
+FB57;AL;ARABIC LETTER PEH FINAL FORM
+FB58;AL;ARABIC LETTER PEH INITIAL FORM
+FB59;AL;ARABIC LETTER PEH MEDIAL FORM
+FB5A;AL;ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;AL;ARABIC LETTER BEHEH FINAL FORM
+FB5C;AL;ARABIC LETTER BEHEH INITIAL FORM
+FB5D;AL;ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;AL;ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;AL;ARABIC LETTER TTEHEH FINAL FORM
+FB60;AL;ARABIC LETTER TTEHEH INITIAL FORM
+FB61;AL;ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;AL;ARABIC LETTER TEHEH ISOLATED FORM
+FB63;AL;ARABIC LETTER TEHEH FINAL FORM
+FB64;AL;ARABIC LETTER TEHEH INITIAL FORM
+FB65;AL;ARABIC LETTER TEHEH MEDIAL FORM
+FB66;AL;ARABIC LETTER TTEH ISOLATED FORM
+FB67;AL;ARABIC LETTER TTEH FINAL FORM
+FB68;AL;ARABIC LETTER TTEH INITIAL FORM
+FB69;AL;ARABIC LETTER TTEH MEDIAL FORM
+FB6A;AL;ARABIC LETTER VEH ISOLATED FORM
+FB6B;AL;ARABIC LETTER VEH FINAL FORM
+FB6C;AL;ARABIC LETTER VEH INITIAL FORM
+FB6D;AL;ARABIC LETTER VEH MEDIAL FORM
+FB6E;AL;ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;AL;ARABIC LETTER PEHEH FINAL FORM
+FB70;AL;ARABIC LETTER PEHEH INITIAL FORM
+FB71;AL;ARABIC LETTER PEHEH MEDIAL FORM
+FB72;AL;ARABIC LETTER DYEH ISOLATED FORM
+FB73;AL;ARABIC LETTER DYEH FINAL FORM
+FB74;AL;ARABIC LETTER DYEH INITIAL FORM
+FB75;AL;ARABIC LETTER DYEH MEDIAL FORM
+FB76;AL;ARABIC LETTER NYEH ISOLATED FORM
+FB77;AL;ARABIC LETTER NYEH FINAL FORM
+FB78;AL;ARABIC LETTER NYEH INITIAL FORM
+FB79;AL;ARABIC LETTER NYEH MEDIAL FORM
+FB7A;AL;ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;AL;ARABIC LETTER TCHEH FINAL FORM
+FB7C;AL;ARABIC LETTER TCHEH INITIAL FORM
+FB7D;AL;ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;AL;ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;AL;ARABIC LETTER TCHEHEH FINAL FORM
+FB80;AL;ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;AL;ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;AL;ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;AL;ARABIC LETTER DDAHAL FINAL FORM
+FB84;AL;ARABIC LETTER DAHAL ISOLATED FORM
+FB85;AL;ARABIC LETTER DAHAL FINAL FORM
+FB86;AL;ARABIC LETTER DUL ISOLATED FORM
+FB87;AL;ARABIC LETTER DUL FINAL FORM
+FB88;AL;ARABIC LETTER DDAL ISOLATED FORM
+FB89;AL;ARABIC LETTER DDAL FINAL FORM
+FB8A;AL;ARABIC LETTER JEH ISOLATED FORM
+FB8B;AL;ARABIC LETTER JEH FINAL FORM
+FB8C;AL;ARABIC LETTER RREH ISOLATED FORM
+FB8D;AL;ARABIC LETTER RREH FINAL FORM
+FB8E;AL;ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;AL;ARABIC LETTER KEHEH FINAL FORM
+FB90;AL;ARABIC LETTER KEHEH INITIAL FORM
+FB91;AL;ARABIC LETTER KEHEH MEDIAL FORM
+FB92;AL;ARABIC LETTER GAF ISOLATED FORM
+FB93;AL;ARABIC LETTER GAF FINAL FORM
+FB94;AL;ARABIC LETTER GAF INITIAL FORM
+FB95;AL;ARABIC LETTER GAF MEDIAL FORM
+FB96;AL;ARABIC LETTER GUEH ISOLATED FORM
+FB97;AL;ARABIC LETTER GUEH FINAL FORM
+FB98;AL;ARABIC LETTER GUEH INITIAL FORM
+FB99;AL;ARABIC LETTER GUEH MEDIAL FORM
+FB9A;AL;ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;AL;ARABIC LETTER NGOEH FINAL FORM
+FB9C;AL;ARABIC LETTER NGOEH INITIAL FORM
+FB9D;AL;ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;AL;ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;AL;ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;AL;ARABIC LETTER RNOON ISOLATED FORM
+FBA1;AL;ARABIC LETTER RNOON FINAL FORM
+FBA2;AL;ARABIC LETTER RNOON INITIAL FORM
+FBA3;AL;ARABIC LETTER RNOON MEDIAL FORM
+FBA4;AL;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;AL;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;AL;ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;AL;ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;AL;ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;AL;ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;AL;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;AL;ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;AL;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;AL;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;AL;ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;AL;ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;AL;ARABIC LETTER NG ISOLATED FORM
+FBD4;AL;ARABIC LETTER NG FINAL FORM
+FBD5;AL;ARABIC LETTER NG INITIAL FORM
+FBD6;AL;ARABIC LETTER NG MEDIAL FORM
+FBD7;AL;ARABIC LETTER U ISOLATED FORM
+FBD8;AL;ARABIC LETTER U FINAL FORM
+FBD9;AL;ARABIC LETTER OE ISOLATED FORM
+FBDA;AL;ARABIC LETTER OE FINAL FORM
+FBDB;AL;ARABIC LETTER YU ISOLATED FORM
+FBDC;AL;ARABIC LETTER YU FINAL FORM
+FBDD;AL;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;AL;ARABIC LETTER VE ISOLATED FORM
+FBDF;AL;ARABIC LETTER VE FINAL FORM
+FBE0;AL;ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;AL;ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;AL;ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;AL;ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;AL;ARABIC LETTER E ISOLATED FORM
+FBE5;AL;ARABIC LETTER E FINAL FORM
+FBE6;AL;ARABIC LETTER E INITIAL FORM
+FBE7;AL;ARABIC LETTER E MEDIAL FORM
+FBE8;AL;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;AL;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;AL;ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;AL;ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;AL;ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;AL;ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;AL;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;AL;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;AL;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;AL;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;AL;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;AL;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;AL;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;AL;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;AL;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;AL;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;AL;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;AL;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;AL;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;AL;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;AL;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;AL;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;AL;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;AL;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;AL;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;AL;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;AL;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;AL;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;AL;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;AL;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;AL;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;AL;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;AL;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;AL;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;AL;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;AL;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;AL;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;AL;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;AL;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;AL;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;AL;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;AL;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;AL;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;AL;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;AL;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;AL;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;AL;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;AL;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;AL;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;AL;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;AL;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;AL;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;AL;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;AL;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;AL;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;AL;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;AL;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;AL;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;AL;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;AL;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;AL;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;AL;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;AL;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;AL;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;AL;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;AL;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;AL;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;AL;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;AL;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;AL;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;AL;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;AL;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;AL;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;AL;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;AL;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;AL;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;AL;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;AL;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;AL;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;AL;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;AL;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;AL;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;AL;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;AL;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;AL;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;AL;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;AL;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;AL;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;AL;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;AL;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;AL;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;AL;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;AL;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;AL;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;AL;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;AL;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;AL;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;AL;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;AL;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;AL;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;AL;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;AL;ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;AL;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;AL;ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;AL;ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;AL;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;AL;ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;AL;ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;AL;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;AL;ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;AL;ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;AL;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;AL;ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;AL;ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;AL;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;AL;ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;AL;ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;AL;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;AL;ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;AL;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;AL;ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;AL;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;AL;ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;AL;ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;AL;ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;AL;ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;AL;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;AL;ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;AL;ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;AL;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;AL;ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;AL;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;AL;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;AL;ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;AL;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;AL;ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;AL;ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;AL;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;AL;ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;AL;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;AL;ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;AL;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;AL;ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;AL;ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;AL;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;AL;ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;AL;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;AL;ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;AL;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;AL;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;AL;ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;AL;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;AL;ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;AL;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;AL;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;AL;ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;AL;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;AL;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;AL;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;AL;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;AL;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;AL;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;AL;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;AL;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;AL;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;AL;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;AL;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;AL;ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;AL;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;AL;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;AL;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;AL;ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;AL;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;AL;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;AL;ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;AL;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;AL;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;AL;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;AL;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;AL;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;AL;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;AL;ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;AL;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;AL;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;AL;ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;AL;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;AL;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;AL;ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;AL;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;AL;ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;AL;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;AL;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;AL;ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;AL;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;AL;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;AL;ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;AL;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;AL;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;AL;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;AL;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;AL;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;AL;ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;AL;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;AL;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;AL;ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;AL;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;AL;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;AL;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;AL;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;AL;ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;AL;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;AL;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;AL;ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;AL;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;AL;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;AL;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;AL;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;AL;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;AL;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;AL;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;AL;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;AL;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;AL;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;AL;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;AL;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;AL;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;AL;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;AL;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;AL;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;AL;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;AL;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;AL;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;AL;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;AL;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;AL;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;AL;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;AL;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;AL;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;AL;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;AL;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;AL;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;AL;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;AL;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;AL;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;AL;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;AL;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;AL;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;AL;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;AL;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;AL;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;AL;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;AL;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;AL;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;AL;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;AL;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;AL;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;AL;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;AL;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;AL;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;AL;ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;AL;ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;AL;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;AL;ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;AL;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;AL;ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;AL;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;AL;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;AL;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;AL;ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;AL;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;AL;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;AL;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;AL;ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;AL;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;AL;ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;AL;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;AL;ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;AL;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;AL;ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;AL;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;AL;ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;AL;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;AL;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;AL;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;AL;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;AL;ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;AL;ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;AL;ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;AL;ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;AL;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;AL;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;AL;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;AL;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;AL;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;AL;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;AL;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;AL;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;AL;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;AL;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;AL;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;AL;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;AL;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;AL;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;AL;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;AL;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;AL;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD3E;OP;ORNATE LEFT PARENTHESIS
+FD3F;CL;ORNATE RIGHT PARENTHESIS
+FD50;AL;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;AL;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;AL;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;AL;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;AL;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;AL;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;AL;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;AL;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;AL;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;AL;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;AL;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;AL;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;AL;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;AL;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;AL;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;AL;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;AL;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;AL;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;AL;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;AL;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;AL;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;AL;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;AL;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;AL;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;AL;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;AL;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;AL;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;AL;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;AL;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;AL;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;AL;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;AL;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;AL;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;AL;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;AL;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;AL;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;AL;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;AL;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;AL;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;AL;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;AL;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;AL;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;AL;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;AL;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;AL;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;AL;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;AL;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;AL;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;AL;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;AL;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;AL;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;AL;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;AL;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;AL;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;AL;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;AL;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;AL;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;AL;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;AL;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;AL;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;AL;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;AL;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;AL;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;AL;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;AL;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;AL;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;AL;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;AL;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;AL;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;AL;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;AL;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;AL;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;AL;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;AL;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;AL;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;AL;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;AL;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;AL;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;AL;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;AL;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;AL;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;AL;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;AL;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;AL;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;AL;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;AL;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;AL;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;AL;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;AL;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;AL;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;AL;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;AL;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;AL;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;AL;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;AL;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;AL;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;AL;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;AL;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;AL;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;AL;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;AL;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;AL;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;AL;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;AL;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;AL;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;AL;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;AL;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;AL;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;AL;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;AL;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;AL;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;AL;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;AL;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;AL;ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;AL;ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;AL;ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;AL;ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;AL;ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;AL;ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;AL;ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;AL;ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;AL;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;AL;ARABIC LIGATURE JALLAJALALOUHOU
+FE20;CM;COMBINING LIGATURE LEFT HALF
+FE21;CM;COMBINING LIGATURE RIGHT HALF
+FE22;CM;COMBINING DOUBLE TILDE LEFT HALF
+FE23;CM;COMBINING DOUBLE TILDE RIGHT HALF
+FE30;ID;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;ID;PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;ID;PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;ID;PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;ID;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;OP;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;CL;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;OP;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;CL;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;OP;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;CL;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;OP;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;CL;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;OP;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;CL;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;OP;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;CL;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;OP;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;CL;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;OP;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;CL;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE49;ID;DASHED OVERLINE
+FE4A;ID;CENTRELINE OVERLINE
+FE4B;ID;WAVY OVERLINE
+FE4C;ID;DOUBLE WAVY OVERLINE
+FE4D;ID;DASHED LOW LINE
+FE4E;ID;CENTRELINE LOW LINE
+FE4F;ID;WAVY LOW LINE
+FE50;CL;SMALL COMMA
+FE51;ID;SMALL IDEOGRAPHIC COMMA
+FE52;CL;SMALL FULL STOP
+FE54;NS;SMALL SEMICOLON
+FE55;NS;SMALL COLON
+FE56;EX;SMALL QUESTION MARK
+FE57;EX;SMALL EXCLAMATION MARK
+FE58;ID;SMALL EM DASH
+FE59;OP;SMALL LEFT PARENTHESIS
+FE5A;CL;SMALL RIGHT PARENTHESIS
+FE5B;OP;SMALL LEFT CURLY BRACKET
+FE5C;CL;SMALL RIGHT CURLY BRACKET
+FE5D;OP;SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;CL;SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;ID;SMALL NUMBER SIGN
+FE60;ID;SMALL AMPERSAND
+FE61;ID;SMALL ASTERISK
+FE62;ID;SMALL PLUS SIGN
+FE63;ID;SMALL HYPHEN-MINUS
+FE64;ID;SMALL LESS-THAN SIGN
+FE65;ID;SMALL GREATER-THAN SIGN
+FE66;ID;SMALL EQUALS SIGN
+FE68;ID;SMALL REVERSE SOLIDUS
+FE69;PR;SMALL DOLLAR SIGN
+FE6A;PO;SMALL PERCENT SIGN
+FE6B;AL;SMALL COMMERCIAL AT
+FE70;AL;ARABIC FATHATAN ISOLATED FORM
+FE71;AL;ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;AL;ARABIC DAMMATAN ISOLATED FORM
+FE74;AL;ARABIC KASRATAN ISOLATED FORM
+FE76;AL;ARABIC FATHA ISOLATED FORM
+FE77;AL;ARABIC FATHA MEDIAL FORM
+FE78;AL;ARABIC DAMMA ISOLATED FORM
+FE79;AL;ARABIC DAMMA MEDIAL FORM
+FE7A;AL;ARABIC KASRA ISOLATED FORM
+FE7B;AL;ARABIC KASRA MEDIAL FORM
+FE7C;AL;ARABIC SHADDA ISOLATED FORM
+FE7D;AL;ARABIC SHADDA MEDIAL FORM
+FE7E;AL;ARABIC SUKUN ISOLATED FORM
+FE7F;AL;ARABIC SUKUN MEDIAL FORM
+FE80;AL;ARABIC LETTER HAMZA ISOLATED FORM
+FE81;AL;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;AL;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;AL;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;AL;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;AL;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;AL;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;AL;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;AL;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;AL;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;AL;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;AL;ARABIC LETTER ALEF ISOLATED FORM
+FE8E;AL;ARABIC LETTER ALEF FINAL FORM
+FE8F;AL;ARABIC LETTER BEH ISOLATED FORM
+FE90;AL;ARABIC LETTER BEH FINAL FORM
+FE91;AL;ARABIC LETTER BEH INITIAL FORM
+FE92;AL;ARABIC LETTER BEH MEDIAL FORM
+FE93;AL;ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;AL;ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;AL;ARABIC LETTER TEH ISOLATED FORM
+FE96;AL;ARABIC LETTER TEH FINAL FORM
+FE97;AL;ARABIC LETTER TEH INITIAL FORM
+FE98;AL;ARABIC LETTER TEH MEDIAL FORM
+FE99;AL;ARABIC LETTER THEH ISOLATED FORM
+FE9A;AL;ARABIC LETTER THEH FINAL FORM
+FE9B;AL;ARABIC LETTER THEH INITIAL FORM
+FE9C;AL;ARABIC LETTER THEH MEDIAL FORM
+FE9D;AL;ARABIC LETTER JEEM ISOLATED FORM
+FE9E;AL;ARABIC LETTER JEEM FINAL FORM
+FE9F;AL;ARABIC LETTER JEEM INITIAL FORM
+FEA0;AL;ARABIC LETTER JEEM MEDIAL FORM
+FEA1;AL;ARABIC LETTER HAH ISOLATED FORM
+FEA2;AL;ARABIC LETTER HAH FINAL FORM
+FEA3;AL;ARABIC LETTER HAH INITIAL FORM
+FEA4;AL;ARABIC LETTER HAH MEDIAL FORM
+FEA5;AL;ARABIC LETTER KHAH ISOLATED FORM
+FEA6;AL;ARABIC LETTER KHAH FINAL FORM
+FEA7;AL;ARABIC LETTER KHAH INITIAL FORM
+FEA8;AL;ARABIC LETTER KHAH MEDIAL FORM
+FEA9;AL;ARABIC LETTER DAL ISOLATED FORM
+FEAA;AL;ARABIC LETTER DAL FINAL FORM
+FEAB;AL;ARABIC LETTER THAL ISOLATED FORM
+FEAC;AL;ARABIC LETTER THAL FINAL FORM
+FEAD;AL;ARABIC LETTER REH ISOLATED FORM
+FEAE;AL;ARABIC LETTER REH FINAL FORM
+FEAF;AL;ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;AL;ARABIC LETTER ZAIN FINAL FORM
+FEB1;AL;ARABIC LETTER SEEN ISOLATED FORM
+FEB2;AL;ARABIC LETTER SEEN FINAL FORM
+FEB3;AL;ARABIC LETTER SEEN INITIAL FORM
+FEB4;AL;ARABIC LETTER SEEN MEDIAL FORM
+FEB5;AL;ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;AL;ARABIC LETTER SHEEN FINAL FORM
+FEB7;AL;ARABIC LETTER SHEEN INITIAL FORM
+FEB8;AL;ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;AL;ARABIC LETTER SAD ISOLATED FORM
+FEBA;AL;ARABIC LETTER SAD FINAL FORM
+FEBB;AL;ARABIC LETTER SAD INITIAL FORM
+FEBC;AL;ARABIC LETTER SAD MEDIAL FORM
+FEBD;AL;ARABIC LETTER DAD ISOLATED FORM
+FEBE;AL;ARABIC LETTER DAD FINAL FORM
+FEBF;AL;ARABIC LETTER DAD INITIAL FORM
+FEC0;AL;ARABIC LETTER DAD MEDIAL FORM
+FEC1;AL;ARABIC LETTER TAH ISOLATED FORM
+FEC2;AL;ARABIC LETTER TAH FINAL FORM
+FEC3;AL;ARABIC LETTER TAH INITIAL FORM
+FEC4;AL;ARABIC LETTER TAH MEDIAL FORM
+FEC5;AL;ARABIC LETTER ZAH ISOLATED FORM
+FEC6;AL;ARABIC LETTER ZAH FINAL FORM
+FEC7;AL;ARABIC LETTER ZAH INITIAL FORM
+FEC8;AL;ARABIC LETTER ZAH MEDIAL FORM
+FEC9;AL;ARABIC LETTER AIN ISOLATED FORM
+FECA;AL;ARABIC LETTER AIN FINAL FORM
+FECB;AL;ARABIC LETTER AIN INITIAL FORM
+FECC;AL;ARABIC LETTER AIN MEDIAL FORM
+FECD;AL;ARABIC LETTER GHAIN ISOLATED FORM
+FECE;AL;ARABIC LETTER GHAIN FINAL FORM
+FECF;AL;ARABIC LETTER GHAIN INITIAL FORM
+FED0;AL;ARABIC LETTER GHAIN MEDIAL FORM
+FED1;AL;ARABIC LETTER FEH ISOLATED FORM
+FED2;AL;ARABIC LETTER FEH FINAL FORM
+FED3;AL;ARABIC LETTER FEH INITIAL FORM
+FED4;AL;ARABIC LETTER FEH MEDIAL FORM
+FED5;AL;ARABIC LETTER QAF ISOLATED FORM
+FED6;AL;ARABIC LETTER QAF FINAL FORM
+FED7;AL;ARABIC LETTER QAF INITIAL FORM
+FED8;AL;ARABIC LETTER QAF MEDIAL FORM
+FED9;AL;ARABIC LETTER KAF ISOLATED FORM
+FEDA;AL;ARABIC LETTER KAF FINAL FORM
+FEDB;AL;ARABIC LETTER KAF INITIAL FORM
+FEDC;AL;ARABIC LETTER KAF MEDIAL FORM
+FEDD;AL;ARABIC LETTER LAM ISOLATED FORM
+FEDE;AL;ARABIC LETTER LAM FINAL FORM
+FEDF;AL;ARABIC LETTER LAM INITIAL FORM
+FEE0;AL;ARABIC LETTER LAM MEDIAL FORM
+FEE1;AL;ARABIC LETTER MEEM ISOLATED FORM
+FEE2;AL;ARABIC LETTER MEEM FINAL FORM
+FEE3;AL;ARABIC LETTER MEEM INITIAL FORM
+FEE4;AL;ARABIC LETTER MEEM MEDIAL FORM
+FEE5;AL;ARABIC LETTER NOON ISOLATED FORM
+FEE6;AL;ARABIC LETTER NOON FINAL FORM
+FEE7;AL;ARABIC LETTER NOON INITIAL FORM
+FEE8;AL;ARABIC LETTER NOON MEDIAL FORM
+FEE9;AL;ARABIC LETTER HEH ISOLATED FORM
+FEEA;AL;ARABIC LETTER HEH FINAL FORM
+FEEB;AL;ARABIC LETTER HEH INITIAL FORM
+FEEC;AL;ARABIC LETTER HEH MEDIAL FORM
+FEED;AL;ARABIC LETTER WAW ISOLATED FORM
+FEEE;AL;ARABIC LETTER WAW FINAL FORM
+FEEF;AL;ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;AL;ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;AL;ARABIC LETTER YEH ISOLATED FORM
+FEF2;AL;ARABIC LETTER YEH FINAL FORM
+FEF3;AL;ARABIC LETTER YEH INITIAL FORM
+FEF4;AL;ARABIC LETTER YEH MEDIAL FORM
+FEF5;AL;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;AL;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;AL;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;AL;ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF;GL;ZERO WIDTH NO-BREAK SPACE
+FF01;EX;FULLWIDTH EXCLAMATION MARK
+FF02;ID;FULLWIDTH QUOTATION MARK
+FF03;ID;FULLWIDTH NUMBER SIGN
+FF04;PR;FULLWIDTH DOLLAR SIGN
+FF05;PO;FULLWIDTH PERCENT SIGN
+FF06;ID;FULLWIDTH AMPERSAND
+FF07;ID;FULLWIDTH APOSTROPHE
+FF08;OP;FULLWIDTH LEFT PARENTHESIS
+FF09;CL;FULLWIDTH RIGHT PARENTHESIS
+FF0A;ID;FULLWIDTH ASTERISK
+FF0B;ID;FULLWIDTH PLUS SIGN
+FF0C;CL;FULLWIDTH COMMA
+FF0D;ID;FULLWIDTH HYPHEN-MINUS
+FF0E;CL;FULLWIDTH FULL STOP
+FF0F;ID;FULLWIDTH SOLIDUS
+FF10;ID;FULLWIDTH DIGIT ZERO
+FF11;ID;FULLWIDTH DIGIT ONE
+FF12;ID;FULLWIDTH DIGIT TWO
+FF13;ID;FULLWIDTH DIGIT THREE
+FF14;ID;FULLWIDTH DIGIT FOUR
+FF15;ID;FULLWIDTH DIGIT FIVE
+FF16;ID;FULLWIDTH DIGIT SIX
+FF17;ID;FULLWIDTH DIGIT SEVEN
+FF18;ID;FULLWIDTH DIGIT EIGHT
+FF19;ID;FULLWIDTH DIGIT NINE
+FF1A;NS;FULLWIDTH COLON
+FF1B;NS;FULLWIDTH SEMICOLON
+FF1C;ID;FULLWIDTH LESS-THAN SIGN
+FF1D;ID;FULLWIDTH EQUALS SIGN
+FF1E;ID;FULLWIDTH GREATER-THAN SIGN
+FF1F;EX;FULLWIDTH QUESTION MARK
+FF20;ID;FULLWIDTH COMMERCIAL AT
+FF21;ID;FULLWIDTH LATIN CAPITAL LETTER A
+FF22;ID;FULLWIDTH LATIN CAPITAL LETTER B
+FF23;ID;FULLWIDTH LATIN CAPITAL LETTER C
+FF24;ID;FULLWIDTH LATIN CAPITAL LETTER D
+FF25;ID;FULLWIDTH LATIN CAPITAL LETTER E
+FF26;ID;FULLWIDTH LATIN CAPITAL LETTER F
+FF27;ID;FULLWIDTH LATIN CAPITAL LETTER G
+FF28;ID;FULLWIDTH LATIN CAPITAL LETTER H
+FF29;ID;FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;ID;FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;ID;FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;ID;FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;ID;FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;ID;FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;ID;FULLWIDTH LATIN CAPITAL LETTER O
+FF30;ID;FULLWIDTH LATIN CAPITAL LETTER P
+FF31;ID;FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;ID;FULLWIDTH LATIN CAPITAL LETTER R
+FF33;ID;FULLWIDTH LATIN CAPITAL LETTER S
+FF34;ID;FULLWIDTH LATIN CAPITAL LETTER T
+FF35;ID;FULLWIDTH LATIN CAPITAL LETTER U
+FF36;ID;FULLWIDTH LATIN CAPITAL LETTER V
+FF37;ID;FULLWIDTH LATIN CAPITAL LETTER W
+FF38;ID;FULLWIDTH LATIN CAPITAL LETTER X
+FF39;ID;FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;ID;FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;OP;FULLWIDTH LEFT SQUARE BRACKET
+FF3C;ID;FULLWIDTH REVERSE SOLIDUS
+FF3D;CL;FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;ID;FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;ID;FULLWIDTH LOW LINE
+FF40;ID;FULLWIDTH GRAVE ACCENT
+FF41;ID;FULLWIDTH LATIN SMALL LETTER A
+FF42;ID;FULLWIDTH LATIN SMALL LETTER B
+FF43;ID;FULLWIDTH LATIN SMALL LETTER C
+FF44;ID;FULLWIDTH LATIN SMALL LETTER D
+FF45;ID;FULLWIDTH LATIN SMALL LETTER E
+FF46;ID;FULLWIDTH LATIN SMALL LETTER F
+FF47;ID;FULLWIDTH LATIN SMALL LETTER G
+FF48;ID;FULLWIDTH LATIN SMALL LETTER H
+FF49;ID;FULLWIDTH LATIN SMALL LETTER I
+FF4A;ID;FULLWIDTH LATIN SMALL LETTER J
+FF4B;ID;FULLWIDTH LATIN SMALL LETTER K
+FF4C;ID;FULLWIDTH LATIN SMALL LETTER L
+FF4D;ID;FULLWIDTH LATIN SMALL LETTER M
+FF4E;ID;FULLWIDTH LATIN SMALL LETTER N
+FF4F;ID;FULLWIDTH LATIN SMALL LETTER O
+FF50;ID;FULLWIDTH LATIN SMALL LETTER P
+FF51;ID;FULLWIDTH LATIN SMALL LETTER Q
+FF52;ID;FULLWIDTH LATIN SMALL LETTER R
+FF53;ID;FULLWIDTH LATIN SMALL LETTER S
+FF54;ID;FULLWIDTH LATIN SMALL LETTER T
+FF55;ID;FULLWIDTH LATIN SMALL LETTER U
+FF56;ID;FULLWIDTH LATIN SMALL LETTER V
+FF57;ID;FULLWIDTH LATIN SMALL LETTER W
+FF58;ID;FULLWIDTH LATIN SMALL LETTER X
+FF59;ID;FULLWIDTH LATIN SMALL LETTER Y
+FF5A;ID;FULLWIDTH LATIN SMALL LETTER Z
+FF5B;OP;FULLWIDTH LEFT CURLY BRACKET
+FF5C;ID;FULLWIDTH VERTICAL LINE
+FF5D;CL;FULLWIDTH RIGHT CURLY BRACKET
+FF5E;ID;FULLWIDTH TILDE
+FF61;CL;HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;OP;HALFWIDTH LEFT CORNER BRACKET
+FF63;CL;HALFWIDTH RIGHT CORNER BRACKET
+FF64;CL;HALFWIDTH IDEOGRAPHIC COMMA
+FF65;NS;HALFWIDTH KATAKANA MIDDLE DOT
+FF66;AL;HALFWIDTH KATAKANA LETTER WO
+FF67;NS;HALFWIDTH KATAKANA LETTER SMALL A
+FF68;NS;HALFWIDTH KATAKANA LETTER SMALL I
+FF69;NS;HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;NS;HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;NS;HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;NS;HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;NS;HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;NS;HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;NS;HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;NS;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;AL;HALFWIDTH KATAKANA LETTER A
+FF72;AL;HALFWIDTH KATAKANA LETTER I
+FF73;AL;HALFWIDTH KATAKANA LETTER U
+FF74;AL;HALFWIDTH KATAKANA LETTER E
+FF75;AL;HALFWIDTH KATAKANA LETTER O
+FF76;AL;HALFWIDTH KATAKANA LETTER KA
+FF77;AL;HALFWIDTH KATAKANA LETTER KI
+FF78;AL;HALFWIDTH KATAKANA LETTER KU
+FF79;AL;HALFWIDTH KATAKANA LETTER KE
+FF7A;AL;HALFWIDTH KATAKANA LETTER KO
+FF7B;AL;HALFWIDTH KATAKANA LETTER SA
+FF7C;AL;HALFWIDTH KATAKANA LETTER SI
+FF7D;AL;HALFWIDTH KATAKANA LETTER SU
+FF7E;AL;HALFWIDTH KATAKANA LETTER SE
+FF7F;AL;HALFWIDTH KATAKANA LETTER SO
+FF80;AL;HALFWIDTH KATAKANA LETTER TA
+FF81;AL;HALFWIDTH KATAKANA LETTER TI
+FF82;AL;HALFWIDTH KATAKANA LETTER TU
+FF83;AL;HALFWIDTH KATAKANA LETTER TE
+FF84;AL;HALFWIDTH KATAKANA LETTER TO
+FF85;AL;HALFWIDTH KATAKANA LETTER NA
+FF86;AL;HALFWIDTH KATAKANA LETTER NI
+FF87;AL;HALFWIDTH KATAKANA LETTER NU
+FF88;AL;HALFWIDTH KATAKANA LETTER NE
+FF89;AL;HALFWIDTH KATAKANA LETTER NO
+FF8A;AL;HALFWIDTH KATAKANA LETTER HA
+FF8B;AL;HALFWIDTH KATAKANA LETTER HI
+FF8C;AL;HALFWIDTH KATAKANA LETTER HU
+FF8D;AL;HALFWIDTH KATAKANA LETTER HE
+FF8E;AL;HALFWIDTH KATAKANA LETTER HO
+FF8F;AL;HALFWIDTH KATAKANA LETTER MA
+FF90;AL;HALFWIDTH KATAKANA LETTER MI
+FF91;AL;HALFWIDTH KATAKANA LETTER MU
+FF92;AL;HALFWIDTH KATAKANA LETTER ME
+FF93;AL;HALFWIDTH KATAKANA LETTER MO
+FF94;AL;HALFWIDTH KATAKANA LETTER YA
+FF95;AL;HALFWIDTH KATAKANA LETTER YU
+FF96;AL;HALFWIDTH KATAKANA LETTER YO
+FF97;AL;HALFWIDTH KATAKANA LETTER RA
+FF98;AL;HALFWIDTH KATAKANA LETTER RI
+FF99;AL;HALFWIDTH KATAKANA LETTER RU
+FF9A;AL;HALFWIDTH KATAKANA LETTER RE
+FF9B;AL;HALFWIDTH KATAKANA LETTER RO
+FF9C;AL;HALFWIDTH KATAKANA LETTER WA
+FF9D;AL;HALFWIDTH KATAKANA LETTER N
+FF9E;NS;HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;NS;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;AL;HALFWIDTH HANGUL FILLER
+FFA1;AL;HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;AL;HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;AL;HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;AL;HALFWIDTH HANGUL LETTER NIEUN
+FFA5;AL;HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;AL;HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;AL;HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;AL;HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;AL;HALFWIDTH HANGUL LETTER RIEUL
+FFAA;AL;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;AL;HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;AL;HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;AL;HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;AL;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;AL;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;AL;HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;AL;HALFWIDTH HANGUL LETTER MIEUM
+FFB2;AL;HALFWIDTH HANGUL LETTER PIEUP
+FFB3;AL;HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;AL;HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;AL;HALFWIDTH HANGUL LETTER SIOS
+FFB6;AL;HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;AL;HALFWIDTH HANGUL LETTER IEUNG
+FFB8;AL;HALFWIDTH HANGUL LETTER CIEUC
+FFB9;AL;HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;AL;HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;AL;HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;AL;HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;AL;HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;AL;HALFWIDTH HANGUL LETTER HIEUH
+FFC2;AL;HALFWIDTH HANGUL LETTER A
+FFC3;AL;HALFWIDTH HANGUL LETTER AE
+FFC4;AL;HALFWIDTH HANGUL LETTER YA
+FFC5;AL;HALFWIDTH HANGUL LETTER YAE
+FFC6;AL;HALFWIDTH HANGUL LETTER EO
+FFC7;AL;HALFWIDTH HANGUL LETTER E
+FFCA;AL;HALFWIDTH HANGUL LETTER YEO
+FFCB;AL;HALFWIDTH HANGUL LETTER YE
+FFCC;AL;HALFWIDTH HANGUL LETTER O
+FFCD;AL;HALFWIDTH HANGUL LETTER WA
+FFCE;AL;HALFWIDTH HANGUL LETTER WAE
+FFCF;AL;HALFWIDTH HANGUL LETTER OE
+FFD2;AL;HALFWIDTH HANGUL LETTER YO
+FFD3;AL;HALFWIDTH HANGUL LETTER U
+FFD4;AL;HALFWIDTH HANGUL LETTER WEO
+FFD5;AL;HALFWIDTH HANGUL LETTER WE
+FFD6;AL;HALFWIDTH HANGUL LETTER WI
+FFD7;AL;HALFWIDTH HANGUL LETTER YU
+FFDA;AL;HALFWIDTH HANGUL LETTER EU
+FFDB;AL;HALFWIDTH HANGUL LETTER YI
+FFDC;AL;HALFWIDTH HANGUL LETTER I
+FFE0;PO;FULLWIDTH CENT SIGN
+FFE1;PR;FULLWIDTH POUND SIGN
+FFE2;ID;FULLWIDTH NOT SIGN
+FFE3;ID;FULLWIDTH MACRON
+FFE4;ID;FULLWIDTH BROKEN BAR
+FFE5;PR;FULLWIDTH YEN SIGN
+FFE6;PR;FULLWIDTH WON SIGN
+FFE8;AL;HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;AL;HALFWIDTH LEFTWARDS ARROW
+FFEA;AL;HALFWIDTH UPWARDS ARROW
+FFEB;AL;HALFWIDTH RIGHTWARDS ARROW
+FFEC;AL;HALFWIDTH DOWNWARDS ARROW
+FFED;AL;HALFWIDTH BLACK SQUARE
+FFEE;AL;HALFWIDTH WHITE CIRCLE
+FFF9;CM;INTERLINEAR ANNOTATION ANCHOR
+FFFA;CM;INTERLINEAR ANNOTATION SEPARATOR
+FFFB;CM;INTERLINEAR ANNOTATION TERMINATOR
+FFFC;CB;OBJECT REPLACEMENT CHARACTER
+FFFD;AI;REPLACEMENT CHARACTER
diff --git a/contrib/perl5/lib/unicode/Makefile b/contrib/perl5/lib/unicode/Makefile
new file mode 100644
index 0000000..c68fa3a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Makefile
@@ -0,0 +1,6 @@
+all:
+ ./mktables.PL
+ ./MakeEthiopicSyllables.PL
+
+clean:
+ rm -f *.pl */*.pl
diff --git a/contrib/perl5/lib/unicode/Name.pl b/contrib/perl5/lib/unicode/Name.pl
new file mode 100644
index 0000000..ef8979f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Name.pl
@@ -0,0 +1,10552 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0000 001f <control>
+0020 SPACE
+0021 EXCLAMATION MARK
+0022 QUOTATION MARK
+0023 NUMBER SIGN
+0024 DOLLAR SIGN
+0025 PERCENT SIGN
+0026 AMPERSAND
+0027 APOSTROPHE
+0028 LEFT PARENTHESIS
+0029 RIGHT PARENTHESIS
+002a ASTERISK
+002b PLUS SIGN
+002c COMMA
+002d HYPHEN-MINUS
+002e FULL STOP
+002f SOLIDUS
+0030 DIGIT ZERO
+0031 DIGIT ONE
+0032 DIGIT TWO
+0033 DIGIT THREE
+0034 DIGIT FOUR
+0035 DIGIT FIVE
+0036 DIGIT SIX
+0037 DIGIT SEVEN
+0038 DIGIT EIGHT
+0039 DIGIT NINE
+003a COLON
+003b SEMICOLON
+003c LESS-THAN SIGN
+003d EQUALS SIGN
+003e GREATER-THAN SIGN
+003f QUESTION MARK
+0040 COMMERCIAL AT
+0041 LATIN CAPITAL LETTER A
+0042 LATIN CAPITAL LETTER B
+0043 LATIN CAPITAL LETTER C
+0044 LATIN CAPITAL LETTER D
+0045 LATIN CAPITAL LETTER E
+0046 LATIN CAPITAL LETTER F
+0047 LATIN CAPITAL LETTER G
+0048 LATIN CAPITAL LETTER H
+0049 LATIN CAPITAL LETTER I
+004a LATIN CAPITAL LETTER J
+004b LATIN CAPITAL LETTER K
+004c LATIN CAPITAL LETTER L
+004d LATIN CAPITAL LETTER M
+004e LATIN CAPITAL LETTER N
+004f LATIN CAPITAL LETTER O
+0050 LATIN CAPITAL LETTER P
+0051 LATIN CAPITAL LETTER Q
+0052 LATIN CAPITAL LETTER R
+0053 LATIN CAPITAL LETTER S
+0054 LATIN CAPITAL LETTER T
+0055 LATIN CAPITAL LETTER U
+0056 LATIN CAPITAL LETTER V
+0057 LATIN CAPITAL LETTER W
+0058 LATIN CAPITAL LETTER X
+0059 LATIN CAPITAL LETTER Y
+005a LATIN CAPITAL LETTER Z
+005b LEFT SQUARE BRACKET
+005c REVERSE SOLIDUS
+005d RIGHT SQUARE BRACKET
+005e CIRCUMFLEX ACCENT
+005f LOW LINE
+0060 GRAVE ACCENT
+0061 LATIN SMALL LETTER A
+0062 LATIN SMALL LETTER B
+0063 LATIN SMALL LETTER C
+0064 LATIN SMALL LETTER D
+0065 LATIN SMALL LETTER E
+0066 LATIN SMALL LETTER F
+0067 LATIN SMALL LETTER G
+0068 LATIN SMALL LETTER H
+0069 LATIN SMALL LETTER I
+006a LATIN SMALL LETTER J
+006b LATIN SMALL LETTER K
+006c LATIN SMALL LETTER L
+006d LATIN SMALL LETTER M
+006e LATIN SMALL LETTER N
+006f LATIN SMALL LETTER O
+0070 LATIN SMALL LETTER P
+0071 LATIN SMALL LETTER Q
+0072 LATIN SMALL LETTER R
+0073 LATIN SMALL LETTER S
+0074 LATIN SMALL LETTER T
+0075 LATIN SMALL LETTER U
+0076 LATIN SMALL LETTER V
+0077 LATIN SMALL LETTER W
+0078 LATIN SMALL LETTER X
+0079 LATIN SMALL LETTER Y
+007a LATIN SMALL LETTER Z
+007b LEFT CURLY BRACKET
+007c VERTICAL LINE
+007d RIGHT CURLY BRACKET
+007e TILDE
+007f 009f <control>
+00a0 NO-BREAK SPACE
+00a1 INVERTED EXCLAMATION MARK
+00a2 CENT SIGN
+00a3 POUND SIGN
+00a4 CURRENCY SIGN
+00a5 YEN SIGN
+00a6 BROKEN BAR
+00a7 SECTION SIGN
+00a8 DIAERESIS
+00a9 COPYRIGHT SIGN
+00aa FEMININE ORDINAL INDICATOR
+00ab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00ac NOT SIGN
+00ad SOFT HYPHEN
+00ae REGISTERED SIGN
+00af MACRON
+00b0 DEGREE SIGN
+00b1 PLUS-MINUS SIGN
+00b2 SUPERSCRIPT TWO
+00b3 SUPERSCRIPT THREE
+00b4 ACUTE ACCENT
+00b5 MICRO SIGN
+00b6 PILCROW SIGN
+00b7 MIDDLE DOT
+00b8 CEDILLA
+00b9 SUPERSCRIPT ONE
+00ba MASCULINE ORDINAL INDICATOR
+00bb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00bc VULGAR FRACTION ONE QUARTER
+00bd VULGAR FRACTION ONE HALF
+00be VULGAR FRACTION THREE QUARTERS
+00bf INVERTED QUESTION MARK
+00c0 LATIN CAPITAL LETTER A WITH GRAVE
+00c1 LATIN CAPITAL LETTER A WITH ACUTE
+00c2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00c3 LATIN CAPITAL LETTER A WITH TILDE
+00c4 LATIN CAPITAL LETTER A WITH DIAERESIS
+00c5 LATIN CAPITAL LETTER A WITH RING ABOVE
+00c6 LATIN CAPITAL LETTER AE
+00c7 LATIN CAPITAL LETTER C WITH CEDILLA
+00c8 LATIN CAPITAL LETTER E WITH GRAVE
+00c9 LATIN CAPITAL LETTER E WITH ACUTE
+00ca LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00cb LATIN CAPITAL LETTER E WITH DIAERESIS
+00cc LATIN CAPITAL LETTER I WITH GRAVE
+00cd LATIN CAPITAL LETTER I WITH ACUTE
+00ce LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00cf LATIN CAPITAL LETTER I WITH DIAERESIS
+00d0 LATIN CAPITAL LETTER ETH
+00d1 LATIN CAPITAL LETTER N WITH TILDE
+00d2 LATIN CAPITAL LETTER O WITH GRAVE
+00d3 LATIN CAPITAL LETTER O WITH ACUTE
+00d4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00d5 LATIN CAPITAL LETTER O WITH TILDE
+00d6 LATIN CAPITAL LETTER O WITH DIAERESIS
+00d7 MULTIPLICATION SIGN
+00d8 LATIN CAPITAL LETTER O WITH STROKE
+00d9 LATIN CAPITAL LETTER U WITH GRAVE
+00da LATIN CAPITAL LETTER U WITH ACUTE
+00db LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00dc LATIN CAPITAL LETTER U WITH DIAERESIS
+00dd LATIN CAPITAL LETTER Y WITH ACUTE
+00de LATIN CAPITAL LETTER THORN
+00df LATIN SMALL LETTER SHARP S
+00e0 LATIN SMALL LETTER A WITH GRAVE
+00e1 LATIN SMALL LETTER A WITH ACUTE
+00e2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+00e3 LATIN SMALL LETTER A WITH TILDE
+00e4 LATIN SMALL LETTER A WITH DIAERESIS
+00e5 LATIN SMALL LETTER A WITH RING ABOVE
+00e6 LATIN SMALL LETTER AE
+00e7 LATIN SMALL LETTER C WITH CEDILLA
+00e8 LATIN SMALL LETTER E WITH GRAVE
+00e9 LATIN SMALL LETTER E WITH ACUTE
+00ea LATIN SMALL LETTER E WITH CIRCUMFLEX
+00eb LATIN SMALL LETTER E WITH DIAERESIS
+00ec LATIN SMALL LETTER I WITH GRAVE
+00ed LATIN SMALL LETTER I WITH ACUTE
+00ee LATIN SMALL LETTER I WITH CIRCUMFLEX
+00ef LATIN SMALL LETTER I WITH DIAERESIS
+00f0 LATIN SMALL LETTER ETH
+00f1 LATIN SMALL LETTER N WITH TILDE
+00f2 LATIN SMALL LETTER O WITH GRAVE
+00f3 LATIN SMALL LETTER O WITH ACUTE
+00f4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+00f5 LATIN SMALL LETTER O WITH TILDE
+00f6 LATIN SMALL LETTER O WITH DIAERESIS
+00f7 DIVISION SIGN
+00f8 LATIN SMALL LETTER O WITH STROKE
+00f9 LATIN SMALL LETTER U WITH GRAVE
+00fa LATIN SMALL LETTER U WITH ACUTE
+00fb LATIN SMALL LETTER U WITH CIRCUMFLEX
+00fc LATIN SMALL LETTER U WITH DIAERESIS
+00fd LATIN SMALL LETTER Y WITH ACUTE
+00fe LATIN SMALL LETTER THORN
+00ff LATIN SMALL LETTER Y WITH DIAERESIS
+0100 LATIN CAPITAL LETTER A WITH MACRON
+0101 LATIN SMALL LETTER A WITH MACRON
+0102 LATIN CAPITAL LETTER A WITH BREVE
+0103 LATIN SMALL LETTER A WITH BREVE
+0104 LATIN CAPITAL LETTER A WITH OGONEK
+0105 LATIN SMALL LETTER A WITH OGONEK
+0106 LATIN CAPITAL LETTER C WITH ACUTE
+0107 LATIN SMALL LETTER C WITH ACUTE
+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
+010a LATIN CAPITAL LETTER C WITH DOT ABOVE
+010b LATIN SMALL LETTER C WITH DOT ABOVE
+010c LATIN CAPITAL LETTER C WITH CARON
+010d LATIN SMALL LETTER C WITH CARON
+010e LATIN CAPITAL LETTER D WITH CARON
+010f LATIN SMALL LETTER D WITH CARON
+0110 LATIN CAPITAL LETTER D WITH STROKE
+0111 LATIN SMALL LETTER D WITH STROKE
+0112 LATIN CAPITAL LETTER E WITH MACRON
+0113 LATIN SMALL LETTER E WITH MACRON
+0114 LATIN CAPITAL LETTER E WITH BREVE
+0115 LATIN SMALL LETTER E WITH BREVE
+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117 LATIN SMALL LETTER E WITH DOT ABOVE
+0118 LATIN CAPITAL LETTER E WITH OGONEK
+0119 LATIN SMALL LETTER E WITH OGONEK
+011a LATIN CAPITAL LETTER E WITH CARON
+011b LATIN SMALL LETTER E WITH CARON
+011c LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011d LATIN SMALL LETTER G WITH CIRCUMFLEX
+011e LATIN CAPITAL LETTER G WITH BREVE
+011f LATIN SMALL LETTER G WITH BREVE
+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121 LATIN SMALL LETTER G WITH DOT ABOVE
+0122 LATIN CAPITAL LETTER G WITH CEDILLA
+0123 LATIN SMALL LETTER G WITH CEDILLA
+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126 LATIN CAPITAL LETTER H WITH STROKE
+0127 LATIN SMALL LETTER H WITH STROKE
+0128 LATIN CAPITAL LETTER I WITH TILDE
+0129 LATIN SMALL LETTER I WITH TILDE
+012a LATIN CAPITAL LETTER I WITH MACRON
+012b LATIN SMALL LETTER I WITH MACRON
+012c LATIN CAPITAL LETTER I WITH BREVE
+012d LATIN SMALL LETTER I WITH BREVE
+012e LATIN CAPITAL LETTER I WITH OGONEK
+012f LATIN SMALL LETTER I WITH OGONEK
+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131 LATIN SMALL LETTER DOTLESS I
+0132 LATIN CAPITAL LIGATURE IJ
+0133 LATIN SMALL LIGATURE IJ
+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136 LATIN CAPITAL LETTER K WITH CEDILLA
+0137 LATIN SMALL LETTER K WITH CEDILLA
+0138 LATIN SMALL LETTER KRA
+0139 LATIN CAPITAL LETTER L WITH ACUTE
+013a LATIN SMALL LETTER L WITH ACUTE
+013b LATIN CAPITAL LETTER L WITH CEDILLA
+013c LATIN SMALL LETTER L WITH CEDILLA
+013d LATIN CAPITAL LETTER L WITH CARON
+013e LATIN SMALL LETTER L WITH CARON
+013f LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140 LATIN SMALL LETTER L WITH MIDDLE DOT
+0141 LATIN CAPITAL LETTER L WITH STROKE
+0142 LATIN SMALL LETTER L WITH STROKE
+0143 LATIN CAPITAL LETTER N WITH ACUTE
+0144 LATIN SMALL LETTER N WITH ACUTE
+0145 LATIN CAPITAL LETTER N WITH CEDILLA
+0146 LATIN SMALL LETTER N WITH CEDILLA
+0147 LATIN CAPITAL LETTER N WITH CARON
+0148 LATIN SMALL LETTER N WITH CARON
+0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014a LATIN CAPITAL LETTER ENG
+014b LATIN SMALL LETTER ENG
+014c LATIN CAPITAL LETTER O WITH MACRON
+014d LATIN SMALL LETTER O WITH MACRON
+014e LATIN CAPITAL LETTER O WITH BREVE
+014f LATIN SMALL LETTER O WITH BREVE
+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152 LATIN CAPITAL LIGATURE OE
+0153 LATIN SMALL LIGATURE OE
+0154 LATIN CAPITAL LETTER R WITH ACUTE
+0155 LATIN SMALL LETTER R WITH ACUTE
+0156 LATIN CAPITAL LETTER R WITH CEDILLA
+0157 LATIN SMALL LETTER R WITH CEDILLA
+0158 LATIN CAPITAL LETTER R WITH CARON
+0159 LATIN SMALL LETTER R WITH CARON
+015a LATIN CAPITAL LETTER S WITH ACUTE
+015b LATIN SMALL LETTER S WITH ACUTE
+015c LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015d LATIN SMALL LETTER S WITH CIRCUMFLEX
+015e LATIN CAPITAL LETTER S WITH CEDILLA
+015f LATIN SMALL LETTER S WITH CEDILLA
+0160 LATIN CAPITAL LETTER S WITH CARON
+0161 LATIN SMALL LETTER S WITH CARON
+0162 LATIN CAPITAL LETTER T WITH CEDILLA
+0163 LATIN SMALL LETTER T WITH CEDILLA
+0164 LATIN CAPITAL LETTER T WITH CARON
+0165 LATIN SMALL LETTER T WITH CARON
+0166 LATIN CAPITAL LETTER T WITH STROKE
+0167 LATIN SMALL LETTER T WITH STROKE
+0168 LATIN CAPITAL LETTER U WITH TILDE
+0169 LATIN SMALL LETTER U WITH TILDE
+016a LATIN CAPITAL LETTER U WITH MACRON
+016b LATIN SMALL LETTER U WITH MACRON
+016c LATIN CAPITAL LETTER U WITH BREVE
+016d LATIN SMALL LETTER U WITH BREVE
+016e LATIN CAPITAL LETTER U WITH RING ABOVE
+016f LATIN SMALL LETTER U WITH RING ABOVE
+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172 LATIN CAPITAL LETTER U WITH OGONEK
+0173 LATIN SMALL LETTER U WITH OGONEK
+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179 LATIN CAPITAL LETTER Z WITH ACUTE
+017a LATIN SMALL LETTER Z WITH ACUTE
+017b LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017c LATIN SMALL LETTER Z WITH DOT ABOVE
+017d LATIN CAPITAL LETTER Z WITH CARON
+017e LATIN SMALL LETTER Z WITH CARON
+017f LATIN SMALL LETTER LONG S
+0180 LATIN SMALL LETTER B WITH STROKE
+0181 LATIN CAPITAL LETTER B WITH HOOK
+0182 LATIN CAPITAL LETTER B WITH TOPBAR
+0183 LATIN SMALL LETTER B WITH TOPBAR
+0184 LATIN CAPITAL LETTER TONE SIX
+0185 LATIN SMALL LETTER TONE SIX
+0186 LATIN CAPITAL LETTER OPEN O
+0187 LATIN CAPITAL LETTER C WITH HOOK
+0188 LATIN SMALL LETTER C WITH HOOK
+0189 LATIN CAPITAL LETTER AFRICAN D
+018a LATIN CAPITAL LETTER D WITH HOOK
+018b LATIN CAPITAL LETTER D WITH TOPBAR
+018c LATIN SMALL LETTER D WITH TOPBAR
+018d LATIN SMALL LETTER TURNED DELTA
+018e LATIN CAPITAL LETTER REVERSED E
+018f LATIN CAPITAL LETTER SCHWA
+0190 LATIN CAPITAL LETTER OPEN E
+0191 LATIN CAPITAL LETTER F WITH HOOK
+0192 LATIN SMALL LETTER F WITH HOOK
+0193 LATIN CAPITAL LETTER G WITH HOOK
+0194 LATIN CAPITAL LETTER GAMMA
+0195 LATIN SMALL LETTER HV
+0196 LATIN CAPITAL LETTER IOTA
+0197 LATIN CAPITAL LETTER I WITH STROKE
+0198 LATIN CAPITAL LETTER K WITH HOOK
+0199 LATIN SMALL LETTER K WITH HOOK
+019a LATIN SMALL LETTER L WITH BAR
+019b LATIN SMALL LETTER LAMBDA WITH STROKE
+019c LATIN CAPITAL LETTER TURNED M
+019d LATIN CAPITAL LETTER N WITH LEFT HOOK
+019e LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019f LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01a0 LATIN CAPITAL LETTER O WITH HORN
+01a1 LATIN SMALL LETTER O WITH HORN
+01a2 LATIN CAPITAL LETTER OI
+01a3 LATIN SMALL LETTER OI
+01a4 LATIN CAPITAL LETTER P WITH HOOK
+01a5 LATIN SMALL LETTER P WITH HOOK
+01a6 LATIN LETTER YR
+01a7 LATIN CAPITAL LETTER TONE TWO
+01a8 LATIN SMALL LETTER TONE TWO
+01a9 LATIN CAPITAL LETTER ESH
+01aa LATIN LETTER REVERSED ESH LOOP
+01ab LATIN SMALL LETTER T WITH PALATAL HOOK
+01ac LATIN CAPITAL LETTER T WITH HOOK
+01ad LATIN SMALL LETTER T WITH HOOK
+01ae LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01af LATIN CAPITAL LETTER U WITH HORN
+01b0 LATIN SMALL LETTER U WITH HORN
+01b1 LATIN CAPITAL LETTER UPSILON
+01b2 LATIN CAPITAL LETTER V WITH HOOK
+01b3 LATIN CAPITAL LETTER Y WITH HOOK
+01b4 LATIN SMALL LETTER Y WITH HOOK
+01b5 LATIN CAPITAL LETTER Z WITH STROKE
+01b6 LATIN SMALL LETTER Z WITH STROKE
+01b7 LATIN CAPITAL LETTER EZH
+01b8 LATIN CAPITAL LETTER EZH REVERSED
+01b9 LATIN SMALL LETTER EZH REVERSED
+01ba LATIN SMALL LETTER EZH WITH TAIL
+01bb LATIN LETTER TWO WITH STROKE
+01bc LATIN CAPITAL LETTER TONE FIVE
+01bd LATIN SMALL LETTER TONE FIVE
+01be LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01bf LATIN LETTER WYNN
+01c0 LATIN LETTER DENTAL CLICK
+01c1 LATIN LETTER LATERAL CLICK
+01c2 LATIN LETTER ALVEOLAR CLICK
+01c3 LATIN LETTER RETROFLEX CLICK
+01c4 LATIN CAPITAL LETTER DZ WITH CARON
+01c5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01c6 LATIN SMALL LETTER DZ WITH CARON
+01c7 LATIN CAPITAL LETTER LJ
+01c8 LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01c9 LATIN SMALL LETTER LJ
+01ca LATIN CAPITAL LETTER NJ
+01cb LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01cc LATIN SMALL LETTER NJ
+01cd LATIN CAPITAL LETTER A WITH CARON
+01ce LATIN SMALL LETTER A WITH CARON
+01cf LATIN CAPITAL LETTER I WITH CARON
+01d0 LATIN SMALL LETTER I WITH CARON
+01d1 LATIN CAPITAL LETTER O WITH CARON
+01d2 LATIN SMALL LETTER O WITH CARON
+01d3 LATIN CAPITAL LETTER U WITH CARON
+01d4 LATIN SMALL LETTER U WITH CARON
+01d5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01d6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01d7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01d8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01d9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01da LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01db LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01dc LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01dd LATIN SMALL LETTER TURNED E
+01de LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01df LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01e0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01e1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01e2 LATIN CAPITAL LETTER AE WITH MACRON
+01e3 LATIN SMALL LETTER AE WITH MACRON
+01e4 LATIN CAPITAL LETTER G WITH STROKE
+01e5 LATIN SMALL LETTER G WITH STROKE
+01e6 LATIN CAPITAL LETTER G WITH CARON
+01e7 LATIN SMALL LETTER G WITH CARON
+01e8 LATIN CAPITAL LETTER K WITH CARON
+01e9 LATIN SMALL LETTER K WITH CARON
+01ea LATIN CAPITAL LETTER O WITH OGONEK
+01eb LATIN SMALL LETTER O WITH OGONEK
+01ec LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ed LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01ee LATIN CAPITAL LETTER EZH WITH CARON
+01ef LATIN SMALL LETTER EZH WITH CARON
+01f0 LATIN SMALL LETTER J WITH CARON
+01f1 LATIN CAPITAL LETTER DZ
+01f2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01f3 LATIN SMALL LETTER DZ
+01f4 LATIN CAPITAL LETTER G WITH ACUTE
+01f5 LATIN SMALL LETTER G WITH ACUTE
+01f6 LATIN CAPITAL LETTER HWAIR
+01f7 LATIN CAPITAL LETTER WYNN
+01f8 LATIN CAPITAL LETTER N WITH GRAVE
+01f9 LATIN SMALL LETTER N WITH GRAVE
+01fa LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01fb LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01fc LATIN CAPITAL LETTER AE WITH ACUTE
+01fd LATIN SMALL LETTER AE WITH ACUTE
+01fe LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01ff LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203 LATIN SMALL LETTER A WITH INVERTED BREVE
+0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207 LATIN SMALL LETTER E WITH INVERTED BREVE
+0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020a LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020b LATIN SMALL LETTER I WITH INVERTED BREVE
+020c LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020d LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020e LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020f LATIN SMALL LETTER O WITH INVERTED BREVE
+0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213 LATIN SMALL LETTER R WITH INVERTED BREVE
+0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217 LATIN SMALL LETTER U WITH INVERTED BREVE
+0218 LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219 LATIN SMALL LETTER S WITH COMMA BELOW
+021a LATIN CAPITAL LETTER T WITH COMMA BELOW
+021b LATIN SMALL LETTER T WITH COMMA BELOW
+021c LATIN CAPITAL LETTER YOGH
+021d LATIN SMALL LETTER YOGH
+021e LATIN CAPITAL LETTER H WITH CARON
+021f LATIN SMALL LETTER H WITH CARON
+0222 LATIN CAPITAL LETTER OU
+0223 LATIN SMALL LETTER OU
+0224 LATIN CAPITAL LETTER Z WITH HOOK
+0225 LATIN SMALL LETTER Z WITH HOOK
+0226 LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227 LATIN SMALL LETTER A WITH DOT ABOVE
+0228 LATIN CAPITAL LETTER E WITH CEDILLA
+0229 LATIN SMALL LETTER E WITH CEDILLA
+022a LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022b LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022c LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022d LATIN SMALL LETTER O WITH TILDE AND MACRON
+022e LATIN CAPITAL LETTER O WITH DOT ABOVE
+022f LATIN SMALL LETTER O WITH DOT ABOVE
+0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232 LATIN CAPITAL LETTER Y WITH MACRON
+0233 LATIN SMALL LETTER Y WITH MACRON
+0250 LATIN SMALL LETTER TURNED A
+0251 LATIN SMALL LETTER ALPHA
+0252 LATIN SMALL LETTER TURNED ALPHA
+0253 LATIN SMALL LETTER B WITH HOOK
+0254 LATIN SMALL LETTER OPEN O
+0255 LATIN SMALL LETTER C WITH CURL
+0256 LATIN SMALL LETTER D WITH TAIL
+0257 LATIN SMALL LETTER D WITH HOOK
+0258 LATIN SMALL LETTER REVERSED E
+0259 LATIN SMALL LETTER SCHWA
+025a LATIN SMALL LETTER SCHWA WITH HOOK
+025b LATIN SMALL LETTER OPEN E
+025c LATIN SMALL LETTER REVERSED OPEN E
+025d LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025e LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025f LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260 LATIN SMALL LETTER G WITH HOOK
+0261 LATIN SMALL LETTER SCRIPT G
+0262 LATIN LETTER SMALL CAPITAL G
+0263 LATIN SMALL LETTER GAMMA
+0264 LATIN SMALL LETTER RAMS HORN
+0265 LATIN SMALL LETTER TURNED H
+0266 LATIN SMALL LETTER H WITH HOOK
+0267 LATIN SMALL LETTER HENG WITH HOOK
+0268 LATIN SMALL LETTER I WITH STROKE
+0269 LATIN SMALL LETTER IOTA
+026a LATIN LETTER SMALL CAPITAL I
+026b LATIN SMALL LETTER L WITH MIDDLE TILDE
+026c LATIN SMALL LETTER L WITH BELT
+026d LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026e LATIN SMALL LETTER LEZH
+026f LATIN SMALL LETTER TURNED M
+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271 LATIN SMALL LETTER M WITH HOOK
+0272 LATIN SMALL LETTER N WITH LEFT HOOK
+0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274 LATIN LETTER SMALL CAPITAL N
+0275 LATIN SMALL LETTER BARRED O
+0276 LATIN LETTER SMALL CAPITAL OE
+0277 LATIN SMALL LETTER CLOSED OMEGA
+0278 LATIN SMALL LETTER PHI
+0279 LATIN SMALL LETTER TURNED R
+027a LATIN SMALL LETTER TURNED R WITH LONG LEG
+027b LATIN SMALL LETTER TURNED R WITH HOOK
+027c LATIN SMALL LETTER R WITH LONG LEG
+027d LATIN SMALL LETTER R WITH TAIL
+027e LATIN SMALL LETTER R WITH FISHHOOK
+027f LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280 LATIN LETTER SMALL CAPITAL R
+0281 LATIN LETTER SMALL CAPITAL INVERTED R
+0282 LATIN SMALL LETTER S WITH HOOK
+0283 LATIN SMALL LETTER ESH
+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285 LATIN SMALL LETTER SQUAT REVERSED ESH
+0286 LATIN SMALL LETTER ESH WITH CURL
+0287 LATIN SMALL LETTER TURNED T
+0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289 LATIN SMALL LETTER U BAR
+028a LATIN SMALL LETTER UPSILON
+028b LATIN SMALL LETTER V WITH HOOK
+028c LATIN SMALL LETTER TURNED V
+028d LATIN SMALL LETTER TURNED W
+028e LATIN SMALL LETTER TURNED Y
+028f LATIN LETTER SMALL CAPITAL Y
+0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291 LATIN SMALL LETTER Z WITH CURL
+0292 LATIN SMALL LETTER EZH
+0293 LATIN SMALL LETTER EZH WITH CURL
+0294 LATIN LETTER GLOTTAL STOP
+0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296 LATIN LETTER INVERTED GLOTTAL STOP
+0297 LATIN LETTER STRETCHED C
+0298 LATIN LETTER BILABIAL CLICK
+0299 LATIN LETTER SMALL CAPITAL B
+029a LATIN SMALL LETTER CLOSED OPEN E
+029b LATIN LETTER SMALL CAPITAL G WITH HOOK
+029c LATIN LETTER SMALL CAPITAL H
+029d LATIN SMALL LETTER J WITH CROSSED-TAIL
+029e LATIN SMALL LETTER TURNED K
+029f LATIN LETTER SMALL CAPITAL L
+02a0 LATIN SMALL LETTER Q WITH HOOK
+02a1 LATIN LETTER GLOTTAL STOP WITH STROKE
+02a2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02a3 LATIN SMALL LETTER DZ DIGRAPH
+02a4 LATIN SMALL LETTER DEZH DIGRAPH
+02a5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02a6 LATIN SMALL LETTER TS DIGRAPH
+02a7 LATIN SMALL LETTER TESH DIGRAPH
+02a8 LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02a9 LATIN SMALL LETTER FENG DIGRAPH
+02aa LATIN SMALL LETTER LS DIGRAPH
+02ab LATIN SMALL LETTER LZ DIGRAPH
+02ac LATIN LETTER BILABIAL PERCUSSIVE
+02ad LATIN LETTER BIDENTAL PERCUSSIVE
+02b0 MODIFIER LETTER SMALL H
+02b1 MODIFIER LETTER SMALL H WITH HOOK
+02b2 MODIFIER LETTER SMALL J
+02b3 MODIFIER LETTER SMALL R
+02b4 MODIFIER LETTER SMALL TURNED R
+02b5 MODIFIER LETTER SMALL TURNED R WITH HOOK
+02b6 MODIFIER LETTER SMALL CAPITAL INVERTED R
+02b7 MODIFIER LETTER SMALL W
+02b8 MODIFIER LETTER SMALL Y
+02b9 MODIFIER LETTER PRIME
+02ba MODIFIER LETTER DOUBLE PRIME
+02bb MODIFIER LETTER TURNED COMMA
+02bc MODIFIER LETTER APOSTROPHE
+02bd MODIFIER LETTER REVERSED COMMA
+02be MODIFIER LETTER RIGHT HALF RING
+02bf MODIFIER LETTER LEFT HALF RING
+02c0 MODIFIER LETTER GLOTTAL STOP
+02c1 MODIFIER LETTER REVERSED GLOTTAL STOP
+02c2 MODIFIER LETTER LEFT ARROWHEAD
+02c3 MODIFIER LETTER RIGHT ARROWHEAD
+02c4 MODIFIER LETTER UP ARROWHEAD
+02c5 MODIFIER LETTER DOWN ARROWHEAD
+02c6 MODIFIER LETTER CIRCUMFLEX ACCENT
+02c7 CARON
+02c8 MODIFIER LETTER VERTICAL LINE
+02c9 MODIFIER LETTER MACRON
+02ca MODIFIER LETTER ACUTE ACCENT
+02cb MODIFIER LETTER GRAVE ACCENT
+02cc MODIFIER LETTER LOW VERTICAL LINE
+02cd MODIFIER LETTER LOW MACRON
+02ce MODIFIER LETTER LOW GRAVE ACCENT
+02cf MODIFIER LETTER LOW ACUTE ACCENT
+02d0 MODIFIER LETTER TRIANGULAR COLON
+02d1 MODIFIER LETTER HALF TRIANGULAR COLON
+02d2 MODIFIER LETTER CENTRED RIGHT HALF RING
+02d3 MODIFIER LETTER CENTRED LEFT HALF RING
+02d4 MODIFIER LETTER UP TACK
+02d5 MODIFIER LETTER DOWN TACK
+02d6 MODIFIER LETTER PLUS SIGN
+02d7 MODIFIER LETTER MINUS SIGN
+02d8 BREVE
+02d9 DOT ABOVE
+02da RING ABOVE
+02db OGONEK
+02dc SMALL TILDE
+02dd DOUBLE ACUTE ACCENT
+02de MODIFIER LETTER RHOTIC HOOK
+02df MODIFIER LETTER CROSS ACCENT
+02e0 MODIFIER LETTER SMALL GAMMA
+02e1 MODIFIER LETTER SMALL L
+02e2 MODIFIER LETTER SMALL S
+02e3 MODIFIER LETTER SMALL X
+02e4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02e5 MODIFIER LETTER EXTRA-HIGH TONE BAR
+02e6 MODIFIER LETTER HIGH TONE BAR
+02e7 MODIFIER LETTER MID TONE BAR
+02e8 MODIFIER LETTER LOW TONE BAR
+02e9 MODIFIER LETTER EXTRA-LOW TONE BAR
+02ea MODIFIER LETTER YIN DEPARTING TONE MARK
+02eb MODIFIER LETTER YANG DEPARTING TONE MARK
+02ec MODIFIER LETTER VOICING
+02ed MODIFIER LETTER UNASPIRATED
+02ee MODIFIER LETTER DOUBLE APOSTROPHE
+0300 COMBINING GRAVE ACCENT
+0301 COMBINING ACUTE ACCENT
+0302 COMBINING CIRCUMFLEX ACCENT
+0303 COMBINING TILDE
+0304 COMBINING MACRON
+0305 COMBINING OVERLINE
+0306 COMBINING BREVE
+0307 COMBINING DOT ABOVE
+0308 COMBINING DIAERESIS
+0309 COMBINING HOOK ABOVE
+030a COMBINING RING ABOVE
+030b COMBINING DOUBLE ACUTE ACCENT
+030c COMBINING CARON
+030d COMBINING VERTICAL LINE ABOVE
+030e COMBINING DOUBLE VERTICAL LINE ABOVE
+030f COMBINING DOUBLE GRAVE ACCENT
+0310 COMBINING CANDRABINDU
+0311 COMBINING INVERTED BREVE
+0312 COMBINING TURNED COMMA ABOVE
+0313 COMBINING COMMA ABOVE
+0314 COMBINING REVERSED COMMA ABOVE
+0315 COMBINING COMMA ABOVE RIGHT
+0316 COMBINING GRAVE ACCENT BELOW
+0317 COMBINING ACUTE ACCENT BELOW
+0318 COMBINING LEFT TACK BELOW
+0319 COMBINING RIGHT TACK BELOW
+031a COMBINING LEFT ANGLE ABOVE
+031b COMBINING HORN
+031c COMBINING LEFT HALF RING BELOW
+031d COMBINING UP TACK BELOW
+031e COMBINING DOWN TACK BELOW
+031f COMBINING PLUS SIGN BELOW
+0320 COMBINING MINUS SIGN BELOW
+0321 COMBINING PALATALIZED HOOK BELOW
+0322 COMBINING RETROFLEX HOOK BELOW
+0323 COMBINING DOT BELOW
+0324 COMBINING DIAERESIS BELOW
+0325 COMBINING RING BELOW
+0326 COMBINING COMMA BELOW
+0327 COMBINING CEDILLA
+0328 COMBINING OGONEK
+0329 COMBINING VERTICAL LINE BELOW
+032a COMBINING BRIDGE BELOW
+032b COMBINING INVERTED DOUBLE ARCH BELOW
+032c COMBINING CARON BELOW
+032d COMBINING CIRCUMFLEX ACCENT BELOW
+032e COMBINING BREVE BELOW
+032f COMBINING INVERTED BREVE BELOW
+0330 COMBINING TILDE BELOW
+0331 COMBINING MACRON BELOW
+0332 COMBINING LOW LINE
+0333 COMBINING DOUBLE LOW LINE
+0334 COMBINING TILDE OVERLAY
+0335 COMBINING SHORT STROKE OVERLAY
+0336 COMBINING LONG STROKE OVERLAY
+0337 COMBINING SHORT SOLIDUS OVERLAY
+0338 COMBINING LONG SOLIDUS OVERLAY
+0339 COMBINING RIGHT HALF RING BELOW
+033a COMBINING INVERTED BRIDGE BELOW
+033b COMBINING SQUARE BELOW
+033c COMBINING SEAGULL BELOW
+033d COMBINING X ABOVE
+033e COMBINING VERTICAL TILDE
+033f COMBINING DOUBLE OVERLINE
+0340 COMBINING GRAVE TONE MARK
+0341 COMBINING ACUTE TONE MARK
+0342 COMBINING GREEK PERISPOMENI
+0343 COMBINING GREEK KORONIS
+0344 COMBINING GREEK DIALYTIKA TONOS
+0345 COMBINING GREEK YPOGEGRAMMENI
+0346 COMBINING BRIDGE ABOVE
+0347 COMBINING EQUALS SIGN BELOW
+0348 COMBINING DOUBLE VERTICAL LINE BELOW
+0349 COMBINING LEFT ANGLE BELOW
+034a COMBINING NOT TILDE ABOVE
+034b COMBINING HOMOTHETIC ABOVE
+034c COMBINING ALMOST EQUAL TO ABOVE
+034d COMBINING LEFT RIGHT ARROW BELOW
+034e COMBINING UPWARDS ARROW BELOW
+0360 COMBINING DOUBLE TILDE
+0361 COMBINING DOUBLE INVERTED BREVE
+0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0374 GREEK NUMERAL SIGN
+0375 GREEK LOWER NUMERAL SIGN
+037a GREEK YPOGEGRAMMENI
+037e GREEK QUESTION MARK
+0384 GREEK TONOS
+0385 GREEK DIALYTIKA TONOS
+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 GREEK ANO TELEIA
+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389 GREEK CAPITAL LETTER ETA WITH TONOS
+038a GREEK CAPITAL LETTER IOTA WITH TONOS
+038c GREEK CAPITAL LETTER OMICRON WITH TONOS
+038e GREEK CAPITAL LETTER UPSILON WITH TONOS
+038f GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391 GREEK CAPITAL LETTER ALPHA
+0392 GREEK CAPITAL LETTER BETA
+0393 GREEK CAPITAL LETTER GAMMA
+0394 GREEK CAPITAL LETTER DELTA
+0395 GREEK CAPITAL LETTER EPSILON
+0396 GREEK CAPITAL LETTER ZETA
+0397 GREEK CAPITAL LETTER ETA
+0398 GREEK CAPITAL LETTER THETA
+0399 GREEK CAPITAL LETTER IOTA
+039a GREEK CAPITAL LETTER KAPPA
+039b GREEK CAPITAL LETTER LAMDA
+039c GREEK CAPITAL LETTER MU
+039d GREEK CAPITAL LETTER NU
+039e GREEK CAPITAL LETTER XI
+039f GREEK CAPITAL LETTER OMICRON
+03a0 GREEK CAPITAL LETTER PI
+03a1 GREEK CAPITAL LETTER RHO
+03a3 GREEK CAPITAL LETTER SIGMA
+03a4 GREEK CAPITAL LETTER TAU
+03a5 GREEK CAPITAL LETTER UPSILON
+03a6 GREEK CAPITAL LETTER PHI
+03a7 GREEK CAPITAL LETTER CHI
+03a8 GREEK CAPITAL LETTER PSI
+03a9 GREEK CAPITAL LETTER OMEGA
+03aa GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03ab GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03ac GREEK SMALL LETTER ALPHA WITH TONOS
+03ad GREEK SMALL LETTER EPSILON WITH TONOS
+03ae GREEK SMALL LETTER ETA WITH TONOS
+03af GREEK SMALL LETTER IOTA WITH TONOS
+03b0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03b1 GREEK SMALL LETTER ALPHA
+03b2 GREEK SMALL LETTER BETA
+03b3 GREEK SMALL LETTER GAMMA
+03b4 GREEK SMALL LETTER DELTA
+03b5 GREEK SMALL LETTER EPSILON
+03b6 GREEK SMALL LETTER ZETA
+03b7 GREEK SMALL LETTER ETA
+03b8 GREEK SMALL LETTER THETA
+03b9 GREEK SMALL LETTER IOTA
+03ba GREEK SMALL LETTER KAPPA
+03bb GREEK SMALL LETTER LAMDA
+03bc GREEK SMALL LETTER MU
+03bd GREEK SMALL LETTER NU
+03be GREEK SMALL LETTER XI
+03bf GREEK SMALL LETTER OMICRON
+03c0 GREEK SMALL LETTER PI
+03c1 GREEK SMALL LETTER RHO
+03c2 GREEK SMALL LETTER FINAL SIGMA
+03c3 GREEK SMALL LETTER SIGMA
+03c4 GREEK SMALL LETTER TAU
+03c5 GREEK SMALL LETTER UPSILON
+03c6 GREEK SMALL LETTER PHI
+03c7 GREEK SMALL LETTER CHI
+03c8 GREEK SMALL LETTER PSI
+03c9 GREEK SMALL LETTER OMEGA
+03ca GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03cb GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03cc GREEK SMALL LETTER OMICRON WITH TONOS
+03cd GREEK SMALL LETTER UPSILON WITH TONOS
+03ce GREEK SMALL LETTER OMEGA WITH TONOS
+03d0 GREEK BETA SYMBOL
+03d1 GREEK THETA SYMBOL
+03d2 GREEK UPSILON WITH HOOK SYMBOL
+03d3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03d4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03d5 GREEK PHI SYMBOL
+03d6 GREEK PI SYMBOL
+03d7 GREEK KAI SYMBOL
+03da GREEK LETTER STIGMA
+03db GREEK SMALL LETTER STIGMA
+03dc GREEK LETTER DIGAMMA
+03dd GREEK SMALL LETTER DIGAMMA
+03de GREEK LETTER KOPPA
+03df GREEK SMALL LETTER KOPPA
+03e0 GREEK LETTER SAMPI
+03e1 GREEK SMALL LETTER SAMPI
+03e2 COPTIC CAPITAL LETTER SHEI
+03e3 COPTIC SMALL LETTER SHEI
+03e4 COPTIC CAPITAL LETTER FEI
+03e5 COPTIC SMALL LETTER FEI
+03e6 COPTIC CAPITAL LETTER KHEI
+03e7 COPTIC SMALL LETTER KHEI
+03e8 COPTIC CAPITAL LETTER HORI
+03e9 COPTIC SMALL LETTER HORI
+03ea COPTIC CAPITAL LETTER GANGIA
+03eb COPTIC SMALL LETTER GANGIA
+03ec COPTIC CAPITAL LETTER SHIMA
+03ed COPTIC SMALL LETTER SHIMA
+03ee COPTIC CAPITAL LETTER DEI
+03ef COPTIC SMALL LETTER DEI
+03f0 GREEK KAPPA SYMBOL
+03f1 GREEK RHO SYMBOL
+03f2 GREEK LUNATE SIGMA SYMBOL
+03f3 GREEK LETTER YOT
+0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401 CYRILLIC CAPITAL LETTER IO
+0402 CYRILLIC CAPITAL LETTER DJE
+0403 CYRILLIC CAPITAL LETTER GJE
+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405 CYRILLIC CAPITAL LETTER DZE
+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407 CYRILLIC CAPITAL LETTER YI
+0408 CYRILLIC CAPITAL LETTER JE
+0409 CYRILLIC CAPITAL LETTER LJE
+040a CYRILLIC CAPITAL LETTER NJE
+040b CYRILLIC CAPITAL LETTER TSHE
+040c CYRILLIC CAPITAL LETTER KJE
+040d CYRILLIC CAPITAL LETTER I WITH GRAVE
+040e CYRILLIC CAPITAL LETTER SHORT U
+040f CYRILLIC CAPITAL LETTER DZHE
+0410 CYRILLIC CAPITAL LETTER A
+0411 CYRILLIC CAPITAL LETTER BE
+0412 CYRILLIC CAPITAL LETTER VE
+0413 CYRILLIC CAPITAL LETTER GHE
+0414 CYRILLIC CAPITAL LETTER DE
+0415 CYRILLIC CAPITAL LETTER IE
+0416 CYRILLIC CAPITAL LETTER ZHE
+0417 CYRILLIC CAPITAL LETTER ZE
+0418 CYRILLIC CAPITAL LETTER I
+0419 CYRILLIC CAPITAL LETTER SHORT I
+041a CYRILLIC CAPITAL LETTER KA
+041b CYRILLIC CAPITAL LETTER EL
+041c CYRILLIC CAPITAL LETTER EM
+041d CYRILLIC CAPITAL LETTER EN
+041e CYRILLIC CAPITAL LETTER O
+041f CYRILLIC CAPITAL LETTER PE
+0420 CYRILLIC CAPITAL LETTER ER
+0421 CYRILLIC CAPITAL LETTER ES
+0422 CYRILLIC CAPITAL LETTER TE
+0423 CYRILLIC CAPITAL LETTER U
+0424 CYRILLIC CAPITAL LETTER EF
+0425 CYRILLIC CAPITAL LETTER HA
+0426 CYRILLIC CAPITAL LETTER TSE
+0427 CYRILLIC CAPITAL LETTER CHE
+0428 CYRILLIC CAPITAL LETTER SHA
+0429 CYRILLIC CAPITAL LETTER SHCHA
+042a CYRILLIC CAPITAL LETTER HARD SIGN
+042b CYRILLIC CAPITAL LETTER YERU
+042c CYRILLIC CAPITAL LETTER SOFT SIGN
+042d CYRILLIC CAPITAL LETTER E
+042e CYRILLIC CAPITAL LETTER YU
+042f CYRILLIC CAPITAL LETTER YA
+0430 CYRILLIC SMALL LETTER A
+0431 CYRILLIC SMALL LETTER BE
+0432 CYRILLIC SMALL LETTER VE
+0433 CYRILLIC SMALL LETTER GHE
+0434 CYRILLIC SMALL LETTER DE
+0435 CYRILLIC SMALL LETTER IE
+0436 CYRILLIC SMALL LETTER ZHE
+0437 CYRILLIC SMALL LETTER ZE
+0438 CYRILLIC SMALL LETTER I
+0439 CYRILLIC SMALL LETTER SHORT I
+043a CYRILLIC SMALL LETTER KA
+043b CYRILLIC SMALL LETTER EL
+043c CYRILLIC SMALL LETTER EM
+043d CYRILLIC SMALL LETTER EN
+043e CYRILLIC SMALL LETTER O
+043f CYRILLIC SMALL LETTER PE
+0440 CYRILLIC SMALL LETTER ER
+0441 CYRILLIC SMALL LETTER ES
+0442 CYRILLIC SMALL LETTER TE
+0443 CYRILLIC SMALL LETTER U
+0444 CYRILLIC SMALL LETTER EF
+0445 CYRILLIC SMALL LETTER HA
+0446 CYRILLIC SMALL LETTER TSE
+0447 CYRILLIC SMALL LETTER CHE
+0448 CYRILLIC SMALL LETTER SHA
+0449 CYRILLIC SMALL LETTER SHCHA
+044a CYRILLIC SMALL LETTER HARD SIGN
+044b CYRILLIC SMALL LETTER YERU
+044c CYRILLIC SMALL LETTER SOFT SIGN
+044d CYRILLIC SMALL LETTER E
+044e CYRILLIC SMALL LETTER YU
+044f CYRILLIC SMALL LETTER YA
+0450 CYRILLIC SMALL LETTER IE WITH GRAVE
+0451 CYRILLIC SMALL LETTER IO
+0452 CYRILLIC SMALL LETTER DJE
+0453 CYRILLIC SMALL LETTER GJE
+0454 CYRILLIC SMALL LETTER UKRAINIAN IE
+0455 CYRILLIC SMALL LETTER DZE
+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457 CYRILLIC SMALL LETTER YI
+0458 CYRILLIC SMALL LETTER JE
+0459 CYRILLIC SMALL LETTER LJE
+045a CYRILLIC SMALL LETTER NJE
+045b CYRILLIC SMALL LETTER TSHE
+045c CYRILLIC SMALL LETTER KJE
+045d CYRILLIC SMALL LETTER I WITH GRAVE
+045e CYRILLIC SMALL LETTER SHORT U
+045f CYRILLIC SMALL LETTER DZHE
+0460 CYRILLIC CAPITAL LETTER OMEGA
+0461 CYRILLIC SMALL LETTER OMEGA
+0462 CYRILLIC CAPITAL LETTER YAT
+0463 CYRILLIC SMALL LETTER YAT
+0464 CYRILLIC CAPITAL LETTER IOTIFIED E
+0465 CYRILLIC SMALL LETTER IOTIFIED E
+0466 CYRILLIC CAPITAL LETTER LITTLE YUS
+0467 CYRILLIC SMALL LETTER LITTLE YUS
+0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046a CYRILLIC CAPITAL LETTER BIG YUS
+046b CYRILLIC SMALL LETTER BIG YUS
+046c CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046d CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046e CYRILLIC CAPITAL LETTER KSI
+046f CYRILLIC SMALL LETTER KSI
+0470 CYRILLIC CAPITAL LETTER PSI
+0471 CYRILLIC SMALL LETTER PSI
+0472 CYRILLIC CAPITAL LETTER FITA
+0473 CYRILLIC SMALL LETTER FITA
+0474 CYRILLIC CAPITAL LETTER IZHITSA
+0475 CYRILLIC SMALL LETTER IZHITSA
+0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478 CYRILLIC CAPITAL LETTER UK
+0479 CYRILLIC SMALL LETTER UK
+047a CYRILLIC CAPITAL LETTER ROUND OMEGA
+047b CYRILLIC SMALL LETTER ROUND OMEGA
+047c CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047d CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047e CYRILLIC CAPITAL LETTER OT
+047f CYRILLIC SMALL LETTER OT
+0480 CYRILLIC CAPITAL LETTER KOPPA
+0481 CYRILLIC SMALL LETTER KOPPA
+0482 CYRILLIC THOUSANDS SIGN
+0483 COMBINING CYRILLIC TITLO
+0484 COMBINING CYRILLIC PALATALIZATION
+0485 COMBINING CYRILLIC DASIA PNEUMATA
+0486 COMBINING CYRILLIC PSILI PNEUMATA
+0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489 COMBINING CYRILLIC MILLIONS SIGN
+048c CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048d CYRILLIC SMALL LETTER SEMISOFT SIGN
+048e CYRILLIC CAPITAL LETTER ER WITH TICK
+048f CYRILLIC SMALL LETTER ER WITH TICK
+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493 CYRILLIC SMALL LETTER GHE WITH STROKE
+0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049a CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049b CYRILLIC SMALL LETTER KA WITH DESCENDER
+049c CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049d CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049e CYRILLIC CAPITAL LETTER KA WITH STROKE
+049f CYRILLIC SMALL LETTER KA WITH STROKE
+04a0 CYRILLIC CAPITAL LETTER BASHKIR KA
+04a1 CYRILLIC SMALL LETTER BASHKIR KA
+04a2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04a3 CYRILLIC SMALL LETTER EN WITH DESCENDER
+04a4 CYRILLIC CAPITAL LIGATURE EN GHE
+04a5 CYRILLIC SMALL LIGATURE EN GHE
+04a6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04a7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04a8 CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04a9 CYRILLIC SMALL LETTER ABKHASIAN HA
+04aa CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04ab CYRILLIC SMALL LETTER ES WITH DESCENDER
+04ac CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04ad CYRILLIC SMALL LETTER TE WITH DESCENDER
+04ae CYRILLIC CAPITAL LETTER STRAIGHT U
+04af CYRILLIC SMALL LETTER STRAIGHT U
+04b0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04b1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04b2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04b3 CYRILLIC SMALL LETTER HA WITH DESCENDER
+04b4 CYRILLIC CAPITAL LIGATURE TE TSE
+04b5 CYRILLIC SMALL LIGATURE TE TSE
+04b6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04b7 CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04b8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04b9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04ba CYRILLIC CAPITAL LETTER SHHA
+04bb CYRILLIC SMALL LETTER SHHA
+04bc CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04bd CYRILLIC SMALL LETTER ABKHASIAN CHE
+04be CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04bf CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04c0 CYRILLIC LETTER PALOCHKA
+04c1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04c2 CYRILLIC SMALL LETTER ZHE WITH BREVE
+04c3 CYRILLIC CAPITAL LETTER KA WITH HOOK
+04c4 CYRILLIC SMALL LETTER KA WITH HOOK
+04c7 CYRILLIC CAPITAL LETTER EN WITH HOOK
+04c8 CYRILLIC SMALL LETTER EN WITH HOOK
+04cb CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04cc CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04d0 CYRILLIC CAPITAL LETTER A WITH BREVE
+04d1 CYRILLIC SMALL LETTER A WITH BREVE
+04d2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04d3 CYRILLIC SMALL LETTER A WITH DIAERESIS
+04d4 CYRILLIC CAPITAL LIGATURE A IE
+04d5 CYRILLIC SMALL LIGATURE A IE
+04d6 CYRILLIC CAPITAL LETTER IE WITH BREVE
+04d7 CYRILLIC SMALL LETTER IE WITH BREVE
+04d8 CYRILLIC CAPITAL LETTER SCHWA
+04d9 CYRILLIC SMALL LETTER SCHWA
+04da CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04db CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04dc CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04dd CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04de CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04df CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04e0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04e1 CYRILLIC SMALL LETTER ABKHASIAN DZE
+04e2 CYRILLIC CAPITAL LETTER I WITH MACRON
+04e3 CYRILLIC SMALL LETTER I WITH MACRON
+04e4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04e5 CYRILLIC SMALL LETTER I WITH DIAERESIS
+04e6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04e7 CYRILLIC SMALL LETTER O WITH DIAERESIS
+04e8 CYRILLIC CAPITAL LETTER BARRED O
+04e9 CYRILLIC SMALL LETTER BARRED O
+04ea CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04eb CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04ec CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ed CYRILLIC SMALL LETTER E WITH DIAERESIS
+04ee CYRILLIC CAPITAL LETTER U WITH MACRON
+04ef CYRILLIC SMALL LETTER U WITH MACRON
+04f0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04f1 CYRILLIC SMALL LETTER U WITH DIAERESIS
+04f2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04f3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04f4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04f5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04f8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04f9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0531 ARMENIAN CAPITAL LETTER AYB
+0532 ARMENIAN CAPITAL LETTER BEN
+0533 ARMENIAN CAPITAL LETTER GIM
+0534 ARMENIAN CAPITAL LETTER DA
+0535 ARMENIAN CAPITAL LETTER ECH
+0536 ARMENIAN CAPITAL LETTER ZA
+0537 ARMENIAN CAPITAL LETTER EH
+0538 ARMENIAN CAPITAL LETTER ET
+0539 ARMENIAN CAPITAL LETTER TO
+053a ARMENIAN CAPITAL LETTER ZHE
+053b ARMENIAN CAPITAL LETTER INI
+053c ARMENIAN CAPITAL LETTER LIWN
+053d ARMENIAN CAPITAL LETTER XEH
+053e ARMENIAN CAPITAL LETTER CA
+053f ARMENIAN CAPITAL LETTER KEN
+0540 ARMENIAN CAPITAL LETTER HO
+0541 ARMENIAN CAPITAL LETTER JA
+0542 ARMENIAN CAPITAL LETTER GHAD
+0543 ARMENIAN CAPITAL LETTER CHEH
+0544 ARMENIAN CAPITAL LETTER MEN
+0545 ARMENIAN CAPITAL LETTER YI
+0546 ARMENIAN CAPITAL LETTER NOW
+0547 ARMENIAN CAPITAL LETTER SHA
+0548 ARMENIAN CAPITAL LETTER VO
+0549 ARMENIAN CAPITAL LETTER CHA
+054a ARMENIAN CAPITAL LETTER PEH
+054b ARMENIAN CAPITAL LETTER JHEH
+054c ARMENIAN CAPITAL LETTER RA
+054d ARMENIAN CAPITAL LETTER SEH
+054e ARMENIAN CAPITAL LETTER VEW
+054f ARMENIAN CAPITAL LETTER TIWN
+0550 ARMENIAN CAPITAL LETTER REH
+0551 ARMENIAN CAPITAL LETTER CO
+0552 ARMENIAN CAPITAL LETTER YIWN
+0553 ARMENIAN CAPITAL LETTER PIWR
+0554 ARMENIAN CAPITAL LETTER KEH
+0555 ARMENIAN CAPITAL LETTER OH
+0556 ARMENIAN CAPITAL LETTER FEH
+0559 ARMENIAN MODIFIER LETTER LEFT HALF RING
+055a ARMENIAN APOSTROPHE
+055b ARMENIAN EMPHASIS MARK
+055c ARMENIAN EXCLAMATION MARK
+055d ARMENIAN COMMA
+055e ARMENIAN QUESTION MARK
+055f ARMENIAN ABBREVIATION MARK
+0561 ARMENIAN SMALL LETTER AYB
+0562 ARMENIAN SMALL LETTER BEN
+0563 ARMENIAN SMALL LETTER GIM
+0564 ARMENIAN SMALL LETTER DA
+0565 ARMENIAN SMALL LETTER ECH
+0566 ARMENIAN SMALL LETTER ZA
+0567 ARMENIAN SMALL LETTER EH
+0568 ARMENIAN SMALL LETTER ET
+0569 ARMENIAN SMALL LETTER TO
+056a ARMENIAN SMALL LETTER ZHE
+056b ARMENIAN SMALL LETTER INI
+056c ARMENIAN SMALL LETTER LIWN
+056d ARMENIAN SMALL LETTER XEH
+056e ARMENIAN SMALL LETTER CA
+056f ARMENIAN SMALL LETTER KEN
+0570 ARMENIAN SMALL LETTER HO
+0571 ARMENIAN SMALL LETTER JA
+0572 ARMENIAN SMALL LETTER GHAD
+0573 ARMENIAN SMALL LETTER CHEH
+0574 ARMENIAN SMALL LETTER MEN
+0575 ARMENIAN SMALL LETTER YI
+0576 ARMENIAN SMALL LETTER NOW
+0577 ARMENIAN SMALL LETTER SHA
+0578 ARMENIAN SMALL LETTER VO
+0579 ARMENIAN SMALL LETTER CHA
+057a ARMENIAN SMALL LETTER PEH
+057b ARMENIAN SMALL LETTER JHEH
+057c ARMENIAN SMALL LETTER RA
+057d ARMENIAN SMALL LETTER SEH
+057e ARMENIAN SMALL LETTER VEW
+057f ARMENIAN SMALL LETTER TIWN
+0580 ARMENIAN SMALL LETTER REH
+0581 ARMENIAN SMALL LETTER CO
+0582 ARMENIAN SMALL LETTER YIWN
+0583 ARMENIAN SMALL LETTER PIWR
+0584 ARMENIAN SMALL LETTER KEH
+0585 ARMENIAN SMALL LETTER OH
+0586 ARMENIAN SMALL LETTER FEH
+0587 ARMENIAN SMALL LIGATURE ECH YIWN
+0589 ARMENIAN FULL STOP
+058a ARMENIAN HYPHEN
+0591 HEBREW ACCENT ETNAHTA
+0592 HEBREW ACCENT SEGOL
+0593 HEBREW ACCENT SHALSHELET
+0594 HEBREW ACCENT ZAQEF QATAN
+0595 HEBREW ACCENT ZAQEF GADOL
+0596 HEBREW ACCENT TIPEHA
+0597 HEBREW ACCENT REVIA
+0598 HEBREW ACCENT ZARQA
+0599 HEBREW ACCENT PASHTA
+059a HEBREW ACCENT YETIV
+059b HEBREW ACCENT TEVIR
+059c HEBREW ACCENT GERESH
+059d HEBREW ACCENT GERESH MUQDAM
+059e HEBREW ACCENT GERSHAYIM
+059f HEBREW ACCENT QARNEY PARA
+05a0 HEBREW ACCENT TELISHA GEDOLA
+05a1 HEBREW ACCENT PAZER
+05a3 HEBREW ACCENT MUNAH
+05a4 HEBREW ACCENT MAHAPAKH
+05a5 HEBREW ACCENT MERKHA
+05a6 HEBREW ACCENT MERKHA KEFULA
+05a7 HEBREW ACCENT DARGA
+05a8 HEBREW ACCENT QADMA
+05a9 HEBREW ACCENT TELISHA QETANA
+05aa HEBREW ACCENT YERAH BEN YOMO
+05ab HEBREW ACCENT OLE
+05ac HEBREW ACCENT ILUY
+05ad HEBREW ACCENT DEHI
+05ae HEBREW ACCENT ZINOR
+05af HEBREW MARK MASORA CIRCLE
+05b0 HEBREW POINT SHEVA
+05b1 HEBREW POINT HATAF SEGOL
+05b2 HEBREW POINT HATAF PATAH
+05b3 HEBREW POINT HATAF QAMATS
+05b4 HEBREW POINT HIRIQ
+05b5 HEBREW POINT TSERE
+05b6 HEBREW POINT SEGOL
+05b7 HEBREW POINT PATAH
+05b8 HEBREW POINT QAMATS
+05b9 HEBREW POINT HOLAM
+05bb HEBREW POINT QUBUTS
+05bc HEBREW POINT DAGESH OR MAPIQ
+05bd HEBREW POINT METEG
+05be HEBREW PUNCTUATION MAQAF
+05bf HEBREW POINT RAFE
+05c0 HEBREW PUNCTUATION PASEQ
+05c1 HEBREW POINT SHIN DOT
+05c2 HEBREW POINT SIN DOT
+05c3 HEBREW PUNCTUATION SOF PASUQ
+05c4 HEBREW MARK UPPER DOT
+05d0 HEBREW LETTER ALEF
+05d1 HEBREW LETTER BET
+05d2 HEBREW LETTER GIMEL
+05d3 HEBREW LETTER DALET
+05d4 HEBREW LETTER HE
+05d5 HEBREW LETTER VAV
+05d6 HEBREW LETTER ZAYIN
+05d7 HEBREW LETTER HET
+05d8 HEBREW LETTER TET
+05d9 HEBREW LETTER YOD
+05da HEBREW LETTER FINAL KAF
+05db HEBREW LETTER KAF
+05dc HEBREW LETTER LAMED
+05dd HEBREW LETTER FINAL MEM
+05de HEBREW LETTER MEM
+05df HEBREW LETTER FINAL NUN
+05e0 HEBREW LETTER NUN
+05e1 HEBREW LETTER SAMEKH
+05e2 HEBREW LETTER AYIN
+05e3 HEBREW LETTER FINAL PE
+05e4 HEBREW LETTER PE
+05e5 HEBREW LETTER FINAL TSADI
+05e6 HEBREW LETTER TSADI
+05e7 HEBREW LETTER QOF
+05e8 HEBREW LETTER RESH
+05e9 HEBREW LETTER SHIN
+05ea HEBREW LETTER TAV
+05f0 HEBREW LIGATURE YIDDISH DOUBLE VAV
+05f1 HEBREW LIGATURE YIDDISH VAV YOD
+05f2 HEBREW LIGATURE YIDDISH DOUBLE YOD
+05f3 HEBREW PUNCTUATION GERESH
+05f4 HEBREW PUNCTUATION GERSHAYIM
+060c ARABIC COMMA
+061b ARABIC SEMICOLON
+061f ARABIC QUESTION MARK
+0621 ARABIC LETTER HAMZA
+0622 ARABIC LETTER ALEF WITH MADDA ABOVE
+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624 ARABIC LETTER WAW WITH HAMZA ABOVE
+0625 ARABIC LETTER ALEF WITH HAMZA BELOW
+0626 ARABIC LETTER YEH WITH HAMZA ABOVE
+0627 ARABIC LETTER ALEF
+0628 ARABIC LETTER BEH
+0629 ARABIC LETTER TEH MARBUTA
+062a ARABIC LETTER TEH
+062b ARABIC LETTER THEH
+062c ARABIC LETTER JEEM
+062d ARABIC LETTER HAH
+062e ARABIC LETTER KHAH
+062f ARABIC LETTER DAL
+0630 ARABIC LETTER THAL
+0631 ARABIC LETTER REH
+0632 ARABIC LETTER ZAIN
+0633 ARABIC LETTER SEEN
+0634 ARABIC LETTER SHEEN
+0635 ARABIC LETTER SAD
+0636 ARABIC LETTER DAD
+0637 ARABIC LETTER TAH
+0638 ARABIC LETTER ZAH
+0639 ARABIC LETTER AIN
+063a ARABIC LETTER GHAIN
+0640 ARABIC TATWEEL
+0641 ARABIC LETTER FEH
+0642 ARABIC LETTER QAF
+0643 ARABIC LETTER KAF
+0644 ARABIC LETTER LAM
+0645 ARABIC LETTER MEEM
+0646 ARABIC LETTER NOON
+0647 ARABIC LETTER HEH
+0648 ARABIC LETTER WAW
+0649 ARABIC LETTER ALEF MAKSURA
+064a ARABIC LETTER YEH
+064b ARABIC FATHATAN
+064c ARABIC DAMMATAN
+064d ARABIC KASRATAN
+064e ARABIC FATHA
+064f ARABIC DAMMA
+0650 ARABIC KASRA
+0651 ARABIC SHADDA
+0652 ARABIC SUKUN
+0653 ARABIC MADDAH ABOVE
+0654 ARABIC HAMZA ABOVE
+0655 ARABIC HAMZA BELOW
+0660 ARABIC-INDIC DIGIT ZERO
+0661 ARABIC-INDIC DIGIT ONE
+0662 ARABIC-INDIC DIGIT TWO
+0663 ARABIC-INDIC DIGIT THREE
+0664 ARABIC-INDIC DIGIT FOUR
+0665 ARABIC-INDIC DIGIT FIVE
+0666 ARABIC-INDIC DIGIT SIX
+0667 ARABIC-INDIC DIGIT SEVEN
+0668 ARABIC-INDIC DIGIT EIGHT
+0669 ARABIC-INDIC DIGIT NINE
+066a ARABIC PERCENT SIGN
+066b ARABIC DECIMAL SEPARATOR
+066c ARABIC THOUSANDS SEPARATOR
+066d ARABIC FIVE POINTED STAR
+0670 ARABIC LETTER SUPERSCRIPT ALEF
+0671 ARABIC LETTER ALEF WASLA
+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0674 ARABIC LETTER HIGH HAMZA
+0675 ARABIC LETTER HIGH HAMZA ALEF
+0676 ARABIC LETTER HIGH HAMZA WAW
+0677 ARABIC LETTER U WITH HAMZA ABOVE
+0678 ARABIC LETTER HIGH HAMZA YEH
+0679 ARABIC LETTER TTEH
+067a ARABIC LETTER TTEHEH
+067b ARABIC LETTER BEEH
+067c ARABIC LETTER TEH WITH RING
+067d ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067e ARABIC LETTER PEH
+067f ARABIC LETTER TEHEH
+0680 ARABIC LETTER BEHEH
+0681 ARABIC LETTER HAH WITH HAMZA ABOVE
+0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0683 ARABIC LETTER NYEH
+0684 ARABIC LETTER DYEH
+0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0686 ARABIC LETTER TCHEH
+0687 ARABIC LETTER TCHEHEH
+0688 ARABIC LETTER DDAL
+0689 ARABIC LETTER DAL WITH RING
+068a ARABIC LETTER DAL WITH DOT BELOW
+068b ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068c ARABIC LETTER DAHAL
+068d ARABIC LETTER DDAHAL
+068e ARABIC LETTER DUL
+068f ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+0691 ARABIC LETTER RREH
+0692 ARABIC LETTER REH WITH SMALL V
+0693 ARABIC LETTER REH WITH RING
+0694 ARABIC LETTER REH WITH DOT BELOW
+0695 ARABIC LETTER REH WITH SMALL V BELOW
+0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697 ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698 ARABIC LETTER JEH
+0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE
+069a ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069b ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069c ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+069d ARABIC LETTER SAD WITH TWO DOTS BELOW
+069e ARABIC LETTER SAD WITH THREE DOTS ABOVE
+069f ARABIC LETTER TAH WITH THREE DOTS ABOVE
+06a0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06a1 ARABIC LETTER DOTLESS FEH
+06a2 ARABIC LETTER FEH WITH DOT MOVED BELOW
+06a3 ARABIC LETTER FEH WITH DOT BELOW
+06a4 ARABIC LETTER VEH
+06a5 ARABIC LETTER FEH WITH THREE DOTS BELOW
+06a6 ARABIC LETTER PEHEH
+06a7 ARABIC LETTER QAF WITH DOT ABOVE
+06a8 ARABIC LETTER QAF WITH THREE DOTS ABOVE
+06a9 ARABIC LETTER KEHEH
+06aa ARABIC LETTER SWASH KAF
+06ab ARABIC LETTER KAF WITH RING
+06ac ARABIC LETTER KAF WITH DOT ABOVE
+06ad ARABIC LETTER NG
+06ae ARABIC LETTER KAF WITH THREE DOTS BELOW
+06af ARABIC LETTER GAF
+06b0 ARABIC LETTER GAF WITH RING
+06b1 ARABIC LETTER NGOEH
+06b2 ARABIC LETTER GAF WITH TWO DOTS BELOW
+06b3 ARABIC LETTER GUEH
+06b4 ARABIC LETTER GAF WITH THREE DOTS ABOVE
+06b5 ARABIC LETTER LAM WITH SMALL V
+06b6 ARABIC LETTER LAM WITH DOT ABOVE
+06b7 ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06b8 ARABIC LETTER LAM WITH THREE DOTS BELOW
+06b9 ARABIC LETTER NOON WITH DOT BELOW
+06ba ARABIC LETTER NOON GHUNNA
+06bb ARABIC LETTER RNOON
+06bc ARABIC LETTER NOON WITH RING
+06bd ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06be ARABIC LETTER HEH DOACHASHMEE
+06bf ARABIC LETTER TCHEH WITH DOT ABOVE
+06c0 ARABIC LETTER HEH WITH YEH ABOVE
+06c1 ARABIC LETTER HEH GOAL
+06c2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06c3 ARABIC LETTER TEH MARBUTA GOAL
+06c4 ARABIC LETTER WAW WITH RING
+06c5 ARABIC LETTER KIRGHIZ OE
+06c6 ARABIC LETTER OE
+06c7 ARABIC LETTER U
+06c8 ARABIC LETTER YU
+06c9 ARABIC LETTER KIRGHIZ YU
+06ca ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06cb ARABIC LETTER VE
+06cc ARABIC LETTER FARSI YEH
+06cd ARABIC LETTER YEH WITH TAIL
+06ce ARABIC LETTER YEH WITH SMALL V
+06cf ARABIC LETTER WAW WITH DOT ABOVE
+06d0 ARABIC LETTER E
+06d1 ARABIC LETTER YEH WITH THREE DOTS BELOW
+06d2 ARABIC LETTER YEH BARREE
+06d3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06d4 ARABIC FULL STOP
+06d5 ARABIC LETTER AE
+06d6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06d7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06d8 ARABIC SMALL HIGH MEEM INITIAL FORM
+06d9 ARABIC SMALL HIGH LAM ALEF
+06da ARABIC SMALL HIGH JEEM
+06db ARABIC SMALL HIGH THREE DOTS
+06dc ARABIC SMALL HIGH SEEN
+06dd ARABIC END OF AYAH
+06de ARABIC START OF RUB EL HIZB
+06df ARABIC SMALL HIGH ROUNDED ZERO
+06e0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06e1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06e2 ARABIC SMALL HIGH MEEM ISOLATED FORM
+06e3 ARABIC SMALL LOW SEEN
+06e4 ARABIC SMALL HIGH MADDA
+06e5 ARABIC SMALL WAW
+06e6 ARABIC SMALL YEH
+06e7 ARABIC SMALL HIGH YEH
+06e8 ARABIC SMALL HIGH NOON
+06e9 ARABIC PLACE OF SAJDAH
+06ea ARABIC EMPTY CENTRE LOW STOP
+06eb ARABIC EMPTY CENTRE HIGH STOP
+06ec ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ed ARABIC SMALL LOW MEEM
+06f0 EXTENDED ARABIC-INDIC DIGIT ZERO
+06f1 EXTENDED ARABIC-INDIC DIGIT ONE
+06f2 EXTENDED ARABIC-INDIC DIGIT TWO
+06f3 EXTENDED ARABIC-INDIC DIGIT THREE
+06f4 EXTENDED ARABIC-INDIC DIGIT FOUR
+06f5 EXTENDED ARABIC-INDIC DIGIT FIVE
+06f6 EXTENDED ARABIC-INDIC DIGIT SIX
+06f7 EXTENDED ARABIC-INDIC DIGIT SEVEN
+06f8 EXTENDED ARABIC-INDIC DIGIT EIGHT
+06f9 EXTENDED ARABIC-INDIC DIGIT NINE
+06fa ARABIC LETTER SHEEN WITH DOT BELOW
+06fb ARABIC LETTER DAD WITH DOT BELOW
+06fc ARABIC LETTER GHAIN WITH DOT BELOW
+06fd ARABIC SIGN SINDHI AMPERSAND
+06fe ARABIC SIGN SINDHI POSTPOSITION MEN
+0700 SYRIAC END OF PARAGRAPH
+0701 SYRIAC SUPRALINEAR FULL STOP
+0702 SYRIAC SUBLINEAR FULL STOP
+0703 SYRIAC SUPRALINEAR COLON
+0704 SYRIAC SUBLINEAR COLON
+0705 SYRIAC HORIZONTAL COLON
+0706 SYRIAC COLON SKEWED LEFT
+0707 SYRIAC COLON SKEWED RIGHT
+0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070a SYRIAC CONTRACTION
+070b SYRIAC HARKLEAN OBELUS
+070c SYRIAC HARKLEAN METOBELUS
+070d SYRIAC HARKLEAN ASTERISCUS
+070f SYRIAC ABBREVIATION MARK
+0710 SYRIAC LETTER ALAPH
+0711 SYRIAC LETTER SUPERSCRIPT ALAPH
+0712 SYRIAC LETTER BETH
+0713 SYRIAC LETTER GAMAL
+0714 SYRIAC LETTER GAMAL GARSHUNI
+0715 SYRIAC LETTER DALATH
+0716 SYRIAC LETTER DOTLESS DALATH RISH
+0717 SYRIAC LETTER HE
+0718 SYRIAC LETTER WAW
+0719 SYRIAC LETTER ZAIN
+071a SYRIAC LETTER HETH
+071b SYRIAC LETTER TETH
+071c SYRIAC LETTER TETH GARSHUNI
+071d SYRIAC LETTER YUDH
+071e SYRIAC LETTER YUDH HE
+071f SYRIAC LETTER KAPH
+0720 SYRIAC LETTER LAMADH
+0721 SYRIAC LETTER MIM
+0722 SYRIAC LETTER NUN
+0723 SYRIAC LETTER SEMKATH
+0724 SYRIAC LETTER FINAL SEMKATH
+0725 SYRIAC LETTER E
+0726 SYRIAC LETTER PE
+0727 SYRIAC LETTER REVERSED PE
+0728 SYRIAC LETTER SADHE
+0729 SYRIAC LETTER QAPH
+072a SYRIAC LETTER RISH
+072b SYRIAC LETTER SHIN
+072c SYRIAC LETTER TAW
+0730 SYRIAC PTHAHA ABOVE
+0731 SYRIAC PTHAHA BELOW
+0732 SYRIAC PTHAHA DOTTED
+0733 SYRIAC ZQAPHA ABOVE
+0734 SYRIAC ZQAPHA BELOW
+0735 SYRIAC ZQAPHA DOTTED
+0736 SYRIAC RBASA ABOVE
+0737 SYRIAC RBASA BELOW
+0738 SYRIAC DOTTED ZLAMA HORIZONTAL
+0739 SYRIAC DOTTED ZLAMA ANGULAR
+073a SYRIAC HBASA ABOVE
+073b SYRIAC HBASA BELOW
+073c SYRIAC HBASA-ESASA DOTTED
+073d SYRIAC ESASA ABOVE
+073e SYRIAC ESASA BELOW
+073f SYRIAC RWAHA
+0740 SYRIAC FEMININE DOT
+0741 SYRIAC QUSHSHAYA
+0742 SYRIAC RUKKAKHA
+0743 SYRIAC TWO VERTICAL DOTS ABOVE
+0744 SYRIAC TWO VERTICAL DOTS BELOW
+0745 SYRIAC THREE DOTS ABOVE
+0746 SYRIAC THREE DOTS BELOW
+0747 SYRIAC OBLIQUE LINE ABOVE
+0748 SYRIAC OBLIQUE LINE BELOW
+0749 SYRIAC MUSIC
+074a SYRIAC BARREKH
+0780 THAANA LETTER HAA
+0781 THAANA LETTER SHAVIYANI
+0782 THAANA LETTER NOONU
+0783 THAANA LETTER RAA
+0784 THAANA LETTER BAA
+0785 THAANA LETTER LHAVIYANI
+0786 THAANA LETTER KAAFU
+0787 THAANA LETTER ALIFU
+0788 THAANA LETTER VAAVU
+0789 THAANA LETTER MEEMU
+078a THAANA LETTER FAAFU
+078b THAANA LETTER DHAALU
+078c THAANA LETTER THAA
+078d THAANA LETTER LAAMU
+078e THAANA LETTER GAAFU
+078f THAANA LETTER GNAVIYANI
+0790 THAANA LETTER SEENU
+0791 THAANA LETTER DAVIYANI
+0792 THAANA LETTER ZAVIYANI
+0793 THAANA LETTER TAVIYANI
+0794 THAANA LETTER YAA
+0795 THAANA LETTER PAVIYANI
+0796 THAANA LETTER JAVIYANI
+0797 THAANA LETTER CHAVIYANI
+0798 THAANA LETTER TTAA
+0799 THAANA LETTER HHAA
+079a THAANA LETTER KHAA
+079b THAANA LETTER THAALU
+079c THAANA LETTER ZAA
+079d THAANA LETTER SHEENU
+079e THAANA LETTER SAADHU
+079f THAANA LETTER DAADHU
+07a0 THAANA LETTER TO
+07a1 THAANA LETTER ZO
+07a2 THAANA LETTER AINU
+07a3 THAANA LETTER GHAINU
+07a4 THAANA LETTER QAAFU
+07a5 THAANA LETTER WAAVU
+07a6 THAANA ABAFILI
+07a7 THAANA AABAAFILI
+07a8 THAANA IBIFILI
+07a9 THAANA EEBEEFILI
+07aa THAANA UBUFILI
+07ab THAANA OOBOOFILI
+07ac THAANA EBEFILI
+07ad THAANA EYBEYFILI
+07ae THAANA OBOFILI
+07af THAANA OABOAFILI
+07b0 THAANA SUKUN
+0901 DEVANAGARI SIGN CANDRABINDU
+0902 DEVANAGARI SIGN ANUSVARA
+0903 DEVANAGARI SIGN VISARGA
+0905 DEVANAGARI LETTER A
+0906 DEVANAGARI LETTER AA
+0907 DEVANAGARI LETTER I
+0908 DEVANAGARI LETTER II
+0909 DEVANAGARI LETTER U
+090a DEVANAGARI LETTER UU
+090b DEVANAGARI LETTER VOCALIC R
+090c DEVANAGARI LETTER VOCALIC L
+090d DEVANAGARI LETTER CANDRA E
+090e DEVANAGARI LETTER SHORT E
+090f DEVANAGARI LETTER E
+0910 DEVANAGARI LETTER AI
+0911 DEVANAGARI LETTER CANDRA O
+0912 DEVANAGARI LETTER SHORT O
+0913 DEVANAGARI LETTER O
+0914 DEVANAGARI LETTER AU
+0915 DEVANAGARI LETTER KA
+0916 DEVANAGARI LETTER KHA
+0917 DEVANAGARI LETTER GA
+0918 DEVANAGARI LETTER GHA
+0919 DEVANAGARI LETTER NGA
+091a DEVANAGARI LETTER CA
+091b DEVANAGARI LETTER CHA
+091c DEVANAGARI LETTER JA
+091d DEVANAGARI LETTER JHA
+091e DEVANAGARI LETTER NYA
+091f DEVANAGARI LETTER TTA
+0920 DEVANAGARI LETTER TTHA
+0921 DEVANAGARI LETTER DDA
+0922 DEVANAGARI LETTER DDHA
+0923 DEVANAGARI LETTER NNA
+0924 DEVANAGARI LETTER TA
+0925 DEVANAGARI LETTER THA
+0926 DEVANAGARI LETTER DA
+0927 DEVANAGARI LETTER DHA
+0928 DEVANAGARI LETTER NA
+0929 DEVANAGARI LETTER NNNA
+092a DEVANAGARI LETTER PA
+092b DEVANAGARI LETTER PHA
+092c DEVANAGARI LETTER BA
+092d DEVANAGARI LETTER BHA
+092e DEVANAGARI LETTER MA
+092f DEVANAGARI LETTER YA
+0930 DEVANAGARI LETTER RA
+0931 DEVANAGARI LETTER RRA
+0932 DEVANAGARI LETTER LA
+0933 DEVANAGARI LETTER LLA
+0934 DEVANAGARI LETTER LLLA
+0935 DEVANAGARI LETTER VA
+0936 DEVANAGARI LETTER SHA
+0937 DEVANAGARI LETTER SSA
+0938 DEVANAGARI LETTER SA
+0939 DEVANAGARI LETTER HA
+093c DEVANAGARI SIGN NUKTA
+093d DEVANAGARI SIGN AVAGRAHA
+093e DEVANAGARI VOWEL SIGN AA
+093f DEVANAGARI VOWEL SIGN I
+0940 DEVANAGARI VOWEL SIGN II
+0941 DEVANAGARI VOWEL SIGN U
+0942 DEVANAGARI VOWEL SIGN UU
+0943 DEVANAGARI VOWEL SIGN VOCALIC R
+0944 DEVANAGARI VOWEL SIGN VOCALIC RR
+0945 DEVANAGARI VOWEL SIGN CANDRA E
+0946 DEVANAGARI VOWEL SIGN SHORT E
+0947 DEVANAGARI VOWEL SIGN E
+0948 DEVANAGARI VOWEL SIGN AI
+0949 DEVANAGARI VOWEL SIGN CANDRA O
+094a DEVANAGARI VOWEL SIGN SHORT O
+094b DEVANAGARI VOWEL SIGN O
+094c DEVANAGARI VOWEL SIGN AU
+094d DEVANAGARI SIGN VIRAMA
+0950 DEVANAGARI OM
+0951 DEVANAGARI STRESS SIGN UDATTA
+0952 DEVANAGARI STRESS SIGN ANUDATTA
+0953 DEVANAGARI GRAVE ACCENT
+0954 DEVANAGARI ACUTE ACCENT
+0958 DEVANAGARI LETTER QA
+0959 DEVANAGARI LETTER KHHA
+095a DEVANAGARI LETTER GHHA
+095b DEVANAGARI LETTER ZA
+095c DEVANAGARI LETTER DDDHA
+095d DEVANAGARI LETTER RHA
+095e DEVANAGARI LETTER FA
+095f DEVANAGARI LETTER YYA
+0960 DEVANAGARI LETTER VOCALIC RR
+0961 DEVANAGARI LETTER VOCALIC LL
+0962 DEVANAGARI VOWEL SIGN VOCALIC L
+0963 DEVANAGARI VOWEL SIGN VOCALIC LL
+0964 DEVANAGARI DANDA
+0965 DEVANAGARI DOUBLE DANDA
+0966 DEVANAGARI DIGIT ZERO
+0967 DEVANAGARI DIGIT ONE
+0968 DEVANAGARI DIGIT TWO
+0969 DEVANAGARI DIGIT THREE
+096a DEVANAGARI DIGIT FOUR
+096b DEVANAGARI DIGIT FIVE
+096c DEVANAGARI DIGIT SIX
+096d DEVANAGARI DIGIT SEVEN
+096e DEVANAGARI DIGIT EIGHT
+096f DEVANAGARI DIGIT NINE
+0970 DEVANAGARI ABBREVIATION SIGN
+0981 BENGALI SIGN CANDRABINDU
+0982 BENGALI SIGN ANUSVARA
+0983 BENGALI SIGN VISARGA
+0985 BENGALI LETTER A
+0986 BENGALI LETTER AA
+0987 BENGALI LETTER I
+0988 BENGALI LETTER II
+0989 BENGALI LETTER U
+098a BENGALI LETTER UU
+098b BENGALI LETTER VOCALIC R
+098c BENGALI LETTER VOCALIC L
+098f BENGALI LETTER E
+0990 BENGALI LETTER AI
+0993 BENGALI LETTER O
+0994 BENGALI LETTER AU
+0995 BENGALI LETTER KA
+0996 BENGALI LETTER KHA
+0997 BENGALI LETTER GA
+0998 BENGALI LETTER GHA
+0999 BENGALI LETTER NGA
+099a BENGALI LETTER CA
+099b BENGALI LETTER CHA
+099c BENGALI LETTER JA
+099d BENGALI LETTER JHA
+099e BENGALI LETTER NYA
+099f BENGALI LETTER TTA
+09a0 BENGALI LETTER TTHA
+09a1 BENGALI LETTER DDA
+09a2 BENGALI LETTER DDHA
+09a3 BENGALI LETTER NNA
+09a4 BENGALI LETTER TA
+09a5 BENGALI LETTER THA
+09a6 BENGALI LETTER DA
+09a7 BENGALI LETTER DHA
+09a8 BENGALI LETTER NA
+09aa BENGALI LETTER PA
+09ab BENGALI LETTER PHA
+09ac BENGALI LETTER BA
+09ad BENGALI LETTER BHA
+09ae BENGALI LETTER MA
+09af BENGALI LETTER YA
+09b0 BENGALI LETTER RA
+09b2 BENGALI LETTER LA
+09b6 BENGALI LETTER SHA
+09b7 BENGALI LETTER SSA
+09b8 BENGALI LETTER SA
+09b9 BENGALI LETTER HA
+09bc BENGALI SIGN NUKTA
+09be BENGALI VOWEL SIGN AA
+09bf BENGALI VOWEL SIGN I
+09c0 BENGALI VOWEL SIGN II
+09c1 BENGALI VOWEL SIGN U
+09c2 BENGALI VOWEL SIGN UU
+09c3 BENGALI VOWEL SIGN VOCALIC R
+09c4 BENGALI VOWEL SIGN VOCALIC RR
+09c7 BENGALI VOWEL SIGN E
+09c8 BENGALI VOWEL SIGN AI
+09cb BENGALI VOWEL SIGN O
+09cc BENGALI VOWEL SIGN AU
+09cd BENGALI SIGN VIRAMA
+09d7 BENGALI AU LENGTH MARK
+09dc BENGALI LETTER RRA
+09dd BENGALI LETTER RHA
+09df BENGALI LETTER YYA
+09e0 BENGALI LETTER VOCALIC RR
+09e1 BENGALI LETTER VOCALIC LL
+09e2 BENGALI VOWEL SIGN VOCALIC L
+09e3 BENGALI VOWEL SIGN VOCALIC LL
+09e6 BENGALI DIGIT ZERO
+09e7 BENGALI DIGIT ONE
+09e8 BENGALI DIGIT TWO
+09e9 BENGALI DIGIT THREE
+09ea BENGALI DIGIT FOUR
+09eb BENGALI DIGIT FIVE
+09ec BENGALI DIGIT SIX
+09ed BENGALI DIGIT SEVEN
+09ee BENGALI DIGIT EIGHT
+09ef BENGALI DIGIT NINE
+09f0 BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09f1 BENGALI LETTER RA WITH LOWER DIAGONAL
+09f2 BENGALI RUPEE MARK
+09f3 BENGALI RUPEE SIGN
+09f4 BENGALI CURRENCY NUMERATOR ONE
+09f5 BENGALI CURRENCY NUMERATOR TWO
+09f6 BENGALI CURRENCY NUMERATOR THREE
+09f7 BENGALI CURRENCY NUMERATOR FOUR
+09f8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09f9 BENGALI CURRENCY DENOMINATOR SIXTEEN
+09fa BENGALI ISSHAR
+0a02 GURMUKHI SIGN BINDI
+0a05 GURMUKHI LETTER A
+0a06 GURMUKHI LETTER AA
+0a07 GURMUKHI LETTER I
+0a08 GURMUKHI LETTER II
+0a09 GURMUKHI LETTER U
+0a0a GURMUKHI LETTER UU
+0a0f GURMUKHI LETTER EE
+0a10 GURMUKHI LETTER AI
+0a13 GURMUKHI LETTER OO
+0a14 GURMUKHI LETTER AU
+0a15 GURMUKHI LETTER KA
+0a16 GURMUKHI LETTER KHA
+0a17 GURMUKHI LETTER GA
+0a18 GURMUKHI LETTER GHA
+0a19 GURMUKHI LETTER NGA
+0a1a GURMUKHI LETTER CA
+0a1b GURMUKHI LETTER CHA
+0a1c GURMUKHI LETTER JA
+0a1d GURMUKHI LETTER JHA
+0a1e GURMUKHI LETTER NYA
+0a1f GURMUKHI LETTER TTA
+0a20 GURMUKHI LETTER TTHA
+0a21 GURMUKHI LETTER DDA
+0a22 GURMUKHI LETTER DDHA
+0a23 GURMUKHI LETTER NNA
+0a24 GURMUKHI LETTER TA
+0a25 GURMUKHI LETTER THA
+0a26 GURMUKHI LETTER DA
+0a27 GURMUKHI LETTER DHA
+0a28 GURMUKHI LETTER NA
+0a2a GURMUKHI LETTER PA
+0a2b GURMUKHI LETTER PHA
+0a2c GURMUKHI LETTER BA
+0a2d GURMUKHI LETTER BHA
+0a2e GURMUKHI LETTER MA
+0a2f GURMUKHI LETTER YA
+0a30 GURMUKHI LETTER RA
+0a32 GURMUKHI LETTER LA
+0a33 GURMUKHI LETTER LLA
+0a35 GURMUKHI LETTER VA
+0a36 GURMUKHI LETTER SHA
+0a38 GURMUKHI LETTER SA
+0a39 GURMUKHI LETTER HA
+0a3c GURMUKHI SIGN NUKTA
+0a3e GURMUKHI VOWEL SIGN AA
+0a3f GURMUKHI VOWEL SIGN I
+0a40 GURMUKHI VOWEL SIGN II
+0a41 GURMUKHI VOWEL SIGN U
+0a42 GURMUKHI VOWEL SIGN UU
+0a47 GURMUKHI VOWEL SIGN EE
+0a48 GURMUKHI VOWEL SIGN AI
+0a4b GURMUKHI VOWEL SIGN OO
+0a4c GURMUKHI VOWEL SIGN AU
+0a4d GURMUKHI SIGN VIRAMA
+0a59 GURMUKHI LETTER KHHA
+0a5a GURMUKHI LETTER GHHA
+0a5b GURMUKHI LETTER ZA
+0a5c GURMUKHI LETTER RRA
+0a5e GURMUKHI LETTER FA
+0a66 GURMUKHI DIGIT ZERO
+0a67 GURMUKHI DIGIT ONE
+0a68 GURMUKHI DIGIT TWO
+0a69 GURMUKHI DIGIT THREE
+0a6a GURMUKHI DIGIT FOUR
+0a6b GURMUKHI DIGIT FIVE
+0a6c GURMUKHI DIGIT SIX
+0a6d GURMUKHI DIGIT SEVEN
+0a6e GURMUKHI DIGIT EIGHT
+0a6f GURMUKHI DIGIT NINE
+0a70 GURMUKHI TIPPI
+0a71 GURMUKHI ADDAK
+0a72 GURMUKHI IRI
+0a73 GURMUKHI URA
+0a74 GURMUKHI EK ONKAR
+0a81 GUJARATI SIGN CANDRABINDU
+0a82 GUJARATI SIGN ANUSVARA
+0a83 GUJARATI SIGN VISARGA
+0a85 GUJARATI LETTER A
+0a86 GUJARATI LETTER AA
+0a87 GUJARATI LETTER I
+0a88 GUJARATI LETTER II
+0a89 GUJARATI LETTER U
+0a8a GUJARATI LETTER UU
+0a8b GUJARATI LETTER VOCALIC R
+0a8d GUJARATI VOWEL CANDRA E
+0a8f GUJARATI LETTER E
+0a90 GUJARATI LETTER AI
+0a91 GUJARATI VOWEL CANDRA O
+0a93 GUJARATI LETTER O
+0a94 GUJARATI LETTER AU
+0a95 GUJARATI LETTER KA
+0a96 GUJARATI LETTER KHA
+0a97 GUJARATI LETTER GA
+0a98 GUJARATI LETTER GHA
+0a99 GUJARATI LETTER NGA
+0a9a GUJARATI LETTER CA
+0a9b GUJARATI LETTER CHA
+0a9c GUJARATI LETTER JA
+0a9d GUJARATI LETTER JHA
+0a9e GUJARATI LETTER NYA
+0a9f GUJARATI LETTER TTA
+0aa0 GUJARATI LETTER TTHA
+0aa1 GUJARATI LETTER DDA
+0aa2 GUJARATI LETTER DDHA
+0aa3 GUJARATI LETTER NNA
+0aa4 GUJARATI LETTER TA
+0aa5 GUJARATI LETTER THA
+0aa6 GUJARATI LETTER DA
+0aa7 GUJARATI LETTER DHA
+0aa8 GUJARATI LETTER NA
+0aaa GUJARATI LETTER PA
+0aab GUJARATI LETTER PHA
+0aac GUJARATI LETTER BA
+0aad GUJARATI LETTER BHA
+0aae GUJARATI LETTER MA
+0aaf GUJARATI LETTER YA
+0ab0 GUJARATI LETTER RA
+0ab2 GUJARATI LETTER LA
+0ab3 GUJARATI LETTER LLA
+0ab5 GUJARATI LETTER VA
+0ab6 GUJARATI LETTER SHA
+0ab7 GUJARATI LETTER SSA
+0ab8 GUJARATI LETTER SA
+0ab9 GUJARATI LETTER HA
+0abc GUJARATI SIGN NUKTA
+0abd GUJARATI SIGN AVAGRAHA
+0abe GUJARATI VOWEL SIGN AA
+0abf GUJARATI VOWEL SIGN I
+0ac0 GUJARATI VOWEL SIGN II
+0ac1 GUJARATI VOWEL SIGN U
+0ac2 GUJARATI VOWEL SIGN UU
+0ac3 GUJARATI VOWEL SIGN VOCALIC R
+0ac4 GUJARATI VOWEL SIGN VOCALIC RR
+0ac5 GUJARATI VOWEL SIGN CANDRA E
+0ac7 GUJARATI VOWEL SIGN E
+0ac8 GUJARATI VOWEL SIGN AI
+0ac9 GUJARATI VOWEL SIGN CANDRA O
+0acb GUJARATI VOWEL SIGN O
+0acc GUJARATI VOWEL SIGN AU
+0acd GUJARATI SIGN VIRAMA
+0ad0 GUJARATI OM
+0ae0 GUJARATI LETTER VOCALIC RR
+0ae6 GUJARATI DIGIT ZERO
+0ae7 GUJARATI DIGIT ONE
+0ae8 GUJARATI DIGIT TWO
+0ae9 GUJARATI DIGIT THREE
+0aea GUJARATI DIGIT FOUR
+0aeb GUJARATI DIGIT FIVE
+0aec GUJARATI DIGIT SIX
+0aed GUJARATI DIGIT SEVEN
+0aee GUJARATI DIGIT EIGHT
+0aef GUJARATI DIGIT NINE
+0b01 ORIYA SIGN CANDRABINDU
+0b02 ORIYA SIGN ANUSVARA
+0b03 ORIYA SIGN VISARGA
+0b05 ORIYA LETTER A
+0b06 ORIYA LETTER AA
+0b07 ORIYA LETTER I
+0b08 ORIYA LETTER II
+0b09 ORIYA LETTER U
+0b0a ORIYA LETTER UU
+0b0b ORIYA LETTER VOCALIC R
+0b0c ORIYA LETTER VOCALIC L
+0b0f ORIYA LETTER E
+0b10 ORIYA LETTER AI
+0b13 ORIYA LETTER O
+0b14 ORIYA LETTER AU
+0b15 ORIYA LETTER KA
+0b16 ORIYA LETTER KHA
+0b17 ORIYA LETTER GA
+0b18 ORIYA LETTER GHA
+0b19 ORIYA LETTER NGA
+0b1a ORIYA LETTER CA
+0b1b ORIYA LETTER CHA
+0b1c ORIYA LETTER JA
+0b1d ORIYA LETTER JHA
+0b1e ORIYA LETTER NYA
+0b1f ORIYA LETTER TTA
+0b20 ORIYA LETTER TTHA
+0b21 ORIYA LETTER DDA
+0b22 ORIYA LETTER DDHA
+0b23 ORIYA LETTER NNA
+0b24 ORIYA LETTER TA
+0b25 ORIYA LETTER THA
+0b26 ORIYA LETTER DA
+0b27 ORIYA LETTER DHA
+0b28 ORIYA LETTER NA
+0b2a ORIYA LETTER PA
+0b2b ORIYA LETTER PHA
+0b2c ORIYA LETTER BA
+0b2d ORIYA LETTER BHA
+0b2e ORIYA LETTER MA
+0b2f ORIYA LETTER YA
+0b30 ORIYA LETTER RA
+0b32 ORIYA LETTER LA
+0b33 ORIYA LETTER LLA
+0b36 ORIYA LETTER SHA
+0b37 ORIYA LETTER SSA
+0b38 ORIYA LETTER SA
+0b39 ORIYA LETTER HA
+0b3c ORIYA SIGN NUKTA
+0b3d ORIYA SIGN AVAGRAHA
+0b3e ORIYA VOWEL SIGN AA
+0b3f ORIYA VOWEL SIGN I
+0b40 ORIYA VOWEL SIGN II
+0b41 ORIYA VOWEL SIGN U
+0b42 ORIYA VOWEL SIGN UU
+0b43 ORIYA VOWEL SIGN VOCALIC R
+0b47 ORIYA VOWEL SIGN E
+0b48 ORIYA VOWEL SIGN AI
+0b4b ORIYA VOWEL SIGN O
+0b4c ORIYA VOWEL SIGN AU
+0b4d ORIYA SIGN VIRAMA
+0b56 ORIYA AI LENGTH MARK
+0b57 ORIYA AU LENGTH MARK
+0b5c ORIYA LETTER RRA
+0b5d ORIYA LETTER RHA
+0b5f ORIYA LETTER YYA
+0b60 ORIYA LETTER VOCALIC RR
+0b61 ORIYA LETTER VOCALIC LL
+0b66 ORIYA DIGIT ZERO
+0b67 ORIYA DIGIT ONE
+0b68 ORIYA DIGIT TWO
+0b69 ORIYA DIGIT THREE
+0b6a ORIYA DIGIT FOUR
+0b6b ORIYA DIGIT FIVE
+0b6c ORIYA DIGIT SIX
+0b6d ORIYA DIGIT SEVEN
+0b6e ORIYA DIGIT EIGHT
+0b6f ORIYA DIGIT NINE
+0b70 ORIYA ISSHAR
+0b82 TAMIL SIGN ANUSVARA
+0b83 TAMIL SIGN VISARGA
+0b85 TAMIL LETTER A
+0b86 TAMIL LETTER AA
+0b87 TAMIL LETTER I
+0b88 TAMIL LETTER II
+0b89 TAMIL LETTER U
+0b8a TAMIL LETTER UU
+0b8e TAMIL LETTER E
+0b8f TAMIL LETTER EE
+0b90 TAMIL LETTER AI
+0b92 TAMIL LETTER O
+0b93 TAMIL LETTER OO
+0b94 TAMIL LETTER AU
+0b95 TAMIL LETTER KA
+0b99 TAMIL LETTER NGA
+0b9a TAMIL LETTER CA
+0b9c TAMIL LETTER JA
+0b9e TAMIL LETTER NYA
+0b9f TAMIL LETTER TTA
+0ba3 TAMIL LETTER NNA
+0ba4 TAMIL LETTER TA
+0ba8 TAMIL LETTER NA
+0ba9 TAMIL LETTER NNNA
+0baa TAMIL LETTER PA
+0bae TAMIL LETTER MA
+0baf TAMIL LETTER YA
+0bb0 TAMIL LETTER RA
+0bb1 TAMIL LETTER RRA
+0bb2 TAMIL LETTER LA
+0bb3 TAMIL LETTER LLA
+0bb4 TAMIL LETTER LLLA
+0bb5 TAMIL LETTER VA
+0bb7 TAMIL LETTER SSA
+0bb8 TAMIL LETTER SA
+0bb9 TAMIL LETTER HA
+0bbe TAMIL VOWEL SIGN AA
+0bbf TAMIL VOWEL SIGN I
+0bc0 TAMIL VOWEL SIGN II
+0bc1 TAMIL VOWEL SIGN U
+0bc2 TAMIL VOWEL SIGN UU
+0bc6 TAMIL VOWEL SIGN E
+0bc7 TAMIL VOWEL SIGN EE
+0bc8 TAMIL VOWEL SIGN AI
+0bca TAMIL VOWEL SIGN O
+0bcb TAMIL VOWEL SIGN OO
+0bcc TAMIL VOWEL SIGN AU
+0bcd TAMIL SIGN VIRAMA
+0bd7 TAMIL AU LENGTH MARK
+0be7 TAMIL DIGIT ONE
+0be8 TAMIL DIGIT TWO
+0be9 TAMIL DIGIT THREE
+0bea TAMIL DIGIT FOUR
+0beb TAMIL DIGIT FIVE
+0bec TAMIL DIGIT SIX
+0bed TAMIL DIGIT SEVEN
+0bee TAMIL DIGIT EIGHT
+0bef TAMIL DIGIT NINE
+0bf0 TAMIL NUMBER TEN
+0bf1 TAMIL NUMBER ONE HUNDRED
+0bf2 TAMIL NUMBER ONE THOUSAND
+0c01 TELUGU SIGN CANDRABINDU
+0c02 TELUGU SIGN ANUSVARA
+0c03 TELUGU SIGN VISARGA
+0c05 TELUGU LETTER A
+0c06 TELUGU LETTER AA
+0c07 TELUGU LETTER I
+0c08 TELUGU LETTER II
+0c09 TELUGU LETTER U
+0c0a TELUGU LETTER UU
+0c0b TELUGU LETTER VOCALIC R
+0c0c TELUGU LETTER VOCALIC L
+0c0e TELUGU LETTER E
+0c0f TELUGU LETTER EE
+0c10 TELUGU LETTER AI
+0c12 TELUGU LETTER O
+0c13 TELUGU LETTER OO
+0c14 TELUGU LETTER AU
+0c15 TELUGU LETTER KA
+0c16 TELUGU LETTER KHA
+0c17 TELUGU LETTER GA
+0c18 TELUGU LETTER GHA
+0c19 TELUGU LETTER NGA
+0c1a TELUGU LETTER CA
+0c1b TELUGU LETTER CHA
+0c1c TELUGU LETTER JA
+0c1d TELUGU LETTER JHA
+0c1e TELUGU LETTER NYA
+0c1f TELUGU LETTER TTA
+0c20 TELUGU LETTER TTHA
+0c21 TELUGU LETTER DDA
+0c22 TELUGU LETTER DDHA
+0c23 TELUGU LETTER NNA
+0c24 TELUGU LETTER TA
+0c25 TELUGU LETTER THA
+0c26 TELUGU LETTER DA
+0c27 TELUGU LETTER DHA
+0c28 TELUGU LETTER NA
+0c2a TELUGU LETTER PA
+0c2b TELUGU LETTER PHA
+0c2c TELUGU LETTER BA
+0c2d TELUGU LETTER BHA
+0c2e TELUGU LETTER MA
+0c2f TELUGU LETTER YA
+0c30 TELUGU LETTER RA
+0c31 TELUGU LETTER RRA
+0c32 TELUGU LETTER LA
+0c33 TELUGU LETTER LLA
+0c35 TELUGU LETTER VA
+0c36 TELUGU LETTER SHA
+0c37 TELUGU LETTER SSA
+0c38 TELUGU LETTER SA
+0c39 TELUGU LETTER HA
+0c3e TELUGU VOWEL SIGN AA
+0c3f TELUGU VOWEL SIGN I
+0c40 TELUGU VOWEL SIGN II
+0c41 TELUGU VOWEL SIGN U
+0c42 TELUGU VOWEL SIGN UU
+0c43 TELUGU VOWEL SIGN VOCALIC R
+0c44 TELUGU VOWEL SIGN VOCALIC RR
+0c46 TELUGU VOWEL SIGN E
+0c47 TELUGU VOWEL SIGN EE
+0c48 TELUGU VOWEL SIGN AI
+0c4a TELUGU VOWEL SIGN O
+0c4b TELUGU VOWEL SIGN OO
+0c4c TELUGU VOWEL SIGN AU
+0c4d TELUGU SIGN VIRAMA
+0c55 TELUGU LENGTH MARK
+0c56 TELUGU AI LENGTH MARK
+0c60 TELUGU LETTER VOCALIC RR
+0c61 TELUGU LETTER VOCALIC LL
+0c66 TELUGU DIGIT ZERO
+0c67 TELUGU DIGIT ONE
+0c68 TELUGU DIGIT TWO
+0c69 TELUGU DIGIT THREE
+0c6a TELUGU DIGIT FOUR
+0c6b TELUGU DIGIT FIVE
+0c6c TELUGU DIGIT SIX
+0c6d TELUGU DIGIT SEVEN
+0c6e TELUGU DIGIT EIGHT
+0c6f TELUGU DIGIT NINE
+0c82 KANNADA SIGN ANUSVARA
+0c83 KANNADA SIGN VISARGA
+0c85 KANNADA LETTER A
+0c86 KANNADA LETTER AA
+0c87 KANNADA LETTER I
+0c88 KANNADA LETTER II
+0c89 KANNADA LETTER U
+0c8a KANNADA LETTER UU
+0c8b KANNADA LETTER VOCALIC R
+0c8c KANNADA LETTER VOCALIC L
+0c8e KANNADA LETTER E
+0c8f KANNADA LETTER EE
+0c90 KANNADA LETTER AI
+0c92 KANNADA LETTER O
+0c93 KANNADA LETTER OO
+0c94 KANNADA LETTER AU
+0c95 KANNADA LETTER KA
+0c96 KANNADA LETTER KHA
+0c97 KANNADA LETTER GA
+0c98 KANNADA LETTER GHA
+0c99 KANNADA LETTER NGA
+0c9a KANNADA LETTER CA
+0c9b KANNADA LETTER CHA
+0c9c KANNADA LETTER JA
+0c9d KANNADA LETTER JHA
+0c9e KANNADA LETTER NYA
+0c9f KANNADA LETTER TTA
+0ca0 KANNADA LETTER TTHA
+0ca1 KANNADA LETTER DDA
+0ca2 KANNADA LETTER DDHA
+0ca3 KANNADA LETTER NNA
+0ca4 KANNADA LETTER TA
+0ca5 KANNADA LETTER THA
+0ca6 KANNADA LETTER DA
+0ca7 KANNADA LETTER DHA
+0ca8 KANNADA LETTER NA
+0caa KANNADA LETTER PA
+0cab KANNADA LETTER PHA
+0cac KANNADA LETTER BA
+0cad KANNADA LETTER BHA
+0cae KANNADA LETTER MA
+0caf KANNADA LETTER YA
+0cb0 KANNADA LETTER RA
+0cb1 KANNADA LETTER RRA
+0cb2 KANNADA LETTER LA
+0cb3 KANNADA LETTER LLA
+0cb5 KANNADA LETTER VA
+0cb6 KANNADA LETTER SHA
+0cb7 KANNADA LETTER SSA
+0cb8 KANNADA LETTER SA
+0cb9 KANNADA LETTER HA
+0cbe KANNADA VOWEL SIGN AA
+0cbf KANNADA VOWEL SIGN I
+0cc0 KANNADA VOWEL SIGN II
+0cc1 KANNADA VOWEL SIGN U
+0cc2 KANNADA VOWEL SIGN UU
+0cc3 KANNADA VOWEL SIGN VOCALIC R
+0cc4 KANNADA VOWEL SIGN VOCALIC RR
+0cc6 KANNADA VOWEL SIGN E
+0cc7 KANNADA VOWEL SIGN EE
+0cc8 KANNADA VOWEL SIGN AI
+0cca KANNADA VOWEL SIGN O
+0ccb KANNADA VOWEL SIGN OO
+0ccc KANNADA VOWEL SIGN AU
+0ccd KANNADA SIGN VIRAMA
+0cd5 KANNADA LENGTH MARK
+0cd6 KANNADA AI LENGTH MARK
+0cde KANNADA LETTER FA
+0ce0 KANNADA LETTER VOCALIC RR
+0ce1 KANNADA LETTER VOCALIC LL
+0ce6 KANNADA DIGIT ZERO
+0ce7 KANNADA DIGIT ONE
+0ce8 KANNADA DIGIT TWO
+0ce9 KANNADA DIGIT THREE
+0cea KANNADA DIGIT FOUR
+0ceb KANNADA DIGIT FIVE
+0cec KANNADA DIGIT SIX
+0ced KANNADA DIGIT SEVEN
+0cee KANNADA DIGIT EIGHT
+0cef KANNADA DIGIT NINE
+0d02 MALAYALAM SIGN ANUSVARA
+0d03 MALAYALAM SIGN VISARGA
+0d05 MALAYALAM LETTER A
+0d06 MALAYALAM LETTER AA
+0d07 MALAYALAM LETTER I
+0d08 MALAYALAM LETTER II
+0d09 MALAYALAM LETTER U
+0d0a MALAYALAM LETTER UU
+0d0b MALAYALAM LETTER VOCALIC R
+0d0c MALAYALAM LETTER VOCALIC L
+0d0e MALAYALAM LETTER E
+0d0f MALAYALAM LETTER EE
+0d10 MALAYALAM LETTER AI
+0d12 MALAYALAM LETTER O
+0d13 MALAYALAM LETTER OO
+0d14 MALAYALAM LETTER AU
+0d15 MALAYALAM LETTER KA
+0d16 MALAYALAM LETTER KHA
+0d17 MALAYALAM LETTER GA
+0d18 MALAYALAM LETTER GHA
+0d19 MALAYALAM LETTER NGA
+0d1a MALAYALAM LETTER CA
+0d1b MALAYALAM LETTER CHA
+0d1c MALAYALAM LETTER JA
+0d1d MALAYALAM LETTER JHA
+0d1e MALAYALAM LETTER NYA
+0d1f MALAYALAM LETTER TTA
+0d20 MALAYALAM LETTER TTHA
+0d21 MALAYALAM LETTER DDA
+0d22 MALAYALAM LETTER DDHA
+0d23 MALAYALAM LETTER NNA
+0d24 MALAYALAM LETTER TA
+0d25 MALAYALAM LETTER THA
+0d26 MALAYALAM LETTER DA
+0d27 MALAYALAM LETTER DHA
+0d28 MALAYALAM LETTER NA
+0d2a MALAYALAM LETTER PA
+0d2b MALAYALAM LETTER PHA
+0d2c MALAYALAM LETTER BA
+0d2d MALAYALAM LETTER BHA
+0d2e MALAYALAM LETTER MA
+0d2f MALAYALAM LETTER YA
+0d30 MALAYALAM LETTER RA
+0d31 MALAYALAM LETTER RRA
+0d32 MALAYALAM LETTER LA
+0d33 MALAYALAM LETTER LLA
+0d34 MALAYALAM LETTER LLLA
+0d35 MALAYALAM LETTER VA
+0d36 MALAYALAM LETTER SHA
+0d37 MALAYALAM LETTER SSA
+0d38 MALAYALAM LETTER SA
+0d39 MALAYALAM LETTER HA
+0d3e MALAYALAM VOWEL SIGN AA
+0d3f MALAYALAM VOWEL SIGN I
+0d40 MALAYALAM VOWEL SIGN II
+0d41 MALAYALAM VOWEL SIGN U
+0d42 MALAYALAM VOWEL SIGN UU
+0d43 MALAYALAM VOWEL SIGN VOCALIC R
+0d46 MALAYALAM VOWEL SIGN E
+0d47 MALAYALAM VOWEL SIGN EE
+0d48 MALAYALAM VOWEL SIGN AI
+0d4a MALAYALAM VOWEL SIGN O
+0d4b MALAYALAM VOWEL SIGN OO
+0d4c MALAYALAM VOWEL SIGN AU
+0d4d MALAYALAM SIGN VIRAMA
+0d57 MALAYALAM AU LENGTH MARK
+0d60 MALAYALAM LETTER VOCALIC RR
+0d61 MALAYALAM LETTER VOCALIC LL
+0d66 MALAYALAM DIGIT ZERO
+0d67 MALAYALAM DIGIT ONE
+0d68 MALAYALAM DIGIT TWO
+0d69 MALAYALAM DIGIT THREE
+0d6a MALAYALAM DIGIT FOUR
+0d6b MALAYALAM DIGIT FIVE
+0d6c MALAYALAM DIGIT SIX
+0d6d MALAYALAM DIGIT SEVEN
+0d6e MALAYALAM DIGIT EIGHT
+0d6f MALAYALAM DIGIT NINE
+0d82 SINHALA SIGN ANUSVARAYA
+0d83 SINHALA SIGN VISARGAYA
+0d85 SINHALA LETTER AYANNA
+0d86 SINHALA LETTER AAYANNA
+0d87 SINHALA LETTER AEYANNA
+0d88 SINHALA LETTER AEEYANNA
+0d89 SINHALA LETTER IYANNA
+0d8a SINHALA LETTER IIYANNA
+0d8b SINHALA LETTER UYANNA
+0d8c SINHALA LETTER UUYANNA
+0d8d SINHALA LETTER IRUYANNA
+0d8e SINHALA LETTER IRUUYANNA
+0d8f SINHALA LETTER ILUYANNA
+0d90 SINHALA LETTER ILUUYANNA
+0d91 SINHALA LETTER EYANNA
+0d92 SINHALA LETTER EEYANNA
+0d93 SINHALA LETTER AIYANNA
+0d94 SINHALA LETTER OYANNA
+0d95 SINHALA LETTER OOYANNA
+0d96 SINHALA LETTER AUYANNA
+0d9a SINHALA LETTER ALPAPRAANA KAYANNA
+0d9b SINHALA LETTER MAHAAPRAANA KAYANNA
+0d9c SINHALA LETTER ALPAPRAANA GAYANNA
+0d9d SINHALA LETTER MAHAAPRAANA GAYANNA
+0d9e SINHALA LETTER KANTAJA NAASIKYAYA
+0d9f SINHALA LETTER SANYAKA GAYANNA
+0da0 SINHALA LETTER ALPAPRAANA CAYANNA
+0da1 SINHALA LETTER MAHAAPRAANA CAYANNA
+0da2 SINHALA LETTER ALPAPRAANA JAYANNA
+0da3 SINHALA LETTER MAHAAPRAANA JAYANNA
+0da4 SINHALA LETTER TAALUJA NAASIKYAYA
+0da5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0da6 SINHALA LETTER SANYAKA JAYANNA
+0da7 SINHALA LETTER ALPAPRAANA TTAYANNA
+0da8 SINHALA LETTER MAHAAPRAANA TTAYANNA
+0da9 SINHALA LETTER ALPAPRAANA DDAYANNA
+0daa SINHALA LETTER MAHAAPRAANA DDAYANNA
+0dab SINHALA LETTER MUURDHAJA NAYANNA
+0dac SINHALA LETTER SANYAKA DDAYANNA
+0dad SINHALA LETTER ALPAPRAANA TAYANNA
+0dae SINHALA LETTER MAHAAPRAANA TAYANNA
+0daf SINHALA LETTER ALPAPRAANA DAYANNA
+0db0 SINHALA LETTER MAHAAPRAANA DAYANNA
+0db1 SINHALA LETTER DANTAJA NAYANNA
+0db3 SINHALA LETTER SANYAKA DAYANNA
+0db4 SINHALA LETTER ALPAPRAANA PAYANNA
+0db5 SINHALA LETTER MAHAAPRAANA PAYANNA
+0db6 SINHALA LETTER ALPAPRAANA BAYANNA
+0db7 SINHALA LETTER MAHAAPRAANA BAYANNA
+0db8 SINHALA LETTER MAYANNA
+0db9 SINHALA LETTER AMBA BAYANNA
+0dba SINHALA LETTER YAYANNA
+0dbb SINHALA LETTER RAYANNA
+0dbd SINHALA LETTER DANTAJA LAYANNA
+0dc0 SINHALA LETTER VAYANNA
+0dc1 SINHALA LETTER TAALUJA SAYANNA
+0dc2 SINHALA LETTER MUURDHAJA SAYANNA
+0dc3 SINHALA LETTER DANTAJA SAYANNA
+0dc4 SINHALA LETTER HAYANNA
+0dc5 SINHALA LETTER MUURDHAJA LAYANNA
+0dc6 SINHALA LETTER FAYANNA
+0dca SINHALA SIGN AL-LAKUNA
+0dcf SINHALA VOWEL SIGN AELA-PILLA
+0dd0 SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0dd1 SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0dd2 SINHALA VOWEL SIGN KETTI IS-PILLA
+0dd3 SINHALA VOWEL SIGN DIGA IS-PILLA
+0dd4 SINHALA VOWEL SIGN KETTI PAA-PILLA
+0dd6 SINHALA VOWEL SIGN DIGA PAA-PILLA
+0dd8 SINHALA VOWEL SIGN GAETTA-PILLA
+0dd9 SINHALA VOWEL SIGN KOMBUVA
+0dda SINHALA VOWEL SIGN DIGA KOMBUVA
+0ddb SINHALA VOWEL SIGN KOMBU DEKA
+0ddc SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0ddd SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0dde SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0ddf SINHALA VOWEL SIGN GAYANUKITTA
+0df2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0df3 SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0df4 SINHALA PUNCTUATION KUNDDALIYA
+0e01 THAI CHARACTER KO KAI
+0e02 THAI CHARACTER KHO KHAI
+0e03 THAI CHARACTER KHO KHUAT
+0e04 THAI CHARACTER KHO KHWAI
+0e05 THAI CHARACTER KHO KHON
+0e06 THAI CHARACTER KHO RAKHANG
+0e07 THAI CHARACTER NGO NGU
+0e08 THAI CHARACTER CHO CHAN
+0e09 THAI CHARACTER CHO CHING
+0e0a THAI CHARACTER CHO CHANG
+0e0b THAI CHARACTER SO SO
+0e0c THAI CHARACTER CHO CHOE
+0e0d THAI CHARACTER YO YING
+0e0e THAI CHARACTER DO CHADA
+0e0f THAI CHARACTER TO PATAK
+0e10 THAI CHARACTER THO THAN
+0e11 THAI CHARACTER THO NANGMONTHO
+0e12 THAI CHARACTER THO PHUTHAO
+0e13 THAI CHARACTER NO NEN
+0e14 THAI CHARACTER DO DEK
+0e15 THAI CHARACTER TO TAO
+0e16 THAI CHARACTER THO THUNG
+0e17 THAI CHARACTER THO THAHAN
+0e18 THAI CHARACTER THO THONG
+0e19 THAI CHARACTER NO NU
+0e1a THAI CHARACTER BO BAIMAI
+0e1b THAI CHARACTER PO PLA
+0e1c THAI CHARACTER PHO PHUNG
+0e1d THAI CHARACTER FO FA
+0e1e THAI CHARACTER PHO PHAN
+0e1f THAI CHARACTER FO FAN
+0e20 THAI CHARACTER PHO SAMPHAO
+0e21 THAI CHARACTER MO MA
+0e22 THAI CHARACTER YO YAK
+0e23 THAI CHARACTER RO RUA
+0e24 THAI CHARACTER RU
+0e25 THAI CHARACTER LO LING
+0e26 THAI CHARACTER LU
+0e27 THAI CHARACTER WO WAEN
+0e28 THAI CHARACTER SO SALA
+0e29 THAI CHARACTER SO RUSI
+0e2a THAI CHARACTER SO SUA
+0e2b THAI CHARACTER HO HIP
+0e2c THAI CHARACTER LO CHULA
+0e2d THAI CHARACTER O ANG
+0e2e THAI CHARACTER HO NOKHUK
+0e2f THAI CHARACTER PAIYANNOI
+0e30 THAI CHARACTER SARA A
+0e31 THAI CHARACTER MAI HAN-AKAT
+0e32 THAI CHARACTER SARA AA
+0e33 THAI CHARACTER SARA AM
+0e34 THAI CHARACTER SARA I
+0e35 THAI CHARACTER SARA II
+0e36 THAI CHARACTER SARA UE
+0e37 THAI CHARACTER SARA UEE
+0e38 THAI CHARACTER SARA U
+0e39 THAI CHARACTER SARA UU
+0e3a THAI CHARACTER PHINTHU
+0e3f THAI CURRENCY SYMBOL BAHT
+0e40 THAI CHARACTER SARA E
+0e41 THAI CHARACTER SARA AE
+0e42 THAI CHARACTER SARA O
+0e43 THAI CHARACTER SARA AI MAIMUAN
+0e44 THAI CHARACTER SARA AI MAIMALAI
+0e45 THAI CHARACTER LAKKHANGYAO
+0e46 THAI CHARACTER MAIYAMOK
+0e47 THAI CHARACTER MAITAIKHU
+0e48 THAI CHARACTER MAI EK
+0e49 THAI CHARACTER MAI THO
+0e4a THAI CHARACTER MAI TRI
+0e4b THAI CHARACTER MAI CHATTAWA
+0e4c THAI CHARACTER THANTHAKHAT
+0e4d THAI CHARACTER NIKHAHIT
+0e4e THAI CHARACTER YAMAKKAN
+0e4f THAI CHARACTER FONGMAN
+0e50 THAI DIGIT ZERO
+0e51 THAI DIGIT ONE
+0e52 THAI DIGIT TWO
+0e53 THAI DIGIT THREE
+0e54 THAI DIGIT FOUR
+0e55 THAI DIGIT FIVE
+0e56 THAI DIGIT SIX
+0e57 THAI DIGIT SEVEN
+0e58 THAI DIGIT EIGHT
+0e59 THAI DIGIT NINE
+0e5a THAI CHARACTER ANGKHANKHU
+0e5b THAI CHARACTER KHOMUT
+0e81 LAO LETTER KO
+0e82 LAO LETTER KHO SUNG
+0e84 LAO LETTER KHO TAM
+0e87 LAO LETTER NGO
+0e88 LAO LETTER CO
+0e8a LAO LETTER SO TAM
+0e8d LAO LETTER NYO
+0e94 LAO LETTER DO
+0e95 LAO LETTER TO
+0e96 LAO LETTER THO SUNG
+0e97 LAO LETTER THO TAM
+0e99 LAO LETTER NO
+0e9a LAO LETTER BO
+0e9b LAO LETTER PO
+0e9c LAO LETTER PHO SUNG
+0e9d LAO LETTER FO TAM
+0e9e LAO LETTER PHO TAM
+0e9f LAO LETTER FO SUNG
+0ea1 LAO LETTER MO
+0ea2 LAO LETTER YO
+0ea3 LAO LETTER LO LING
+0ea5 LAO LETTER LO LOOT
+0ea7 LAO LETTER WO
+0eaa LAO LETTER SO SUNG
+0eab LAO LETTER HO SUNG
+0ead LAO LETTER O
+0eae LAO LETTER HO TAM
+0eaf LAO ELLIPSIS
+0eb0 LAO VOWEL SIGN A
+0eb1 LAO VOWEL SIGN MAI KAN
+0eb2 LAO VOWEL SIGN AA
+0eb3 LAO VOWEL SIGN AM
+0eb4 LAO VOWEL SIGN I
+0eb5 LAO VOWEL SIGN II
+0eb6 LAO VOWEL SIGN Y
+0eb7 LAO VOWEL SIGN YY
+0eb8 LAO VOWEL SIGN U
+0eb9 LAO VOWEL SIGN UU
+0ebb LAO VOWEL SIGN MAI KON
+0ebc LAO SEMIVOWEL SIGN LO
+0ebd LAO SEMIVOWEL SIGN NYO
+0ec0 LAO VOWEL SIGN E
+0ec1 LAO VOWEL SIGN EI
+0ec2 LAO VOWEL SIGN O
+0ec3 LAO VOWEL SIGN AY
+0ec4 LAO VOWEL SIGN AI
+0ec6 LAO KO LA
+0ec8 LAO TONE MAI EK
+0ec9 LAO TONE MAI THO
+0eca LAO TONE MAI TI
+0ecb LAO TONE MAI CATAWA
+0ecc LAO CANCELLATION MARK
+0ecd LAO NIGGAHITA
+0ed0 LAO DIGIT ZERO
+0ed1 LAO DIGIT ONE
+0ed2 LAO DIGIT TWO
+0ed3 LAO DIGIT THREE
+0ed4 LAO DIGIT FOUR
+0ed5 LAO DIGIT FIVE
+0ed6 LAO DIGIT SIX
+0ed7 LAO DIGIT SEVEN
+0ed8 LAO DIGIT EIGHT
+0ed9 LAO DIGIT NINE
+0edc LAO HO NO
+0edd LAO HO MO
+0f00 TIBETAN SYLLABLE OM
+0f01 TIBETAN MARK GTER YIG MGO TRUNCATED A
+0f02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0f03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0f04 TIBETAN MARK INITIAL YIG MGO MDUN MA
+0f05 TIBETAN MARK CLOSING YIG MGO SGAB MA
+0f06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0f07 TIBETAN MARK YIG MGO TSHEG SHAD MA
+0f08 TIBETAN MARK SBRUL SHAD
+0f09 TIBETAN MARK BSKUR YIG MGO
+0f0a TIBETAN MARK BKA- SHOG YIG MGO
+0f0b TIBETAN MARK INTERSYLLABIC TSHEG
+0f0c TIBETAN MARK DELIMITER TSHEG BSTAR
+0f0d TIBETAN MARK SHAD
+0f0e TIBETAN MARK NYIS SHAD
+0f0f TIBETAN MARK TSHEG SHAD
+0f10 TIBETAN MARK NYIS TSHEG SHAD
+0f11 TIBETAN MARK RIN CHEN SPUNGS SHAD
+0f12 TIBETAN MARK RGYA GRAM SHAD
+0f13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0f14 TIBETAN MARK GTER TSHEG
+0f15 TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0f16 TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0f17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0f18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0f19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0f1a TIBETAN SIGN RDEL DKAR GCIG
+0f1b TIBETAN SIGN RDEL DKAR GNYIS
+0f1c TIBETAN SIGN RDEL DKAR GSUM
+0f1d TIBETAN SIGN RDEL NAG GCIG
+0f1e TIBETAN SIGN RDEL NAG GNYIS
+0f1f TIBETAN SIGN RDEL DKAR RDEL NAG
+0f20 TIBETAN DIGIT ZERO
+0f21 TIBETAN DIGIT ONE
+0f22 TIBETAN DIGIT TWO
+0f23 TIBETAN DIGIT THREE
+0f24 TIBETAN DIGIT FOUR
+0f25 TIBETAN DIGIT FIVE
+0f26 TIBETAN DIGIT SIX
+0f27 TIBETAN DIGIT SEVEN
+0f28 TIBETAN DIGIT EIGHT
+0f29 TIBETAN DIGIT NINE
+0f2a TIBETAN DIGIT HALF ONE
+0f2b TIBETAN DIGIT HALF TWO
+0f2c TIBETAN DIGIT HALF THREE
+0f2d TIBETAN DIGIT HALF FOUR
+0f2e TIBETAN DIGIT HALF FIVE
+0f2f TIBETAN DIGIT HALF SIX
+0f30 TIBETAN DIGIT HALF SEVEN
+0f31 TIBETAN DIGIT HALF EIGHT
+0f32 TIBETAN DIGIT HALF NINE
+0f33 TIBETAN DIGIT HALF ZERO
+0f34 TIBETAN MARK BSDUS RTAGS
+0f35 TIBETAN MARK NGAS BZUNG NYI ZLA
+0f36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0f37 TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0f38 TIBETAN MARK CHE MGO
+0f39 TIBETAN MARK TSA -PHRU
+0f3a TIBETAN MARK GUG RTAGS GYON
+0f3b TIBETAN MARK GUG RTAGS GYAS
+0f3c TIBETAN MARK ANG KHANG GYON
+0f3d TIBETAN MARK ANG KHANG GYAS
+0f3e TIBETAN SIGN YAR TSHES
+0f3f TIBETAN SIGN MAR TSHES
+0f40 TIBETAN LETTER KA
+0f41 TIBETAN LETTER KHA
+0f42 TIBETAN LETTER GA
+0f43 TIBETAN LETTER GHA
+0f44 TIBETAN LETTER NGA
+0f45 TIBETAN LETTER CA
+0f46 TIBETAN LETTER CHA
+0f47 TIBETAN LETTER JA
+0f49 TIBETAN LETTER NYA
+0f4a TIBETAN LETTER TTA
+0f4b TIBETAN LETTER TTHA
+0f4c TIBETAN LETTER DDA
+0f4d TIBETAN LETTER DDHA
+0f4e TIBETAN LETTER NNA
+0f4f TIBETAN LETTER TA
+0f50 TIBETAN LETTER THA
+0f51 TIBETAN LETTER DA
+0f52 TIBETAN LETTER DHA
+0f53 TIBETAN LETTER NA
+0f54 TIBETAN LETTER PA
+0f55 TIBETAN LETTER PHA
+0f56 TIBETAN LETTER BA
+0f57 TIBETAN LETTER BHA
+0f58 TIBETAN LETTER MA
+0f59 TIBETAN LETTER TSA
+0f5a TIBETAN LETTER TSHA
+0f5b TIBETAN LETTER DZA
+0f5c TIBETAN LETTER DZHA
+0f5d TIBETAN LETTER WA
+0f5e TIBETAN LETTER ZHA
+0f5f TIBETAN LETTER ZA
+0f60 TIBETAN LETTER -A
+0f61 TIBETAN LETTER YA
+0f62 TIBETAN LETTER RA
+0f63 TIBETAN LETTER LA
+0f64 TIBETAN LETTER SHA
+0f65 TIBETAN LETTER SSA
+0f66 TIBETAN LETTER SA
+0f67 TIBETAN LETTER HA
+0f68 TIBETAN LETTER A
+0f69 TIBETAN LETTER KSSA
+0f6a TIBETAN LETTER FIXED-FORM RA
+0f71 TIBETAN VOWEL SIGN AA
+0f72 TIBETAN VOWEL SIGN I
+0f73 TIBETAN VOWEL SIGN II
+0f74 TIBETAN VOWEL SIGN U
+0f75 TIBETAN VOWEL SIGN UU
+0f76 TIBETAN VOWEL SIGN VOCALIC R
+0f77 TIBETAN VOWEL SIGN VOCALIC RR
+0f78 TIBETAN VOWEL SIGN VOCALIC L
+0f79 TIBETAN VOWEL SIGN VOCALIC LL
+0f7a TIBETAN VOWEL SIGN E
+0f7b TIBETAN VOWEL SIGN EE
+0f7c TIBETAN VOWEL SIGN O
+0f7d TIBETAN VOWEL SIGN OO
+0f7e TIBETAN SIGN RJES SU NGA RO
+0f7f TIBETAN SIGN RNAM BCAD
+0f80 TIBETAN VOWEL SIGN REVERSED I
+0f81 TIBETAN VOWEL SIGN REVERSED II
+0f82 TIBETAN SIGN NYI ZLA NAA DA
+0f83 TIBETAN SIGN SNA LDAN
+0f84 TIBETAN MARK HALANTA
+0f85 TIBETAN MARK PALUTA
+0f86 TIBETAN SIGN LCI RTAGS
+0f87 TIBETAN SIGN YANG RTAGS
+0f88 TIBETAN SIGN LCE TSA CAN
+0f89 TIBETAN SIGN MCHU CAN
+0f8a TIBETAN SIGN GRU CAN RGYINGS
+0f8b TIBETAN SIGN GRU MED RGYINGS
+0f90 TIBETAN SUBJOINED LETTER KA
+0f91 TIBETAN SUBJOINED LETTER KHA
+0f92 TIBETAN SUBJOINED LETTER GA
+0f93 TIBETAN SUBJOINED LETTER GHA
+0f94 TIBETAN SUBJOINED LETTER NGA
+0f95 TIBETAN SUBJOINED LETTER CA
+0f96 TIBETAN SUBJOINED LETTER CHA
+0f97 TIBETAN SUBJOINED LETTER JA
+0f99 TIBETAN SUBJOINED LETTER NYA
+0f9a TIBETAN SUBJOINED LETTER TTA
+0f9b TIBETAN SUBJOINED LETTER TTHA
+0f9c TIBETAN SUBJOINED LETTER DDA
+0f9d TIBETAN SUBJOINED LETTER DDHA
+0f9e TIBETAN SUBJOINED LETTER NNA
+0f9f TIBETAN SUBJOINED LETTER TA
+0fa0 TIBETAN SUBJOINED LETTER THA
+0fa1 TIBETAN SUBJOINED LETTER DA
+0fa2 TIBETAN SUBJOINED LETTER DHA
+0fa3 TIBETAN SUBJOINED LETTER NA
+0fa4 TIBETAN SUBJOINED LETTER PA
+0fa5 TIBETAN SUBJOINED LETTER PHA
+0fa6 TIBETAN SUBJOINED LETTER BA
+0fa7 TIBETAN SUBJOINED LETTER BHA
+0fa8 TIBETAN SUBJOINED LETTER MA
+0fa9 TIBETAN SUBJOINED LETTER TSA
+0faa TIBETAN SUBJOINED LETTER TSHA
+0fab TIBETAN SUBJOINED LETTER DZA
+0fac TIBETAN SUBJOINED LETTER DZHA
+0fad TIBETAN SUBJOINED LETTER WA
+0fae TIBETAN SUBJOINED LETTER ZHA
+0faf TIBETAN SUBJOINED LETTER ZA
+0fb0 TIBETAN SUBJOINED LETTER -A
+0fb1 TIBETAN SUBJOINED LETTER YA
+0fb2 TIBETAN SUBJOINED LETTER RA
+0fb3 TIBETAN SUBJOINED LETTER LA
+0fb4 TIBETAN SUBJOINED LETTER SHA
+0fb5 TIBETAN SUBJOINED LETTER SSA
+0fb6 TIBETAN SUBJOINED LETTER SA
+0fb7 TIBETAN SUBJOINED LETTER HA
+0fb8 TIBETAN SUBJOINED LETTER A
+0fb9 TIBETAN SUBJOINED LETTER KSSA
+0fba TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0fbb TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0fbc TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0fbe TIBETAN KU RU KHA
+0fbf TIBETAN KU RU KHA BZHI MIG CAN
+0fc0 TIBETAN CANTILLATION SIGN HEAVY BEAT
+0fc1 TIBETAN CANTILLATION SIGN LIGHT BEAT
+0fc2 TIBETAN CANTILLATION SIGN CANG TE-U
+0fc3 TIBETAN CANTILLATION SIGN SBUB -CHAL
+0fc4 TIBETAN SYMBOL DRIL BU
+0fc5 TIBETAN SYMBOL RDO RJE
+0fc6 TIBETAN SYMBOL PADMA GDAN
+0fc7 TIBETAN SYMBOL RDO RJE RGYA GRAM
+0fc8 TIBETAN SYMBOL PHUR PA
+0fc9 TIBETAN SYMBOL NOR BU
+0fca TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0fcb TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0fcc TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0fcf TIBETAN SIGN RDEL NAG GSUM
+1000 MYANMAR LETTER KA
+1001 MYANMAR LETTER KHA
+1002 MYANMAR LETTER GA
+1003 MYANMAR LETTER GHA
+1004 MYANMAR LETTER NGA
+1005 MYANMAR LETTER CA
+1006 MYANMAR LETTER CHA
+1007 MYANMAR LETTER JA
+1008 MYANMAR LETTER JHA
+1009 MYANMAR LETTER NYA
+100a MYANMAR LETTER NNYA
+100b MYANMAR LETTER TTA
+100c MYANMAR LETTER TTHA
+100d MYANMAR LETTER DDA
+100e MYANMAR LETTER DDHA
+100f MYANMAR LETTER NNA
+1010 MYANMAR LETTER TA
+1011 MYANMAR LETTER THA
+1012 MYANMAR LETTER DA
+1013 MYANMAR LETTER DHA
+1014 MYANMAR LETTER NA
+1015 MYANMAR LETTER PA
+1016 MYANMAR LETTER PHA
+1017 MYANMAR LETTER BA
+1018 MYANMAR LETTER BHA
+1019 MYANMAR LETTER MA
+101a MYANMAR LETTER YA
+101b MYANMAR LETTER RA
+101c MYANMAR LETTER LA
+101d MYANMAR LETTER WA
+101e MYANMAR LETTER SA
+101f MYANMAR LETTER HA
+1020 MYANMAR LETTER LLA
+1021 MYANMAR LETTER A
+1023 MYANMAR LETTER I
+1024 MYANMAR LETTER II
+1025 MYANMAR LETTER U
+1026 MYANMAR LETTER UU
+1027 MYANMAR LETTER E
+1029 MYANMAR LETTER O
+102a MYANMAR LETTER AU
+102c MYANMAR VOWEL SIGN AA
+102d MYANMAR VOWEL SIGN I
+102e MYANMAR VOWEL SIGN II
+102f MYANMAR VOWEL SIGN U
+1030 MYANMAR VOWEL SIGN UU
+1031 MYANMAR VOWEL SIGN E
+1032 MYANMAR VOWEL SIGN AI
+1036 MYANMAR SIGN ANUSVARA
+1037 MYANMAR SIGN DOT BELOW
+1038 MYANMAR SIGN VISARGA
+1039 MYANMAR SIGN VIRAMA
+1040 MYANMAR DIGIT ZERO
+1041 MYANMAR DIGIT ONE
+1042 MYANMAR DIGIT TWO
+1043 MYANMAR DIGIT THREE
+1044 MYANMAR DIGIT FOUR
+1045 MYANMAR DIGIT FIVE
+1046 MYANMAR DIGIT SIX
+1047 MYANMAR DIGIT SEVEN
+1048 MYANMAR DIGIT EIGHT
+1049 MYANMAR DIGIT NINE
+104a MYANMAR SIGN LITTLE SECTION
+104b MYANMAR SIGN SECTION
+104c MYANMAR SYMBOL LOCATIVE
+104d MYANMAR SYMBOL COMPLETED
+104e MYANMAR SYMBOL AFOREMENTIONED
+104f MYANMAR SYMBOL GENITIVE
+1050 MYANMAR LETTER SHA
+1051 MYANMAR LETTER SSA
+1052 MYANMAR LETTER VOCALIC R
+1053 MYANMAR LETTER VOCALIC RR
+1054 MYANMAR LETTER VOCALIC L
+1055 MYANMAR LETTER VOCALIC LL
+1056 MYANMAR VOWEL SIGN VOCALIC R
+1057 MYANMAR VOWEL SIGN VOCALIC RR
+1058 MYANMAR VOWEL SIGN VOCALIC L
+1059 MYANMAR VOWEL SIGN VOCALIC LL
+10a0 GEORGIAN CAPITAL LETTER AN
+10a1 GEORGIAN CAPITAL LETTER BAN
+10a2 GEORGIAN CAPITAL LETTER GAN
+10a3 GEORGIAN CAPITAL LETTER DON
+10a4 GEORGIAN CAPITAL LETTER EN
+10a5 GEORGIAN CAPITAL LETTER VIN
+10a6 GEORGIAN CAPITAL LETTER ZEN
+10a7 GEORGIAN CAPITAL LETTER TAN
+10a8 GEORGIAN CAPITAL LETTER IN
+10a9 GEORGIAN CAPITAL LETTER KAN
+10aa GEORGIAN CAPITAL LETTER LAS
+10ab GEORGIAN CAPITAL LETTER MAN
+10ac GEORGIAN CAPITAL LETTER NAR
+10ad GEORGIAN CAPITAL LETTER ON
+10ae GEORGIAN CAPITAL LETTER PAR
+10af GEORGIAN CAPITAL LETTER ZHAR
+10b0 GEORGIAN CAPITAL LETTER RAE
+10b1 GEORGIAN CAPITAL LETTER SAN
+10b2 GEORGIAN CAPITAL LETTER TAR
+10b3 GEORGIAN CAPITAL LETTER UN
+10b4 GEORGIAN CAPITAL LETTER PHAR
+10b5 GEORGIAN CAPITAL LETTER KHAR
+10b6 GEORGIAN CAPITAL LETTER GHAN
+10b7 GEORGIAN CAPITAL LETTER QAR
+10b8 GEORGIAN CAPITAL LETTER SHIN
+10b9 GEORGIAN CAPITAL LETTER CHIN
+10ba GEORGIAN CAPITAL LETTER CAN
+10bb GEORGIAN CAPITAL LETTER JIL
+10bc GEORGIAN CAPITAL LETTER CIL
+10bd GEORGIAN CAPITAL LETTER CHAR
+10be GEORGIAN CAPITAL LETTER XAN
+10bf GEORGIAN CAPITAL LETTER JHAN
+10c0 GEORGIAN CAPITAL LETTER HAE
+10c1 GEORGIAN CAPITAL LETTER HE
+10c2 GEORGIAN CAPITAL LETTER HIE
+10c3 GEORGIAN CAPITAL LETTER WE
+10c4 GEORGIAN CAPITAL LETTER HAR
+10c5 GEORGIAN CAPITAL LETTER HOE
+10d0 GEORGIAN LETTER AN
+10d1 GEORGIAN LETTER BAN
+10d2 GEORGIAN LETTER GAN
+10d3 GEORGIAN LETTER DON
+10d4 GEORGIAN LETTER EN
+10d5 GEORGIAN LETTER VIN
+10d6 GEORGIAN LETTER ZEN
+10d7 GEORGIAN LETTER TAN
+10d8 GEORGIAN LETTER IN
+10d9 GEORGIAN LETTER KAN
+10da GEORGIAN LETTER LAS
+10db GEORGIAN LETTER MAN
+10dc GEORGIAN LETTER NAR
+10dd GEORGIAN LETTER ON
+10de GEORGIAN LETTER PAR
+10df GEORGIAN LETTER ZHAR
+10e0 GEORGIAN LETTER RAE
+10e1 GEORGIAN LETTER SAN
+10e2 GEORGIAN LETTER TAR
+10e3 GEORGIAN LETTER UN
+10e4 GEORGIAN LETTER PHAR
+10e5 GEORGIAN LETTER KHAR
+10e6 GEORGIAN LETTER GHAN
+10e7 GEORGIAN LETTER QAR
+10e8 GEORGIAN LETTER SHIN
+10e9 GEORGIAN LETTER CHIN
+10ea GEORGIAN LETTER CAN
+10eb GEORGIAN LETTER JIL
+10ec GEORGIAN LETTER CIL
+10ed GEORGIAN LETTER CHAR
+10ee GEORGIAN LETTER XAN
+10ef GEORGIAN LETTER JHAN
+10f0 GEORGIAN LETTER HAE
+10f1 GEORGIAN LETTER HE
+10f2 GEORGIAN LETTER HIE
+10f3 GEORGIAN LETTER WE
+10f4 GEORGIAN LETTER HAR
+10f5 GEORGIAN LETTER HOE
+10f6 GEORGIAN LETTER FI
+10fb GEORGIAN PARAGRAPH SEPARATOR
+1100 HANGUL CHOSEONG KIYEOK
+1101 HANGUL CHOSEONG SSANGKIYEOK
+1102 HANGUL CHOSEONG NIEUN
+1103 HANGUL CHOSEONG TIKEUT
+1104 HANGUL CHOSEONG SSANGTIKEUT
+1105 HANGUL CHOSEONG RIEUL
+1106 HANGUL CHOSEONG MIEUM
+1107 HANGUL CHOSEONG PIEUP
+1108 HANGUL CHOSEONG SSANGPIEUP
+1109 HANGUL CHOSEONG SIOS
+110a HANGUL CHOSEONG SSANGSIOS
+110b HANGUL CHOSEONG IEUNG
+110c HANGUL CHOSEONG CIEUC
+110d HANGUL CHOSEONG SSANGCIEUC
+110e HANGUL CHOSEONG CHIEUCH
+110f HANGUL CHOSEONG KHIEUKH
+1110 HANGUL CHOSEONG THIEUTH
+1111 HANGUL CHOSEONG PHIEUPH
+1112 HANGUL CHOSEONG HIEUH
+1113 HANGUL CHOSEONG NIEUN-KIYEOK
+1114 HANGUL CHOSEONG SSANGNIEUN
+1115 HANGUL CHOSEONG NIEUN-TIKEUT
+1116 HANGUL CHOSEONG NIEUN-PIEUP
+1117 HANGUL CHOSEONG TIKEUT-KIYEOK
+1118 HANGUL CHOSEONG RIEUL-NIEUN
+1119 HANGUL CHOSEONG SSANGRIEUL
+111a HANGUL CHOSEONG RIEUL-HIEUH
+111b HANGUL CHOSEONG KAPYEOUNRIEUL
+111c HANGUL CHOSEONG MIEUM-PIEUP
+111d HANGUL CHOSEONG KAPYEOUNMIEUM
+111e HANGUL CHOSEONG PIEUP-KIYEOK
+111f HANGUL CHOSEONG PIEUP-NIEUN
+1120 HANGUL CHOSEONG PIEUP-TIKEUT
+1121 HANGUL CHOSEONG PIEUP-SIOS
+1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125 HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127 HANGUL CHOSEONG PIEUP-CIEUC
+1128 HANGUL CHOSEONG PIEUP-CHIEUCH
+1129 HANGUL CHOSEONG PIEUP-THIEUTH
+112a HANGUL CHOSEONG PIEUP-PHIEUPH
+112b HANGUL CHOSEONG KAPYEOUNPIEUP
+112c HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112d HANGUL CHOSEONG SIOS-KIYEOK
+112e HANGUL CHOSEONG SIOS-NIEUN
+112f HANGUL CHOSEONG SIOS-TIKEUT
+1130 HANGUL CHOSEONG SIOS-RIEUL
+1131 HANGUL CHOSEONG SIOS-MIEUM
+1132 HANGUL CHOSEONG SIOS-PIEUP
+1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134 HANGUL CHOSEONG SIOS-SSANGSIOS
+1135 HANGUL CHOSEONG SIOS-IEUNG
+1136 HANGUL CHOSEONG SIOS-CIEUC
+1137 HANGUL CHOSEONG SIOS-CHIEUCH
+1138 HANGUL CHOSEONG SIOS-KHIEUKH
+1139 HANGUL CHOSEONG SIOS-THIEUTH
+113a HANGUL CHOSEONG SIOS-PHIEUPH
+113b HANGUL CHOSEONG SIOS-HIEUH
+113c HANGUL CHOSEONG CHITUEUMSIOS
+113d HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113e HANGUL CHOSEONG CEONGCHIEUMSIOS
+113f HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140 HANGUL CHOSEONG PANSIOS
+1141 HANGUL CHOSEONG IEUNG-KIYEOK
+1142 HANGUL CHOSEONG IEUNG-TIKEUT
+1143 HANGUL CHOSEONG IEUNG-MIEUM
+1144 HANGUL CHOSEONG IEUNG-PIEUP
+1145 HANGUL CHOSEONG IEUNG-SIOS
+1146 HANGUL CHOSEONG IEUNG-PANSIOS
+1147 HANGUL CHOSEONG SSANGIEUNG
+1148 HANGUL CHOSEONG IEUNG-CIEUC
+1149 HANGUL CHOSEONG IEUNG-CHIEUCH
+114a HANGUL CHOSEONG IEUNG-THIEUTH
+114b HANGUL CHOSEONG IEUNG-PHIEUPH
+114c HANGUL CHOSEONG YESIEUNG
+114d HANGUL CHOSEONG CIEUC-IEUNG
+114e HANGUL CHOSEONG CHITUEUMCIEUC
+114f HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153 HANGUL CHOSEONG CHIEUCH-HIEUH
+1154 HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156 HANGUL CHOSEONG PHIEUPH-PIEUP
+1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158 HANGUL CHOSEONG SSANGHIEUH
+1159 HANGUL CHOSEONG YEORINHIEUH
+115f HANGUL CHOSEONG FILLER
+1160 HANGUL JUNGSEONG FILLER
+1161 HANGUL JUNGSEONG A
+1162 HANGUL JUNGSEONG AE
+1163 HANGUL JUNGSEONG YA
+1164 HANGUL JUNGSEONG YAE
+1165 HANGUL JUNGSEONG EO
+1166 HANGUL JUNGSEONG E
+1167 HANGUL JUNGSEONG YEO
+1168 HANGUL JUNGSEONG YE
+1169 HANGUL JUNGSEONG O
+116a HANGUL JUNGSEONG WA
+116b HANGUL JUNGSEONG WAE
+116c HANGUL JUNGSEONG OE
+116d HANGUL JUNGSEONG YO
+116e HANGUL JUNGSEONG U
+116f HANGUL JUNGSEONG WEO
+1170 HANGUL JUNGSEONG WE
+1171 HANGUL JUNGSEONG WI
+1172 HANGUL JUNGSEONG YU
+1173 HANGUL JUNGSEONG EU
+1174 HANGUL JUNGSEONG YI
+1175 HANGUL JUNGSEONG I
+1176 HANGUL JUNGSEONG A-O
+1177 HANGUL JUNGSEONG A-U
+1178 HANGUL JUNGSEONG YA-O
+1179 HANGUL JUNGSEONG YA-YO
+117a HANGUL JUNGSEONG EO-O
+117b HANGUL JUNGSEONG EO-U
+117c HANGUL JUNGSEONG EO-EU
+117d HANGUL JUNGSEONG YEO-O
+117e HANGUL JUNGSEONG YEO-U
+117f HANGUL JUNGSEONG O-EO
+1180 HANGUL JUNGSEONG O-E
+1181 HANGUL JUNGSEONG O-YE
+1182 HANGUL JUNGSEONG O-O
+1183 HANGUL JUNGSEONG O-U
+1184 HANGUL JUNGSEONG YO-YA
+1185 HANGUL JUNGSEONG YO-YAE
+1186 HANGUL JUNGSEONG YO-YEO
+1187 HANGUL JUNGSEONG YO-O
+1188 HANGUL JUNGSEONG YO-I
+1189 HANGUL JUNGSEONG U-A
+118a HANGUL JUNGSEONG U-AE
+118b HANGUL JUNGSEONG U-EO-EU
+118c HANGUL JUNGSEONG U-YE
+118d HANGUL JUNGSEONG U-U
+118e HANGUL JUNGSEONG YU-A
+118f HANGUL JUNGSEONG YU-EO
+1190 HANGUL JUNGSEONG YU-E
+1191 HANGUL JUNGSEONG YU-YEO
+1192 HANGUL JUNGSEONG YU-YE
+1193 HANGUL JUNGSEONG YU-U
+1194 HANGUL JUNGSEONG YU-I
+1195 HANGUL JUNGSEONG EU-U
+1196 HANGUL JUNGSEONG EU-EU
+1197 HANGUL JUNGSEONG YI-U
+1198 HANGUL JUNGSEONG I-A
+1199 HANGUL JUNGSEONG I-YA
+119a HANGUL JUNGSEONG I-O
+119b HANGUL JUNGSEONG I-U
+119c HANGUL JUNGSEONG I-EU
+119d HANGUL JUNGSEONG I-ARAEA
+119e HANGUL JUNGSEONG ARAEA
+119f HANGUL JUNGSEONG ARAEA-EO
+11a0 HANGUL JUNGSEONG ARAEA-U
+11a1 HANGUL JUNGSEONG ARAEA-I
+11a2 HANGUL JUNGSEONG SSANGARAEA
+11a8 HANGUL JONGSEONG KIYEOK
+11a9 HANGUL JONGSEONG SSANGKIYEOK
+11aa HANGUL JONGSEONG KIYEOK-SIOS
+11ab HANGUL JONGSEONG NIEUN
+11ac HANGUL JONGSEONG NIEUN-CIEUC
+11ad HANGUL JONGSEONG NIEUN-HIEUH
+11ae HANGUL JONGSEONG TIKEUT
+11af HANGUL JONGSEONG RIEUL
+11b0 HANGUL JONGSEONG RIEUL-KIYEOK
+11b1 HANGUL JONGSEONG RIEUL-MIEUM
+11b2 HANGUL JONGSEONG RIEUL-PIEUP
+11b3 HANGUL JONGSEONG RIEUL-SIOS
+11b4 HANGUL JONGSEONG RIEUL-THIEUTH
+11b5 HANGUL JONGSEONG RIEUL-PHIEUPH
+11b6 HANGUL JONGSEONG RIEUL-HIEUH
+11b7 HANGUL JONGSEONG MIEUM
+11b8 HANGUL JONGSEONG PIEUP
+11b9 HANGUL JONGSEONG PIEUP-SIOS
+11ba HANGUL JONGSEONG SIOS
+11bb HANGUL JONGSEONG SSANGSIOS
+11bc HANGUL JONGSEONG IEUNG
+11bd HANGUL JONGSEONG CIEUC
+11be HANGUL JONGSEONG CHIEUCH
+11bf HANGUL JONGSEONG KHIEUKH
+11c0 HANGUL JONGSEONG THIEUTH
+11c1 HANGUL JONGSEONG PHIEUPH
+11c2 HANGUL JONGSEONG HIEUH
+11c3 HANGUL JONGSEONG KIYEOK-RIEUL
+11c4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11c5 HANGUL JONGSEONG NIEUN-KIYEOK
+11c6 HANGUL JONGSEONG NIEUN-TIKEUT
+11c7 HANGUL JONGSEONG NIEUN-SIOS
+11c8 HANGUL JONGSEONG NIEUN-PANSIOS
+11c9 HANGUL JONGSEONG NIEUN-THIEUTH
+11ca HANGUL JONGSEONG TIKEUT-KIYEOK
+11cb HANGUL JONGSEONG TIKEUT-RIEUL
+11cc HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11cd HANGUL JONGSEONG RIEUL-NIEUN
+11ce HANGUL JONGSEONG RIEUL-TIKEUT
+11cf HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11d0 HANGUL JONGSEONG SSANGRIEUL
+11d1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11d2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11d3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11d4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11d5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11d6 HANGUL JONGSEONG RIEUL-SSANGSIOS
+11d7 HANGUL JONGSEONG RIEUL-PANSIOS
+11d8 HANGUL JONGSEONG RIEUL-KHIEUKH
+11d9 HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11da HANGUL JONGSEONG MIEUM-KIYEOK
+11db HANGUL JONGSEONG MIEUM-RIEUL
+11dc HANGUL JONGSEONG MIEUM-PIEUP
+11dd HANGUL JONGSEONG MIEUM-SIOS
+11de HANGUL JONGSEONG MIEUM-SSANGSIOS
+11df HANGUL JONGSEONG MIEUM-PANSIOS
+11e0 HANGUL JONGSEONG MIEUM-CHIEUCH
+11e1 HANGUL JONGSEONG MIEUM-HIEUH
+11e2 HANGUL JONGSEONG KAPYEOUNMIEUM
+11e3 HANGUL JONGSEONG PIEUP-RIEUL
+11e4 HANGUL JONGSEONG PIEUP-PHIEUPH
+11e5 HANGUL JONGSEONG PIEUP-HIEUH
+11e6 HANGUL JONGSEONG KAPYEOUNPIEUP
+11e7 HANGUL JONGSEONG SIOS-KIYEOK
+11e8 HANGUL JONGSEONG SIOS-TIKEUT
+11e9 HANGUL JONGSEONG SIOS-RIEUL
+11ea HANGUL JONGSEONG SIOS-PIEUP
+11eb HANGUL JONGSEONG PANSIOS
+11ec HANGUL JONGSEONG IEUNG-KIYEOK
+11ed HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11ee HANGUL JONGSEONG SSANGIEUNG
+11ef HANGUL JONGSEONG IEUNG-KHIEUKH
+11f0 HANGUL JONGSEONG YESIEUNG
+11f1 HANGUL JONGSEONG YESIEUNG-SIOS
+11f2 HANGUL JONGSEONG YESIEUNG-PANSIOS
+11f3 HANGUL JONGSEONG PHIEUPH-PIEUP
+11f4 HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11f5 HANGUL JONGSEONG HIEUH-NIEUN
+11f6 HANGUL JONGSEONG HIEUH-RIEUL
+11f7 HANGUL JONGSEONG HIEUH-MIEUM
+11f8 HANGUL JONGSEONG HIEUH-PIEUP
+11f9 HANGUL JONGSEONG YEORINHIEUH
+1200 ETHIOPIC SYLLABLE HA
+1201 ETHIOPIC SYLLABLE HU
+1202 ETHIOPIC SYLLABLE HI
+1203 ETHIOPIC SYLLABLE HAA
+1204 ETHIOPIC SYLLABLE HEE
+1205 ETHIOPIC SYLLABLE HE
+1206 ETHIOPIC SYLLABLE HO
+1208 ETHIOPIC SYLLABLE LA
+1209 ETHIOPIC SYLLABLE LU
+120a ETHIOPIC SYLLABLE LI
+120b ETHIOPIC SYLLABLE LAA
+120c ETHIOPIC SYLLABLE LEE
+120d ETHIOPIC SYLLABLE LE
+120e ETHIOPIC SYLLABLE LO
+120f ETHIOPIC SYLLABLE LWA
+1210 ETHIOPIC SYLLABLE HHA
+1211 ETHIOPIC SYLLABLE HHU
+1212 ETHIOPIC SYLLABLE HHI
+1213 ETHIOPIC SYLLABLE HHAA
+1214 ETHIOPIC SYLLABLE HHEE
+1215 ETHIOPIC SYLLABLE HHE
+1216 ETHIOPIC SYLLABLE HHO
+1217 ETHIOPIC SYLLABLE HHWA
+1218 ETHIOPIC SYLLABLE MA
+1219 ETHIOPIC SYLLABLE MU
+121a ETHIOPIC SYLLABLE MI
+121b ETHIOPIC SYLLABLE MAA
+121c ETHIOPIC SYLLABLE MEE
+121d ETHIOPIC SYLLABLE ME
+121e ETHIOPIC SYLLABLE MO
+121f ETHIOPIC SYLLABLE MWA
+1220 ETHIOPIC SYLLABLE SZA
+1221 ETHIOPIC SYLLABLE SZU
+1222 ETHIOPIC SYLLABLE SZI
+1223 ETHIOPIC SYLLABLE SZAA
+1224 ETHIOPIC SYLLABLE SZEE
+1225 ETHIOPIC SYLLABLE SZE
+1226 ETHIOPIC SYLLABLE SZO
+1227 ETHIOPIC SYLLABLE SZWA
+1228 ETHIOPIC SYLLABLE RA
+1229 ETHIOPIC SYLLABLE RU
+122a ETHIOPIC SYLLABLE RI
+122b ETHIOPIC SYLLABLE RAA
+122c ETHIOPIC SYLLABLE REE
+122d ETHIOPIC SYLLABLE RE
+122e ETHIOPIC SYLLABLE RO
+122f ETHIOPIC SYLLABLE RWA
+1230 ETHIOPIC SYLLABLE SA
+1231 ETHIOPIC SYLLABLE SU
+1232 ETHIOPIC SYLLABLE SI
+1233 ETHIOPIC SYLLABLE SAA
+1234 ETHIOPIC SYLLABLE SEE
+1235 ETHIOPIC SYLLABLE SE
+1236 ETHIOPIC SYLLABLE SO
+1237 ETHIOPIC SYLLABLE SWA
+1238 ETHIOPIC SYLLABLE SHA
+1239 ETHIOPIC SYLLABLE SHU
+123a ETHIOPIC SYLLABLE SHI
+123b ETHIOPIC SYLLABLE SHAA
+123c ETHIOPIC SYLLABLE SHEE
+123d ETHIOPIC SYLLABLE SHE
+123e ETHIOPIC SYLLABLE SHO
+123f ETHIOPIC SYLLABLE SHWA
+1240 ETHIOPIC SYLLABLE QA
+1241 ETHIOPIC SYLLABLE QU
+1242 ETHIOPIC SYLLABLE QI
+1243 ETHIOPIC SYLLABLE QAA
+1244 ETHIOPIC SYLLABLE QEE
+1245 ETHIOPIC SYLLABLE QE
+1246 ETHIOPIC SYLLABLE QO
+1248 ETHIOPIC SYLLABLE QWA
+124a ETHIOPIC SYLLABLE QWI
+124b ETHIOPIC SYLLABLE QWAA
+124c ETHIOPIC SYLLABLE QWEE
+124d ETHIOPIC SYLLABLE QWE
+1250 ETHIOPIC SYLLABLE QHA
+1251 ETHIOPIC SYLLABLE QHU
+1252 ETHIOPIC SYLLABLE QHI
+1253 ETHIOPIC SYLLABLE QHAA
+1254 ETHIOPIC SYLLABLE QHEE
+1255 ETHIOPIC SYLLABLE QHE
+1256 ETHIOPIC SYLLABLE QHO
+1258 ETHIOPIC SYLLABLE QHWA
+125a ETHIOPIC SYLLABLE QHWI
+125b ETHIOPIC SYLLABLE QHWAA
+125c ETHIOPIC SYLLABLE QHWEE
+125d ETHIOPIC SYLLABLE QHWE
+1260 ETHIOPIC SYLLABLE BA
+1261 ETHIOPIC SYLLABLE BU
+1262 ETHIOPIC SYLLABLE BI
+1263 ETHIOPIC SYLLABLE BAA
+1264 ETHIOPIC SYLLABLE BEE
+1265 ETHIOPIC SYLLABLE BE
+1266 ETHIOPIC SYLLABLE BO
+1267 ETHIOPIC SYLLABLE BWA
+1268 ETHIOPIC SYLLABLE VA
+1269 ETHIOPIC SYLLABLE VU
+126a ETHIOPIC SYLLABLE VI
+126b ETHIOPIC SYLLABLE VAA
+126c ETHIOPIC SYLLABLE VEE
+126d ETHIOPIC SYLLABLE VE
+126e ETHIOPIC SYLLABLE VO
+126f ETHIOPIC SYLLABLE VWA
+1270 ETHIOPIC SYLLABLE TA
+1271 ETHIOPIC SYLLABLE TU
+1272 ETHIOPIC SYLLABLE TI
+1273 ETHIOPIC SYLLABLE TAA
+1274 ETHIOPIC SYLLABLE TEE
+1275 ETHIOPIC SYLLABLE TE
+1276 ETHIOPIC SYLLABLE TO
+1277 ETHIOPIC SYLLABLE TWA
+1278 ETHIOPIC SYLLABLE CA
+1279 ETHIOPIC SYLLABLE CU
+127a ETHIOPIC SYLLABLE CI
+127b ETHIOPIC SYLLABLE CAA
+127c ETHIOPIC SYLLABLE CEE
+127d ETHIOPIC SYLLABLE CE
+127e ETHIOPIC SYLLABLE CO
+127f ETHIOPIC SYLLABLE CWA
+1280 ETHIOPIC SYLLABLE XA
+1281 ETHIOPIC SYLLABLE XU
+1282 ETHIOPIC SYLLABLE XI
+1283 ETHIOPIC SYLLABLE XAA
+1284 ETHIOPIC SYLLABLE XEE
+1285 ETHIOPIC SYLLABLE XE
+1286 ETHIOPIC SYLLABLE XO
+1288 ETHIOPIC SYLLABLE XWA
+128a ETHIOPIC SYLLABLE XWI
+128b ETHIOPIC SYLLABLE XWAA
+128c ETHIOPIC SYLLABLE XWEE
+128d ETHIOPIC SYLLABLE XWE
+1290 ETHIOPIC SYLLABLE NA
+1291 ETHIOPIC SYLLABLE NU
+1292 ETHIOPIC SYLLABLE NI
+1293 ETHIOPIC SYLLABLE NAA
+1294 ETHIOPIC SYLLABLE NEE
+1295 ETHIOPIC SYLLABLE NE
+1296 ETHIOPIC SYLLABLE NO
+1297 ETHIOPIC SYLLABLE NWA
+1298 ETHIOPIC SYLLABLE NYA
+1299 ETHIOPIC SYLLABLE NYU
+129a ETHIOPIC SYLLABLE NYI
+129b ETHIOPIC SYLLABLE NYAA
+129c ETHIOPIC SYLLABLE NYEE
+129d ETHIOPIC SYLLABLE NYE
+129e ETHIOPIC SYLLABLE NYO
+129f ETHIOPIC SYLLABLE NYWA
+12a0 ETHIOPIC SYLLABLE GLOTTAL A
+12a1 ETHIOPIC SYLLABLE GLOTTAL U
+12a2 ETHIOPIC SYLLABLE GLOTTAL I
+12a3 ETHIOPIC SYLLABLE GLOTTAL AA
+12a4 ETHIOPIC SYLLABLE GLOTTAL EE
+12a5 ETHIOPIC SYLLABLE GLOTTAL E
+12a6 ETHIOPIC SYLLABLE GLOTTAL O
+12a7 ETHIOPIC SYLLABLE GLOTTAL WA
+12a8 ETHIOPIC SYLLABLE KA
+12a9 ETHIOPIC SYLLABLE KU
+12aa ETHIOPIC SYLLABLE KI
+12ab ETHIOPIC SYLLABLE KAA
+12ac ETHIOPIC SYLLABLE KEE
+12ad ETHIOPIC SYLLABLE KE
+12ae ETHIOPIC SYLLABLE KO
+12b0 ETHIOPIC SYLLABLE KWA
+12b2 ETHIOPIC SYLLABLE KWI
+12b3 ETHIOPIC SYLLABLE KWAA
+12b4 ETHIOPIC SYLLABLE KWEE
+12b5 ETHIOPIC SYLLABLE KWE
+12b8 ETHIOPIC SYLLABLE KXA
+12b9 ETHIOPIC SYLLABLE KXU
+12ba ETHIOPIC SYLLABLE KXI
+12bb ETHIOPIC SYLLABLE KXAA
+12bc ETHIOPIC SYLLABLE KXEE
+12bd ETHIOPIC SYLLABLE KXE
+12be ETHIOPIC SYLLABLE KXO
+12c0 ETHIOPIC SYLLABLE KXWA
+12c2 ETHIOPIC SYLLABLE KXWI
+12c3 ETHIOPIC SYLLABLE KXWAA
+12c4 ETHIOPIC SYLLABLE KXWEE
+12c5 ETHIOPIC SYLLABLE KXWE
+12c8 ETHIOPIC SYLLABLE WA
+12c9 ETHIOPIC SYLLABLE WU
+12ca ETHIOPIC SYLLABLE WI
+12cb ETHIOPIC SYLLABLE WAA
+12cc ETHIOPIC SYLLABLE WEE
+12cd ETHIOPIC SYLLABLE WE
+12ce ETHIOPIC SYLLABLE WO
+12d0 ETHIOPIC SYLLABLE PHARYNGEAL A
+12d1 ETHIOPIC SYLLABLE PHARYNGEAL U
+12d2 ETHIOPIC SYLLABLE PHARYNGEAL I
+12d3 ETHIOPIC SYLLABLE PHARYNGEAL AA
+12d4 ETHIOPIC SYLLABLE PHARYNGEAL EE
+12d5 ETHIOPIC SYLLABLE PHARYNGEAL E
+12d6 ETHIOPIC SYLLABLE PHARYNGEAL O
+12d8 ETHIOPIC SYLLABLE ZA
+12d9 ETHIOPIC SYLLABLE ZU
+12da ETHIOPIC SYLLABLE ZI
+12db ETHIOPIC SYLLABLE ZAA
+12dc ETHIOPIC SYLLABLE ZEE
+12dd ETHIOPIC SYLLABLE ZE
+12de ETHIOPIC SYLLABLE ZO
+12df ETHIOPIC SYLLABLE ZWA
+12e0 ETHIOPIC SYLLABLE ZHA
+12e1 ETHIOPIC SYLLABLE ZHU
+12e2 ETHIOPIC SYLLABLE ZHI
+12e3 ETHIOPIC SYLLABLE ZHAA
+12e4 ETHIOPIC SYLLABLE ZHEE
+12e5 ETHIOPIC SYLLABLE ZHE
+12e6 ETHIOPIC SYLLABLE ZHO
+12e7 ETHIOPIC SYLLABLE ZHWA
+12e8 ETHIOPIC SYLLABLE YA
+12e9 ETHIOPIC SYLLABLE YU
+12ea ETHIOPIC SYLLABLE YI
+12eb ETHIOPIC SYLLABLE YAA
+12ec ETHIOPIC SYLLABLE YEE
+12ed ETHIOPIC SYLLABLE YE
+12ee ETHIOPIC SYLLABLE YO
+12f0 ETHIOPIC SYLLABLE DA
+12f1 ETHIOPIC SYLLABLE DU
+12f2 ETHIOPIC SYLLABLE DI
+12f3 ETHIOPIC SYLLABLE DAA
+12f4 ETHIOPIC SYLLABLE DEE
+12f5 ETHIOPIC SYLLABLE DE
+12f6 ETHIOPIC SYLLABLE DO
+12f7 ETHIOPIC SYLLABLE DWA
+12f8 ETHIOPIC SYLLABLE DDA
+12f9 ETHIOPIC SYLLABLE DDU
+12fa ETHIOPIC SYLLABLE DDI
+12fb ETHIOPIC SYLLABLE DDAA
+12fc ETHIOPIC SYLLABLE DDEE
+12fd ETHIOPIC SYLLABLE DDE
+12fe ETHIOPIC SYLLABLE DDO
+12ff ETHIOPIC SYLLABLE DDWA
+1300 ETHIOPIC SYLLABLE JA
+1301 ETHIOPIC SYLLABLE JU
+1302 ETHIOPIC SYLLABLE JI
+1303 ETHIOPIC SYLLABLE JAA
+1304 ETHIOPIC SYLLABLE JEE
+1305 ETHIOPIC SYLLABLE JE
+1306 ETHIOPIC SYLLABLE JO
+1307 ETHIOPIC SYLLABLE JWA
+1308 ETHIOPIC SYLLABLE GA
+1309 ETHIOPIC SYLLABLE GU
+130a ETHIOPIC SYLLABLE GI
+130b ETHIOPIC SYLLABLE GAA
+130c ETHIOPIC SYLLABLE GEE
+130d ETHIOPIC SYLLABLE GE
+130e ETHIOPIC SYLLABLE GO
+1310 ETHIOPIC SYLLABLE GWA
+1312 ETHIOPIC SYLLABLE GWI
+1313 ETHIOPIC SYLLABLE GWAA
+1314 ETHIOPIC SYLLABLE GWEE
+1315 ETHIOPIC SYLLABLE GWE
+1318 ETHIOPIC SYLLABLE GGA
+1319 ETHIOPIC SYLLABLE GGU
+131a ETHIOPIC SYLLABLE GGI
+131b ETHIOPIC SYLLABLE GGAA
+131c ETHIOPIC SYLLABLE GGEE
+131d ETHIOPIC SYLLABLE GGE
+131e ETHIOPIC SYLLABLE GGO
+1320 ETHIOPIC SYLLABLE THA
+1321 ETHIOPIC SYLLABLE THU
+1322 ETHIOPIC SYLLABLE THI
+1323 ETHIOPIC SYLLABLE THAA
+1324 ETHIOPIC SYLLABLE THEE
+1325 ETHIOPIC SYLLABLE THE
+1326 ETHIOPIC SYLLABLE THO
+1327 ETHIOPIC SYLLABLE THWA
+1328 ETHIOPIC SYLLABLE CHA
+1329 ETHIOPIC SYLLABLE CHU
+132a ETHIOPIC SYLLABLE CHI
+132b ETHIOPIC SYLLABLE CHAA
+132c ETHIOPIC SYLLABLE CHEE
+132d ETHIOPIC SYLLABLE CHE
+132e ETHIOPIC SYLLABLE CHO
+132f ETHIOPIC SYLLABLE CHWA
+1330 ETHIOPIC SYLLABLE PHA
+1331 ETHIOPIC SYLLABLE PHU
+1332 ETHIOPIC SYLLABLE PHI
+1333 ETHIOPIC SYLLABLE PHAA
+1334 ETHIOPIC SYLLABLE PHEE
+1335 ETHIOPIC SYLLABLE PHE
+1336 ETHIOPIC SYLLABLE PHO
+1337 ETHIOPIC SYLLABLE PHWA
+1338 ETHIOPIC SYLLABLE TSA
+1339 ETHIOPIC SYLLABLE TSU
+133a ETHIOPIC SYLLABLE TSI
+133b ETHIOPIC SYLLABLE TSAA
+133c ETHIOPIC SYLLABLE TSEE
+133d ETHIOPIC SYLLABLE TSE
+133e ETHIOPIC SYLLABLE TSO
+133f ETHIOPIC SYLLABLE TSWA
+1340 ETHIOPIC SYLLABLE TZA
+1341 ETHIOPIC SYLLABLE TZU
+1342 ETHIOPIC SYLLABLE TZI
+1343 ETHIOPIC SYLLABLE TZAA
+1344 ETHIOPIC SYLLABLE TZEE
+1345 ETHIOPIC SYLLABLE TZE
+1346 ETHIOPIC SYLLABLE TZO
+1348 ETHIOPIC SYLLABLE FA
+1349 ETHIOPIC SYLLABLE FU
+134a ETHIOPIC SYLLABLE FI
+134b ETHIOPIC SYLLABLE FAA
+134c ETHIOPIC SYLLABLE FEE
+134d ETHIOPIC SYLLABLE FE
+134e ETHIOPIC SYLLABLE FO
+134f ETHIOPIC SYLLABLE FWA
+1350 ETHIOPIC SYLLABLE PA
+1351 ETHIOPIC SYLLABLE PU
+1352 ETHIOPIC SYLLABLE PI
+1353 ETHIOPIC SYLLABLE PAA
+1354 ETHIOPIC SYLLABLE PEE
+1355 ETHIOPIC SYLLABLE PE
+1356 ETHIOPIC SYLLABLE PO
+1357 ETHIOPIC SYLLABLE PWA
+1358 ETHIOPIC SYLLABLE RYA
+1359 ETHIOPIC SYLLABLE MYA
+135a ETHIOPIC SYLLABLE FYA
+1361 ETHIOPIC WORDSPACE
+1362 ETHIOPIC FULL STOP
+1363 ETHIOPIC COMMA
+1364 ETHIOPIC SEMICOLON
+1365 ETHIOPIC COLON
+1366 ETHIOPIC PREFACE COLON
+1367 ETHIOPIC QUESTION MARK
+1368 ETHIOPIC PARAGRAPH SEPARATOR
+1369 ETHIOPIC DIGIT ONE
+136a ETHIOPIC DIGIT TWO
+136b ETHIOPIC DIGIT THREE
+136c ETHIOPIC DIGIT FOUR
+136d ETHIOPIC DIGIT FIVE
+136e ETHIOPIC DIGIT SIX
+136f ETHIOPIC DIGIT SEVEN
+1370 ETHIOPIC DIGIT EIGHT
+1371 ETHIOPIC DIGIT NINE
+1372 ETHIOPIC NUMBER TEN
+1373 ETHIOPIC NUMBER TWENTY
+1374 ETHIOPIC NUMBER THIRTY
+1375 ETHIOPIC NUMBER FORTY
+1376 ETHIOPIC NUMBER FIFTY
+1377 ETHIOPIC NUMBER SIXTY
+1378 ETHIOPIC NUMBER SEVENTY
+1379 ETHIOPIC NUMBER EIGHTY
+137a ETHIOPIC NUMBER NINETY
+137b ETHIOPIC NUMBER HUNDRED
+137c ETHIOPIC NUMBER TEN THOUSAND
+13a0 CHEROKEE LETTER A
+13a1 CHEROKEE LETTER E
+13a2 CHEROKEE LETTER I
+13a3 CHEROKEE LETTER O
+13a4 CHEROKEE LETTER U
+13a5 CHEROKEE LETTER V
+13a6 CHEROKEE LETTER GA
+13a7 CHEROKEE LETTER KA
+13a8 CHEROKEE LETTER GE
+13a9 CHEROKEE LETTER GI
+13aa CHEROKEE LETTER GO
+13ab CHEROKEE LETTER GU
+13ac CHEROKEE LETTER GV
+13ad CHEROKEE LETTER HA
+13ae CHEROKEE LETTER HE
+13af CHEROKEE LETTER HI
+13b0 CHEROKEE LETTER HO
+13b1 CHEROKEE LETTER HU
+13b2 CHEROKEE LETTER HV
+13b3 CHEROKEE LETTER LA
+13b4 CHEROKEE LETTER LE
+13b5 CHEROKEE LETTER LI
+13b6 CHEROKEE LETTER LO
+13b7 CHEROKEE LETTER LU
+13b8 CHEROKEE LETTER LV
+13b9 CHEROKEE LETTER MA
+13ba CHEROKEE LETTER ME
+13bb CHEROKEE LETTER MI
+13bc CHEROKEE LETTER MO
+13bd CHEROKEE LETTER MU
+13be CHEROKEE LETTER NA
+13bf CHEROKEE LETTER HNA
+13c0 CHEROKEE LETTER NAH
+13c1 CHEROKEE LETTER NE
+13c2 CHEROKEE LETTER NI
+13c3 CHEROKEE LETTER NO
+13c4 CHEROKEE LETTER NU
+13c5 CHEROKEE LETTER NV
+13c6 CHEROKEE LETTER QUA
+13c7 CHEROKEE LETTER QUE
+13c8 CHEROKEE LETTER QUI
+13c9 CHEROKEE LETTER QUO
+13ca CHEROKEE LETTER QUU
+13cb CHEROKEE LETTER QUV
+13cc CHEROKEE LETTER SA
+13cd CHEROKEE LETTER S
+13ce CHEROKEE LETTER SE
+13cf CHEROKEE LETTER SI
+13d0 CHEROKEE LETTER SO
+13d1 CHEROKEE LETTER SU
+13d2 CHEROKEE LETTER SV
+13d3 CHEROKEE LETTER DA
+13d4 CHEROKEE LETTER TA
+13d5 CHEROKEE LETTER DE
+13d6 CHEROKEE LETTER TE
+13d7 CHEROKEE LETTER DI
+13d8 CHEROKEE LETTER TI
+13d9 CHEROKEE LETTER DO
+13da CHEROKEE LETTER DU
+13db CHEROKEE LETTER DV
+13dc CHEROKEE LETTER DLA
+13dd CHEROKEE LETTER TLA
+13de CHEROKEE LETTER TLE
+13df CHEROKEE LETTER TLI
+13e0 CHEROKEE LETTER TLO
+13e1 CHEROKEE LETTER TLU
+13e2 CHEROKEE LETTER TLV
+13e3 CHEROKEE LETTER TSA
+13e4 CHEROKEE LETTER TSE
+13e5 CHEROKEE LETTER TSI
+13e6 CHEROKEE LETTER TSO
+13e7 CHEROKEE LETTER TSU
+13e8 CHEROKEE LETTER TSV
+13e9 CHEROKEE LETTER WA
+13ea CHEROKEE LETTER WE
+13eb CHEROKEE LETTER WI
+13ec CHEROKEE LETTER WO
+13ed CHEROKEE LETTER WU
+13ee CHEROKEE LETTER WV
+13ef CHEROKEE LETTER YA
+13f0 CHEROKEE LETTER YE
+13f1 CHEROKEE LETTER YI
+13f2 CHEROKEE LETTER YO
+13f3 CHEROKEE LETTER YU
+13f4 CHEROKEE LETTER YV
+1401 CANADIAN SYLLABICS E
+1402 CANADIAN SYLLABICS AAI
+1403 CANADIAN SYLLABICS I
+1404 CANADIAN SYLLABICS II
+1405 CANADIAN SYLLABICS O
+1406 CANADIAN SYLLABICS OO
+1407 CANADIAN SYLLABICS Y-CREE OO
+1408 CANADIAN SYLLABICS CARRIER EE
+1409 CANADIAN SYLLABICS CARRIER I
+140a CANADIAN SYLLABICS A
+140b CANADIAN SYLLABICS AA
+140c CANADIAN SYLLABICS WE
+140d CANADIAN SYLLABICS WEST-CREE WE
+140e CANADIAN SYLLABICS WI
+140f CANADIAN SYLLABICS WEST-CREE WI
+1410 CANADIAN SYLLABICS WII
+1411 CANADIAN SYLLABICS WEST-CREE WII
+1412 CANADIAN SYLLABICS WO
+1413 CANADIAN SYLLABICS WEST-CREE WO
+1414 CANADIAN SYLLABICS WOO
+1415 CANADIAN SYLLABICS WEST-CREE WOO
+1416 CANADIAN SYLLABICS NASKAPI WOO
+1417 CANADIAN SYLLABICS WA
+1418 CANADIAN SYLLABICS WEST-CREE WA
+1419 CANADIAN SYLLABICS WAA
+141a CANADIAN SYLLABICS WEST-CREE WAA
+141b CANADIAN SYLLABICS NASKAPI WAA
+141c CANADIAN SYLLABICS AI
+141d CANADIAN SYLLABICS Y-CREE W
+141e CANADIAN SYLLABICS GLOTTAL STOP
+141f CANADIAN SYLLABICS FINAL ACUTE
+1420 CANADIAN SYLLABICS FINAL GRAVE
+1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422 CANADIAN SYLLABICS FINAL TOP HALF RING
+1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424 CANADIAN SYLLABICS FINAL RING
+1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427 CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429 CANADIAN SYLLABICS FINAL PLUS
+142a CANADIAN SYLLABICS FINAL DOWN TACK
+142b CANADIAN SYLLABICS EN
+142c CANADIAN SYLLABICS IN
+142d CANADIAN SYLLABICS ON
+142e CANADIAN SYLLABICS AN
+142f CANADIAN SYLLABICS PE
+1430 CANADIAN SYLLABICS PAAI
+1431 CANADIAN SYLLABICS PI
+1432 CANADIAN SYLLABICS PII
+1433 CANADIAN SYLLABICS PO
+1434 CANADIAN SYLLABICS POO
+1435 CANADIAN SYLLABICS Y-CREE POO
+1436 CANADIAN SYLLABICS CARRIER HEE
+1437 CANADIAN SYLLABICS CARRIER HI
+1438 CANADIAN SYLLABICS PA
+1439 CANADIAN SYLLABICS PAA
+143a CANADIAN SYLLABICS PWE
+143b CANADIAN SYLLABICS WEST-CREE PWE
+143c CANADIAN SYLLABICS PWI
+143d CANADIAN SYLLABICS WEST-CREE PWI
+143e CANADIAN SYLLABICS PWII
+143f CANADIAN SYLLABICS WEST-CREE PWII
+1440 CANADIAN SYLLABICS PWO
+1441 CANADIAN SYLLABICS WEST-CREE PWO
+1442 CANADIAN SYLLABICS PWOO
+1443 CANADIAN SYLLABICS WEST-CREE PWOO
+1444 CANADIAN SYLLABICS PWA
+1445 CANADIAN SYLLABICS WEST-CREE PWA
+1446 CANADIAN SYLLABICS PWAA
+1447 CANADIAN SYLLABICS WEST-CREE PWAA
+1448 CANADIAN SYLLABICS Y-CREE PWAA
+1449 CANADIAN SYLLABICS P
+144a CANADIAN SYLLABICS WEST-CREE P
+144b CANADIAN SYLLABICS CARRIER H
+144c CANADIAN SYLLABICS TE
+144d CANADIAN SYLLABICS TAAI
+144e CANADIAN SYLLABICS TI
+144f CANADIAN SYLLABICS TII
+1450 CANADIAN SYLLABICS TO
+1451 CANADIAN SYLLABICS TOO
+1452 CANADIAN SYLLABICS Y-CREE TOO
+1453 CANADIAN SYLLABICS CARRIER DEE
+1454 CANADIAN SYLLABICS CARRIER DI
+1455 CANADIAN SYLLABICS TA
+1456 CANADIAN SYLLABICS TAA
+1457 CANADIAN SYLLABICS TWE
+1458 CANADIAN SYLLABICS WEST-CREE TWE
+1459 CANADIAN SYLLABICS TWI
+145a CANADIAN SYLLABICS WEST-CREE TWI
+145b CANADIAN SYLLABICS TWII
+145c CANADIAN SYLLABICS WEST-CREE TWII
+145d CANADIAN SYLLABICS TWO
+145e CANADIAN SYLLABICS WEST-CREE TWO
+145f CANADIAN SYLLABICS TWOO
+1460 CANADIAN SYLLABICS WEST-CREE TWOO
+1461 CANADIAN SYLLABICS TWA
+1462 CANADIAN SYLLABICS WEST-CREE TWA
+1463 CANADIAN SYLLABICS TWAA
+1464 CANADIAN SYLLABICS WEST-CREE TWAA
+1465 CANADIAN SYLLABICS NASKAPI TWAA
+1466 CANADIAN SYLLABICS T
+1467 CANADIAN SYLLABICS TTE
+1468 CANADIAN SYLLABICS TTI
+1469 CANADIAN SYLLABICS TTO
+146a CANADIAN SYLLABICS TTA
+146b CANADIAN SYLLABICS KE
+146c CANADIAN SYLLABICS KAAI
+146d CANADIAN SYLLABICS KI
+146e CANADIAN SYLLABICS KII
+146f CANADIAN SYLLABICS KO
+1470 CANADIAN SYLLABICS KOO
+1471 CANADIAN SYLLABICS Y-CREE KOO
+1472 CANADIAN SYLLABICS KA
+1473 CANADIAN SYLLABICS KAA
+1474 CANADIAN SYLLABICS KWE
+1475 CANADIAN SYLLABICS WEST-CREE KWE
+1476 CANADIAN SYLLABICS KWI
+1477 CANADIAN SYLLABICS WEST-CREE KWI
+1478 CANADIAN SYLLABICS KWII
+1479 CANADIAN SYLLABICS WEST-CREE KWII
+147a CANADIAN SYLLABICS KWO
+147b CANADIAN SYLLABICS WEST-CREE KWO
+147c CANADIAN SYLLABICS KWOO
+147d CANADIAN SYLLABICS WEST-CREE KWOO
+147e CANADIAN SYLLABICS KWA
+147f CANADIAN SYLLABICS WEST-CREE KWA
+1480 CANADIAN SYLLABICS KWAA
+1481 CANADIAN SYLLABICS WEST-CREE KWAA
+1482 CANADIAN SYLLABICS NASKAPI KWAA
+1483 CANADIAN SYLLABICS K
+1484 CANADIAN SYLLABICS KW
+1485 CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486 CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487 CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488 CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489 CANADIAN SYLLABICS CE
+148a CANADIAN SYLLABICS CAAI
+148b CANADIAN SYLLABICS CI
+148c CANADIAN SYLLABICS CII
+148d CANADIAN SYLLABICS CO
+148e CANADIAN SYLLABICS COO
+148f CANADIAN SYLLABICS Y-CREE COO
+1490 CANADIAN SYLLABICS CA
+1491 CANADIAN SYLLABICS CAA
+1492 CANADIAN SYLLABICS CWE
+1493 CANADIAN SYLLABICS WEST-CREE CWE
+1494 CANADIAN SYLLABICS CWI
+1495 CANADIAN SYLLABICS WEST-CREE CWI
+1496 CANADIAN SYLLABICS CWII
+1497 CANADIAN SYLLABICS WEST-CREE CWII
+1498 CANADIAN SYLLABICS CWO
+1499 CANADIAN SYLLABICS WEST-CREE CWO
+149a CANADIAN SYLLABICS CWOO
+149b CANADIAN SYLLABICS WEST-CREE CWOO
+149c CANADIAN SYLLABICS CWA
+149d CANADIAN SYLLABICS WEST-CREE CWA
+149e CANADIAN SYLLABICS CWAA
+149f CANADIAN SYLLABICS WEST-CREE CWAA
+14a0 CANADIAN SYLLABICS NASKAPI CWAA
+14a1 CANADIAN SYLLABICS C
+14a2 CANADIAN SYLLABICS SAYISI TH
+14a3 CANADIAN SYLLABICS ME
+14a4 CANADIAN SYLLABICS MAAI
+14a5 CANADIAN SYLLABICS MI
+14a6 CANADIAN SYLLABICS MII
+14a7 CANADIAN SYLLABICS MO
+14a8 CANADIAN SYLLABICS MOO
+14a9 CANADIAN SYLLABICS Y-CREE MOO
+14aa CANADIAN SYLLABICS MA
+14ab CANADIAN SYLLABICS MAA
+14ac CANADIAN SYLLABICS MWE
+14ad CANADIAN SYLLABICS WEST-CREE MWE
+14ae CANADIAN SYLLABICS MWI
+14af CANADIAN SYLLABICS WEST-CREE MWI
+14b0 CANADIAN SYLLABICS MWII
+14b1 CANADIAN SYLLABICS WEST-CREE MWII
+14b2 CANADIAN SYLLABICS MWO
+14b3 CANADIAN SYLLABICS WEST-CREE MWO
+14b4 CANADIAN SYLLABICS MWOO
+14b5 CANADIAN SYLLABICS WEST-CREE MWOO
+14b6 CANADIAN SYLLABICS MWA
+14b7 CANADIAN SYLLABICS WEST-CREE MWA
+14b8 CANADIAN SYLLABICS MWAA
+14b9 CANADIAN SYLLABICS WEST-CREE MWAA
+14ba CANADIAN SYLLABICS NASKAPI MWAA
+14bb CANADIAN SYLLABICS M
+14bc CANADIAN SYLLABICS WEST-CREE M
+14bd CANADIAN SYLLABICS MH
+14be CANADIAN SYLLABICS ATHAPASCAN M
+14bf CANADIAN SYLLABICS SAYISI M
+14c0 CANADIAN SYLLABICS NE
+14c1 CANADIAN SYLLABICS NAAI
+14c2 CANADIAN SYLLABICS NI
+14c3 CANADIAN SYLLABICS NII
+14c4 CANADIAN SYLLABICS NO
+14c5 CANADIAN SYLLABICS NOO
+14c6 CANADIAN SYLLABICS Y-CREE NOO
+14c7 CANADIAN SYLLABICS NA
+14c8 CANADIAN SYLLABICS NAA
+14c9 CANADIAN SYLLABICS NWE
+14ca CANADIAN SYLLABICS WEST-CREE NWE
+14cb CANADIAN SYLLABICS NWA
+14cc CANADIAN SYLLABICS WEST-CREE NWA
+14cd CANADIAN SYLLABICS NWAA
+14ce CANADIAN SYLLABICS WEST-CREE NWAA
+14cf CANADIAN SYLLABICS NASKAPI NWAA
+14d0 CANADIAN SYLLABICS N
+14d1 CANADIAN SYLLABICS CARRIER NG
+14d2 CANADIAN SYLLABICS NH
+14d3 CANADIAN SYLLABICS LE
+14d4 CANADIAN SYLLABICS LAAI
+14d5 CANADIAN SYLLABICS LI
+14d6 CANADIAN SYLLABICS LII
+14d7 CANADIAN SYLLABICS LO
+14d8 CANADIAN SYLLABICS LOO
+14d9 CANADIAN SYLLABICS Y-CREE LOO
+14da CANADIAN SYLLABICS LA
+14db CANADIAN SYLLABICS LAA
+14dc CANADIAN SYLLABICS LWE
+14dd CANADIAN SYLLABICS WEST-CREE LWE
+14de CANADIAN SYLLABICS LWI
+14df CANADIAN SYLLABICS WEST-CREE LWI
+14e0 CANADIAN SYLLABICS LWII
+14e1 CANADIAN SYLLABICS WEST-CREE LWII
+14e2 CANADIAN SYLLABICS LWO
+14e3 CANADIAN SYLLABICS WEST-CREE LWO
+14e4 CANADIAN SYLLABICS LWOO
+14e5 CANADIAN SYLLABICS WEST-CREE LWOO
+14e6 CANADIAN SYLLABICS LWA
+14e7 CANADIAN SYLLABICS WEST-CREE LWA
+14e8 CANADIAN SYLLABICS LWAA
+14e9 CANADIAN SYLLABICS WEST-CREE LWAA
+14ea CANADIAN SYLLABICS L
+14eb CANADIAN SYLLABICS WEST-CREE L
+14ec CANADIAN SYLLABICS MEDIAL L
+14ed CANADIAN SYLLABICS SE
+14ee CANADIAN SYLLABICS SAAI
+14ef CANADIAN SYLLABICS SI
+14f0 CANADIAN SYLLABICS SII
+14f1 CANADIAN SYLLABICS SO
+14f2 CANADIAN SYLLABICS SOO
+14f3 CANADIAN SYLLABICS Y-CREE SOO
+14f4 CANADIAN SYLLABICS SA
+14f5 CANADIAN SYLLABICS SAA
+14f6 CANADIAN SYLLABICS SWE
+14f7 CANADIAN SYLLABICS WEST-CREE SWE
+14f8 CANADIAN SYLLABICS SWI
+14f9 CANADIAN SYLLABICS WEST-CREE SWI
+14fa CANADIAN SYLLABICS SWII
+14fb CANADIAN SYLLABICS WEST-CREE SWII
+14fc CANADIAN SYLLABICS SWO
+14fd CANADIAN SYLLABICS WEST-CREE SWO
+14fe CANADIAN SYLLABICS SWOO
+14ff CANADIAN SYLLABICS WEST-CREE SWOO
+1500 CANADIAN SYLLABICS SWA
+1501 CANADIAN SYLLABICS WEST-CREE SWA
+1502 CANADIAN SYLLABICS SWAA
+1503 CANADIAN SYLLABICS WEST-CREE SWAA
+1504 CANADIAN SYLLABICS NASKAPI SWAA
+1505 CANADIAN SYLLABICS S
+1506 CANADIAN SYLLABICS ATHAPASCAN S
+1507 CANADIAN SYLLABICS SW
+1508 CANADIAN SYLLABICS BLACKFOOT S
+1509 CANADIAN SYLLABICS MOOSE-CREE SK
+150a CANADIAN SYLLABICS NASKAPI SKW
+150b CANADIAN SYLLABICS NASKAPI S-W
+150c CANADIAN SYLLABICS NASKAPI SPWA
+150d CANADIAN SYLLABICS NASKAPI STWA
+150e CANADIAN SYLLABICS NASKAPI SKWA
+150f CANADIAN SYLLABICS NASKAPI SCWA
+1510 CANADIAN SYLLABICS SHE
+1511 CANADIAN SYLLABICS SHI
+1512 CANADIAN SYLLABICS SHII
+1513 CANADIAN SYLLABICS SHO
+1514 CANADIAN SYLLABICS SHOO
+1515 CANADIAN SYLLABICS SHA
+1516 CANADIAN SYLLABICS SHAA
+1517 CANADIAN SYLLABICS SHWE
+1518 CANADIAN SYLLABICS WEST-CREE SHWE
+1519 CANADIAN SYLLABICS SHWI
+151a CANADIAN SYLLABICS WEST-CREE SHWI
+151b CANADIAN SYLLABICS SHWII
+151c CANADIAN SYLLABICS WEST-CREE SHWII
+151d CANADIAN SYLLABICS SHWO
+151e CANADIAN SYLLABICS WEST-CREE SHWO
+151f CANADIAN SYLLABICS SHWOO
+1520 CANADIAN SYLLABICS WEST-CREE SHWOO
+1521 CANADIAN SYLLABICS SHWA
+1522 CANADIAN SYLLABICS WEST-CREE SHWA
+1523 CANADIAN SYLLABICS SHWAA
+1524 CANADIAN SYLLABICS WEST-CREE SHWAA
+1525 CANADIAN SYLLABICS SH
+1526 CANADIAN SYLLABICS YE
+1527 CANADIAN SYLLABICS YAAI
+1528 CANADIAN SYLLABICS YI
+1529 CANADIAN SYLLABICS YII
+152a CANADIAN SYLLABICS YO
+152b CANADIAN SYLLABICS YOO
+152c CANADIAN SYLLABICS Y-CREE YOO
+152d CANADIAN SYLLABICS YA
+152e CANADIAN SYLLABICS YAA
+152f CANADIAN SYLLABICS YWE
+1530 CANADIAN SYLLABICS WEST-CREE YWE
+1531 CANADIAN SYLLABICS YWI
+1532 CANADIAN SYLLABICS WEST-CREE YWI
+1533 CANADIAN SYLLABICS YWII
+1534 CANADIAN SYLLABICS WEST-CREE YWII
+1535 CANADIAN SYLLABICS YWO
+1536 CANADIAN SYLLABICS WEST-CREE YWO
+1537 CANADIAN SYLLABICS YWOO
+1538 CANADIAN SYLLABICS WEST-CREE YWOO
+1539 CANADIAN SYLLABICS YWA
+153a CANADIAN SYLLABICS WEST-CREE YWA
+153b CANADIAN SYLLABICS YWAA
+153c CANADIAN SYLLABICS WEST-CREE YWAA
+153d CANADIAN SYLLABICS NASKAPI YWAA
+153e CANADIAN SYLLABICS Y
+153f CANADIAN SYLLABICS BIBLE-CREE Y
+1540 CANADIAN SYLLABICS WEST-CREE Y
+1541 CANADIAN SYLLABICS SAYISI YI
+1542 CANADIAN SYLLABICS RE
+1543 CANADIAN SYLLABICS R-CREE RE
+1544 CANADIAN SYLLABICS WEST-CREE LE
+1545 CANADIAN SYLLABICS RAAI
+1546 CANADIAN SYLLABICS RI
+1547 CANADIAN SYLLABICS RII
+1548 CANADIAN SYLLABICS RO
+1549 CANADIAN SYLLABICS ROO
+154a CANADIAN SYLLABICS WEST-CREE LO
+154b CANADIAN SYLLABICS RA
+154c CANADIAN SYLLABICS RAA
+154d CANADIAN SYLLABICS WEST-CREE LA
+154e CANADIAN SYLLABICS RWAA
+154f CANADIAN SYLLABICS WEST-CREE RWAA
+1550 CANADIAN SYLLABICS R
+1551 CANADIAN SYLLABICS WEST-CREE R
+1552 CANADIAN SYLLABICS MEDIAL R
+1553 CANADIAN SYLLABICS FE
+1554 CANADIAN SYLLABICS FAAI
+1555 CANADIAN SYLLABICS FI
+1556 CANADIAN SYLLABICS FII
+1557 CANADIAN SYLLABICS FO
+1558 CANADIAN SYLLABICS FOO
+1559 CANADIAN SYLLABICS FA
+155a CANADIAN SYLLABICS FAA
+155b CANADIAN SYLLABICS FWAA
+155c CANADIAN SYLLABICS WEST-CREE FWAA
+155d CANADIAN SYLLABICS F
+155e CANADIAN SYLLABICS THE
+155f CANADIAN SYLLABICS N-CREE THE
+1560 CANADIAN SYLLABICS THI
+1561 CANADIAN SYLLABICS N-CREE THI
+1562 CANADIAN SYLLABICS THII
+1563 CANADIAN SYLLABICS N-CREE THII
+1564 CANADIAN SYLLABICS THO
+1565 CANADIAN SYLLABICS THOO
+1566 CANADIAN SYLLABICS THA
+1567 CANADIAN SYLLABICS THAA
+1568 CANADIAN SYLLABICS THWAA
+1569 CANADIAN SYLLABICS WEST-CREE THWAA
+156a CANADIAN SYLLABICS TH
+156b CANADIAN SYLLABICS TTHE
+156c CANADIAN SYLLABICS TTHI
+156d CANADIAN SYLLABICS TTHO
+156e CANADIAN SYLLABICS TTHA
+156f CANADIAN SYLLABICS TTH
+1570 CANADIAN SYLLABICS TYE
+1571 CANADIAN SYLLABICS TYI
+1572 CANADIAN SYLLABICS TYO
+1573 CANADIAN SYLLABICS TYA
+1574 CANADIAN SYLLABICS NUNAVIK HE
+1575 CANADIAN SYLLABICS NUNAVIK HI
+1576 CANADIAN SYLLABICS NUNAVIK HII
+1577 CANADIAN SYLLABICS NUNAVIK HO
+1578 CANADIAN SYLLABICS NUNAVIK HOO
+1579 CANADIAN SYLLABICS NUNAVIK HA
+157a CANADIAN SYLLABICS NUNAVIK HAA
+157b CANADIAN SYLLABICS NUNAVIK H
+157c CANADIAN SYLLABICS NUNAVUT H
+157d CANADIAN SYLLABICS HK
+157e CANADIAN SYLLABICS QAAI
+157f CANADIAN SYLLABICS QI
+1580 CANADIAN SYLLABICS QII
+1581 CANADIAN SYLLABICS QO
+1582 CANADIAN SYLLABICS QOO
+1583 CANADIAN SYLLABICS QA
+1584 CANADIAN SYLLABICS QAA
+1585 CANADIAN SYLLABICS Q
+1586 CANADIAN SYLLABICS TLHE
+1587 CANADIAN SYLLABICS TLHI
+1588 CANADIAN SYLLABICS TLHO
+1589 CANADIAN SYLLABICS TLHA
+158a CANADIAN SYLLABICS WEST-CREE RE
+158b CANADIAN SYLLABICS WEST-CREE RI
+158c CANADIAN SYLLABICS WEST-CREE RO
+158d CANADIAN SYLLABICS WEST-CREE RA
+158e CANADIAN SYLLABICS NGAAI
+158f CANADIAN SYLLABICS NGI
+1590 CANADIAN SYLLABICS NGII
+1591 CANADIAN SYLLABICS NGO
+1592 CANADIAN SYLLABICS NGOO
+1593 CANADIAN SYLLABICS NGA
+1594 CANADIAN SYLLABICS NGAA
+1595 CANADIAN SYLLABICS NG
+1596 CANADIAN SYLLABICS NNG
+1597 CANADIAN SYLLABICS SAYISI SHE
+1598 CANADIAN SYLLABICS SAYISI SHI
+1599 CANADIAN SYLLABICS SAYISI SHO
+159a CANADIAN SYLLABICS SAYISI SHA
+159b CANADIAN SYLLABICS WOODS-CREE THE
+159c CANADIAN SYLLABICS WOODS-CREE THI
+159d CANADIAN SYLLABICS WOODS-CREE THO
+159e CANADIAN SYLLABICS WOODS-CREE THA
+159f CANADIAN SYLLABICS WOODS-CREE TH
+15a0 CANADIAN SYLLABICS LHI
+15a1 CANADIAN SYLLABICS LHII
+15a2 CANADIAN SYLLABICS LHO
+15a3 CANADIAN SYLLABICS LHOO
+15a4 CANADIAN SYLLABICS LHA
+15a5 CANADIAN SYLLABICS LHAA
+15a6 CANADIAN SYLLABICS LH
+15a7 CANADIAN SYLLABICS TH-CREE THE
+15a8 CANADIAN SYLLABICS TH-CREE THI
+15a9 CANADIAN SYLLABICS TH-CREE THII
+15aa CANADIAN SYLLABICS TH-CREE THO
+15ab CANADIAN SYLLABICS TH-CREE THOO
+15ac CANADIAN SYLLABICS TH-CREE THA
+15ad CANADIAN SYLLABICS TH-CREE THAA
+15ae CANADIAN SYLLABICS TH-CREE TH
+15af CANADIAN SYLLABICS AIVILIK B
+15b0 CANADIAN SYLLABICS BLACKFOOT E
+15b1 CANADIAN SYLLABICS BLACKFOOT I
+15b2 CANADIAN SYLLABICS BLACKFOOT O
+15b3 CANADIAN SYLLABICS BLACKFOOT A
+15b4 CANADIAN SYLLABICS BLACKFOOT WE
+15b5 CANADIAN SYLLABICS BLACKFOOT WI
+15b6 CANADIAN SYLLABICS BLACKFOOT WO
+15b7 CANADIAN SYLLABICS BLACKFOOT WA
+15b8 CANADIAN SYLLABICS BLACKFOOT NE
+15b9 CANADIAN SYLLABICS BLACKFOOT NI
+15ba CANADIAN SYLLABICS BLACKFOOT NO
+15bb CANADIAN SYLLABICS BLACKFOOT NA
+15bc CANADIAN SYLLABICS BLACKFOOT KE
+15bd CANADIAN SYLLABICS BLACKFOOT KI
+15be CANADIAN SYLLABICS BLACKFOOT KO
+15bf CANADIAN SYLLABICS BLACKFOOT KA
+15c0 CANADIAN SYLLABICS SAYISI HE
+15c1 CANADIAN SYLLABICS SAYISI HI
+15c2 CANADIAN SYLLABICS SAYISI HO
+15c3 CANADIAN SYLLABICS SAYISI HA
+15c4 CANADIAN SYLLABICS CARRIER GHU
+15c5 CANADIAN SYLLABICS CARRIER GHO
+15c6 CANADIAN SYLLABICS CARRIER GHE
+15c7 CANADIAN SYLLABICS CARRIER GHEE
+15c8 CANADIAN SYLLABICS CARRIER GHI
+15c9 CANADIAN SYLLABICS CARRIER GHA
+15ca CANADIAN SYLLABICS CARRIER RU
+15cb CANADIAN SYLLABICS CARRIER RO
+15cc CANADIAN SYLLABICS CARRIER RE
+15cd CANADIAN SYLLABICS CARRIER REE
+15ce CANADIAN SYLLABICS CARRIER RI
+15cf CANADIAN SYLLABICS CARRIER RA
+15d0 CANADIAN SYLLABICS CARRIER WU
+15d1 CANADIAN SYLLABICS CARRIER WO
+15d2 CANADIAN SYLLABICS CARRIER WE
+15d3 CANADIAN SYLLABICS CARRIER WEE
+15d4 CANADIAN SYLLABICS CARRIER WI
+15d5 CANADIAN SYLLABICS CARRIER WA
+15d6 CANADIAN SYLLABICS CARRIER HWU
+15d7 CANADIAN SYLLABICS CARRIER HWO
+15d8 CANADIAN SYLLABICS CARRIER HWE
+15d9 CANADIAN SYLLABICS CARRIER HWEE
+15da CANADIAN SYLLABICS CARRIER HWI
+15db CANADIAN SYLLABICS CARRIER HWA
+15dc CANADIAN SYLLABICS CARRIER THU
+15dd CANADIAN SYLLABICS CARRIER THO
+15de CANADIAN SYLLABICS CARRIER THE
+15df CANADIAN SYLLABICS CARRIER THEE
+15e0 CANADIAN SYLLABICS CARRIER THI
+15e1 CANADIAN SYLLABICS CARRIER THA
+15e2 CANADIAN SYLLABICS CARRIER TTU
+15e3 CANADIAN SYLLABICS CARRIER TTO
+15e4 CANADIAN SYLLABICS CARRIER TTE
+15e5 CANADIAN SYLLABICS CARRIER TTEE
+15e6 CANADIAN SYLLABICS CARRIER TTI
+15e7 CANADIAN SYLLABICS CARRIER TTA
+15e8 CANADIAN SYLLABICS CARRIER PU
+15e9 CANADIAN SYLLABICS CARRIER PO
+15ea CANADIAN SYLLABICS CARRIER PE
+15eb CANADIAN SYLLABICS CARRIER PEE
+15ec CANADIAN SYLLABICS CARRIER PI
+15ed CANADIAN SYLLABICS CARRIER PA
+15ee CANADIAN SYLLABICS CARRIER P
+15ef CANADIAN SYLLABICS CARRIER GU
+15f0 CANADIAN SYLLABICS CARRIER GO
+15f1 CANADIAN SYLLABICS CARRIER GE
+15f2 CANADIAN SYLLABICS CARRIER GEE
+15f3 CANADIAN SYLLABICS CARRIER GI
+15f4 CANADIAN SYLLABICS CARRIER GA
+15f5 CANADIAN SYLLABICS CARRIER KHU
+15f6 CANADIAN SYLLABICS CARRIER KHO
+15f7 CANADIAN SYLLABICS CARRIER KHE
+15f8 CANADIAN SYLLABICS CARRIER KHEE
+15f9 CANADIAN SYLLABICS CARRIER KHI
+15fa CANADIAN SYLLABICS CARRIER KHA
+15fb CANADIAN SYLLABICS CARRIER KKU
+15fc CANADIAN SYLLABICS CARRIER KKO
+15fd CANADIAN SYLLABICS CARRIER KKE
+15fe CANADIAN SYLLABICS CARRIER KKEE
+15ff CANADIAN SYLLABICS CARRIER KKI
+1600 CANADIAN SYLLABICS CARRIER KKA
+1601 CANADIAN SYLLABICS CARRIER KK
+1602 CANADIAN SYLLABICS CARRIER NU
+1603 CANADIAN SYLLABICS CARRIER NO
+1604 CANADIAN SYLLABICS CARRIER NE
+1605 CANADIAN SYLLABICS CARRIER NEE
+1606 CANADIAN SYLLABICS CARRIER NI
+1607 CANADIAN SYLLABICS CARRIER NA
+1608 CANADIAN SYLLABICS CARRIER MU
+1609 CANADIAN SYLLABICS CARRIER MO
+160a CANADIAN SYLLABICS CARRIER ME
+160b CANADIAN SYLLABICS CARRIER MEE
+160c CANADIAN SYLLABICS CARRIER MI
+160d CANADIAN SYLLABICS CARRIER MA
+160e CANADIAN SYLLABICS CARRIER YU
+160f CANADIAN SYLLABICS CARRIER YO
+1610 CANADIAN SYLLABICS CARRIER YE
+1611 CANADIAN SYLLABICS CARRIER YEE
+1612 CANADIAN SYLLABICS CARRIER YI
+1613 CANADIAN SYLLABICS CARRIER YA
+1614 CANADIAN SYLLABICS CARRIER JU
+1615 CANADIAN SYLLABICS SAYISI JU
+1616 CANADIAN SYLLABICS CARRIER JO
+1617 CANADIAN SYLLABICS CARRIER JE
+1618 CANADIAN SYLLABICS CARRIER JEE
+1619 CANADIAN SYLLABICS CARRIER JI
+161a CANADIAN SYLLABICS SAYISI JI
+161b CANADIAN SYLLABICS CARRIER JA
+161c CANADIAN SYLLABICS CARRIER JJU
+161d CANADIAN SYLLABICS CARRIER JJO
+161e CANADIAN SYLLABICS CARRIER JJE
+161f CANADIAN SYLLABICS CARRIER JJEE
+1620 CANADIAN SYLLABICS CARRIER JJI
+1621 CANADIAN SYLLABICS CARRIER JJA
+1622 CANADIAN SYLLABICS CARRIER LU
+1623 CANADIAN SYLLABICS CARRIER LO
+1624 CANADIAN SYLLABICS CARRIER LE
+1625 CANADIAN SYLLABICS CARRIER LEE
+1626 CANADIAN SYLLABICS CARRIER LI
+1627 CANADIAN SYLLABICS CARRIER LA
+1628 CANADIAN SYLLABICS CARRIER DLU
+1629 CANADIAN SYLLABICS CARRIER DLO
+162a CANADIAN SYLLABICS CARRIER DLE
+162b CANADIAN SYLLABICS CARRIER DLEE
+162c CANADIAN SYLLABICS CARRIER DLI
+162d CANADIAN SYLLABICS CARRIER DLA
+162e CANADIAN SYLLABICS CARRIER LHU
+162f CANADIAN SYLLABICS CARRIER LHO
+1630 CANADIAN SYLLABICS CARRIER LHE
+1631 CANADIAN SYLLABICS CARRIER LHEE
+1632 CANADIAN SYLLABICS CARRIER LHI
+1633 CANADIAN SYLLABICS CARRIER LHA
+1634 CANADIAN SYLLABICS CARRIER TLHU
+1635 CANADIAN SYLLABICS CARRIER TLHO
+1636 CANADIAN SYLLABICS CARRIER TLHE
+1637 CANADIAN SYLLABICS CARRIER TLHEE
+1638 CANADIAN SYLLABICS CARRIER TLHI
+1639 CANADIAN SYLLABICS CARRIER TLHA
+163a CANADIAN SYLLABICS CARRIER TLU
+163b CANADIAN SYLLABICS CARRIER TLO
+163c CANADIAN SYLLABICS CARRIER TLE
+163d CANADIAN SYLLABICS CARRIER TLEE
+163e CANADIAN SYLLABICS CARRIER TLI
+163f CANADIAN SYLLABICS CARRIER TLA
+1640 CANADIAN SYLLABICS CARRIER ZU
+1641 CANADIAN SYLLABICS CARRIER ZO
+1642 CANADIAN SYLLABICS CARRIER ZE
+1643 CANADIAN SYLLABICS CARRIER ZEE
+1644 CANADIAN SYLLABICS CARRIER ZI
+1645 CANADIAN SYLLABICS CARRIER ZA
+1646 CANADIAN SYLLABICS CARRIER Z
+1647 CANADIAN SYLLABICS CARRIER INITIAL Z
+1648 CANADIAN SYLLABICS CARRIER DZU
+1649 CANADIAN SYLLABICS CARRIER DZO
+164a CANADIAN SYLLABICS CARRIER DZE
+164b CANADIAN SYLLABICS CARRIER DZEE
+164c CANADIAN SYLLABICS CARRIER DZI
+164d CANADIAN SYLLABICS CARRIER DZA
+164e CANADIAN SYLLABICS CARRIER SU
+164f CANADIAN SYLLABICS CARRIER SO
+1650 CANADIAN SYLLABICS CARRIER SE
+1651 CANADIAN SYLLABICS CARRIER SEE
+1652 CANADIAN SYLLABICS CARRIER SI
+1653 CANADIAN SYLLABICS CARRIER SA
+1654 CANADIAN SYLLABICS CARRIER SHU
+1655 CANADIAN SYLLABICS CARRIER SHO
+1656 CANADIAN SYLLABICS CARRIER SHE
+1657 CANADIAN SYLLABICS CARRIER SHEE
+1658 CANADIAN SYLLABICS CARRIER SHI
+1659 CANADIAN SYLLABICS CARRIER SHA
+165a CANADIAN SYLLABICS CARRIER SH
+165b CANADIAN SYLLABICS CARRIER TSU
+165c CANADIAN SYLLABICS CARRIER TSO
+165d CANADIAN SYLLABICS CARRIER TSE
+165e CANADIAN SYLLABICS CARRIER TSEE
+165f CANADIAN SYLLABICS CARRIER TSI
+1660 CANADIAN SYLLABICS CARRIER TSA
+1661 CANADIAN SYLLABICS CARRIER CHU
+1662 CANADIAN SYLLABICS CARRIER CHO
+1663 CANADIAN SYLLABICS CARRIER CHE
+1664 CANADIAN SYLLABICS CARRIER CHEE
+1665 CANADIAN SYLLABICS CARRIER CHI
+1666 CANADIAN SYLLABICS CARRIER CHA
+1667 CANADIAN SYLLABICS CARRIER TTSU
+1668 CANADIAN SYLLABICS CARRIER TTSO
+1669 CANADIAN SYLLABICS CARRIER TTSE
+166a CANADIAN SYLLABICS CARRIER TTSEE
+166b CANADIAN SYLLABICS CARRIER TTSI
+166c CANADIAN SYLLABICS CARRIER TTSA
+166d CANADIAN SYLLABICS CHI SIGN
+166e CANADIAN SYLLABICS FULL STOP
+166f CANADIAN SYLLABICS QAI
+1670 CANADIAN SYLLABICS NGAI
+1671 CANADIAN SYLLABICS NNGI
+1672 CANADIAN SYLLABICS NNGII
+1673 CANADIAN SYLLABICS NNGO
+1674 CANADIAN SYLLABICS NNGOO
+1675 CANADIAN SYLLABICS NNGA
+1676 CANADIAN SYLLABICS NNGAA
+1680 OGHAM SPACE MARK
+1681 OGHAM LETTER BEITH
+1682 OGHAM LETTER LUIS
+1683 OGHAM LETTER FEARN
+1684 OGHAM LETTER SAIL
+1685 OGHAM LETTER NION
+1686 OGHAM LETTER UATH
+1687 OGHAM LETTER DAIR
+1688 OGHAM LETTER TINNE
+1689 OGHAM LETTER COLL
+168a OGHAM LETTER CEIRT
+168b OGHAM LETTER MUIN
+168c OGHAM LETTER GORT
+168d OGHAM LETTER NGEADAL
+168e OGHAM LETTER STRAIF
+168f OGHAM LETTER RUIS
+1690 OGHAM LETTER AILM
+1691 OGHAM LETTER ONN
+1692 OGHAM LETTER UR
+1693 OGHAM LETTER EADHADH
+1694 OGHAM LETTER IODHADH
+1695 OGHAM LETTER EABHADH
+1696 OGHAM LETTER OR
+1697 OGHAM LETTER UILLEANN
+1698 OGHAM LETTER IFIN
+1699 OGHAM LETTER EAMHANCHOLL
+169a OGHAM LETTER PEITH
+169b OGHAM FEATHER MARK
+169c OGHAM REVERSED FEATHER MARK
+16a0 RUNIC LETTER FEHU FEOH FE F
+16a1 RUNIC LETTER V
+16a2 RUNIC LETTER URUZ UR U
+16a3 RUNIC LETTER YR
+16a4 RUNIC LETTER Y
+16a5 RUNIC LETTER W
+16a6 RUNIC LETTER THURISAZ THURS THORN
+16a7 RUNIC LETTER ETH
+16a8 RUNIC LETTER ANSUZ A
+16a9 RUNIC LETTER OS O
+16aa RUNIC LETTER AC A
+16ab RUNIC LETTER AESC
+16ac RUNIC LETTER LONG-BRANCH-OSS O
+16ad RUNIC LETTER SHORT-TWIG-OSS O
+16ae RUNIC LETTER O
+16af RUNIC LETTER OE
+16b0 RUNIC LETTER ON
+16b1 RUNIC LETTER RAIDO RAD REID R
+16b2 RUNIC LETTER KAUNA
+16b3 RUNIC LETTER CEN
+16b4 RUNIC LETTER KAUN K
+16b5 RUNIC LETTER G
+16b6 RUNIC LETTER ENG
+16b7 RUNIC LETTER GEBO GYFU G
+16b8 RUNIC LETTER GAR
+16b9 RUNIC LETTER WUNJO WYNN W
+16ba RUNIC LETTER HAGLAZ H
+16bb RUNIC LETTER HAEGL H
+16bc RUNIC LETTER LONG-BRANCH-HAGALL H
+16bd RUNIC LETTER SHORT-TWIG-HAGALL H
+16be RUNIC LETTER NAUDIZ NYD NAUD N
+16bf RUNIC LETTER SHORT-TWIG-NAUD N
+16c0 RUNIC LETTER DOTTED-N
+16c1 RUNIC LETTER ISAZ IS ISS I
+16c2 RUNIC LETTER E
+16c3 RUNIC LETTER JERAN J
+16c4 RUNIC LETTER GER
+16c5 RUNIC LETTER LONG-BRANCH-AR AE
+16c6 RUNIC LETTER SHORT-TWIG-AR A
+16c7 RUNIC LETTER IWAZ EOH
+16c8 RUNIC LETTER PERTHO PEORTH P
+16c9 RUNIC LETTER ALGIZ EOLHX
+16ca RUNIC LETTER SOWILO S
+16cb RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16cc RUNIC LETTER SHORT-TWIG-SOL S
+16cd RUNIC LETTER C
+16ce RUNIC LETTER Z
+16cf RUNIC LETTER TIWAZ TIR TYR T
+16d0 RUNIC LETTER SHORT-TWIG-TYR T
+16d1 RUNIC LETTER D
+16d2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+16d3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+16d4 RUNIC LETTER DOTTED-P
+16d5 RUNIC LETTER OPEN-P
+16d6 RUNIC LETTER EHWAZ EH E
+16d7 RUNIC LETTER MANNAZ MAN M
+16d8 RUNIC LETTER LONG-BRANCH-MADR M
+16d9 RUNIC LETTER SHORT-TWIG-MADR M
+16da RUNIC LETTER LAUKAZ LAGU LOGR L
+16db RUNIC LETTER DOTTED-L
+16dc RUNIC LETTER INGWAZ
+16dd RUNIC LETTER ING
+16de RUNIC LETTER DAGAZ DAEG D
+16df RUNIC LETTER OTHALAN ETHEL O
+16e0 RUNIC LETTER EAR
+16e1 RUNIC LETTER IOR
+16e2 RUNIC LETTER CWEORTH
+16e3 RUNIC LETTER CALC
+16e4 RUNIC LETTER CEALC
+16e5 RUNIC LETTER STAN
+16e6 RUNIC LETTER LONG-BRANCH-YR
+16e7 RUNIC LETTER SHORT-TWIG-YR
+16e8 RUNIC LETTER ICELANDIC-YR
+16e9 RUNIC LETTER Q
+16ea RUNIC LETTER X
+16eb RUNIC SINGLE PUNCTUATION
+16ec RUNIC MULTIPLE PUNCTUATION
+16ed RUNIC CROSS PUNCTUATION
+16ee RUNIC ARLAUG SYMBOL
+16ef RUNIC TVIMADUR SYMBOL
+16f0 RUNIC BELGTHOR SYMBOL
+1780 KHMER LETTER KA
+1781 KHMER LETTER KHA
+1782 KHMER LETTER KO
+1783 KHMER LETTER KHO
+1784 KHMER LETTER NGO
+1785 KHMER LETTER CA
+1786 KHMER LETTER CHA
+1787 KHMER LETTER CO
+1788 KHMER LETTER CHO
+1789 KHMER LETTER NYO
+178a KHMER LETTER DA
+178b KHMER LETTER TTHA
+178c KHMER LETTER DO
+178d KHMER LETTER TTHO
+178e KHMER LETTER NNO
+178f KHMER LETTER TA
+1790 KHMER LETTER THA
+1791 KHMER LETTER TO
+1792 KHMER LETTER THO
+1793 KHMER LETTER NO
+1794 KHMER LETTER BA
+1795 KHMER LETTER PHA
+1796 KHMER LETTER PO
+1797 KHMER LETTER PHO
+1798 KHMER LETTER MO
+1799 KHMER LETTER YO
+179a KHMER LETTER RO
+179b KHMER LETTER LO
+179c KHMER LETTER VO
+179d KHMER LETTER SHA
+179e KHMER LETTER SSO
+179f KHMER LETTER SA
+17a0 KHMER LETTER HA
+17a1 KHMER LETTER LA
+17a2 KHMER LETTER QA
+17a3 KHMER INDEPENDENT VOWEL QAQ
+17a4 KHMER INDEPENDENT VOWEL QAA
+17a5 KHMER INDEPENDENT VOWEL QI
+17a6 KHMER INDEPENDENT VOWEL QII
+17a7 KHMER INDEPENDENT VOWEL QU
+17a8 KHMER INDEPENDENT VOWEL QUK
+17a9 KHMER INDEPENDENT VOWEL QUU
+17aa KHMER INDEPENDENT VOWEL QUUV
+17ab KHMER INDEPENDENT VOWEL RY
+17ac KHMER INDEPENDENT VOWEL RYY
+17ad KHMER INDEPENDENT VOWEL LY
+17ae KHMER INDEPENDENT VOWEL LYY
+17af KHMER INDEPENDENT VOWEL QE
+17b0 KHMER INDEPENDENT VOWEL QAI
+17b1 KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17b2 KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17b3 KHMER INDEPENDENT VOWEL QAU
+17b4 KHMER VOWEL INHERENT AQ
+17b5 KHMER VOWEL INHERENT AA
+17b6 KHMER VOWEL SIGN AA
+17b7 KHMER VOWEL SIGN I
+17b8 KHMER VOWEL SIGN II
+17b9 KHMER VOWEL SIGN Y
+17ba KHMER VOWEL SIGN YY
+17bb KHMER VOWEL SIGN U
+17bc KHMER VOWEL SIGN UU
+17bd KHMER VOWEL SIGN UA
+17be KHMER VOWEL SIGN OE
+17bf KHMER VOWEL SIGN YA
+17c0 KHMER VOWEL SIGN IE
+17c1 KHMER VOWEL SIGN E
+17c2 KHMER VOWEL SIGN AE
+17c3 KHMER VOWEL SIGN AI
+17c4 KHMER VOWEL SIGN OO
+17c5 KHMER VOWEL SIGN AU
+17c6 KHMER SIGN NIKAHIT
+17c7 KHMER SIGN REAHMUK
+17c8 KHMER SIGN YUUKALEAPINTU
+17c9 KHMER SIGN MUUSIKATOAN
+17ca KHMER SIGN TRIISAP
+17cb KHMER SIGN BANTOC
+17cc KHMER SIGN ROBAT
+17cd KHMER SIGN TOANDAKHIAT
+17ce KHMER SIGN KAKABAT
+17cf KHMER SIGN AHSDA
+17d0 KHMER SIGN SAMYOK SANNYA
+17d1 KHMER SIGN VIRIAM
+17d2 KHMER SIGN COENG
+17d3 KHMER SIGN BATHAMASAT
+17d4 KHMER SIGN KHAN
+17d5 KHMER SIGN BARIYOOSAN
+17d6 KHMER SIGN CAMNUC PII KUUH
+17d7 KHMER SIGN LEK TOO
+17d8 KHMER SIGN BEYYAL
+17d9 KHMER SIGN PHNAEK MUAN
+17da KHMER SIGN KOOMUUT
+17db KHMER CURRENCY SYMBOL RIEL
+17dc KHMER SIGN AVAKRAHASANYA
+17e0 KHMER DIGIT ZERO
+17e1 KHMER DIGIT ONE
+17e2 KHMER DIGIT TWO
+17e3 KHMER DIGIT THREE
+17e4 KHMER DIGIT FOUR
+17e5 KHMER DIGIT FIVE
+17e6 KHMER DIGIT SIX
+17e7 KHMER DIGIT SEVEN
+17e8 KHMER DIGIT EIGHT
+17e9 KHMER DIGIT NINE
+1800 MONGOLIAN BIRGA
+1801 MONGOLIAN ELLIPSIS
+1802 MONGOLIAN COMMA
+1803 MONGOLIAN FULL STOP
+1804 MONGOLIAN COLON
+1805 MONGOLIAN FOUR DOTS
+1806 MONGOLIAN TODO SOFT HYPHEN
+1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808 MONGOLIAN MANCHU COMMA
+1809 MONGOLIAN MANCHU FULL STOP
+180a MONGOLIAN NIRUGU
+180b MONGOLIAN FREE VARIATION SELECTOR ONE
+180c MONGOLIAN FREE VARIATION SELECTOR TWO
+180d MONGOLIAN FREE VARIATION SELECTOR THREE
+180e MONGOLIAN VOWEL SEPARATOR
+1810 MONGOLIAN DIGIT ZERO
+1811 MONGOLIAN DIGIT ONE
+1812 MONGOLIAN DIGIT TWO
+1813 MONGOLIAN DIGIT THREE
+1814 MONGOLIAN DIGIT FOUR
+1815 MONGOLIAN DIGIT FIVE
+1816 MONGOLIAN DIGIT SIX
+1817 MONGOLIAN DIGIT SEVEN
+1818 MONGOLIAN DIGIT EIGHT
+1819 MONGOLIAN DIGIT NINE
+1820 MONGOLIAN LETTER A
+1821 MONGOLIAN LETTER E
+1822 MONGOLIAN LETTER I
+1823 MONGOLIAN LETTER O
+1824 MONGOLIAN LETTER U
+1825 MONGOLIAN LETTER OE
+1826 MONGOLIAN LETTER UE
+1827 MONGOLIAN LETTER EE
+1828 MONGOLIAN LETTER NA
+1829 MONGOLIAN LETTER ANG
+182a MONGOLIAN LETTER BA
+182b MONGOLIAN LETTER PA
+182c MONGOLIAN LETTER QA
+182d MONGOLIAN LETTER GA
+182e MONGOLIAN LETTER MA
+182f MONGOLIAN LETTER LA
+1830 MONGOLIAN LETTER SA
+1831 MONGOLIAN LETTER SHA
+1832 MONGOLIAN LETTER TA
+1833 MONGOLIAN LETTER DA
+1834 MONGOLIAN LETTER CHA
+1835 MONGOLIAN LETTER JA
+1836 MONGOLIAN LETTER YA
+1837 MONGOLIAN LETTER RA
+1838 MONGOLIAN LETTER WA
+1839 MONGOLIAN LETTER FA
+183a MONGOLIAN LETTER KA
+183b MONGOLIAN LETTER KHA
+183c MONGOLIAN LETTER TSA
+183d MONGOLIAN LETTER ZA
+183e MONGOLIAN LETTER HAA
+183f MONGOLIAN LETTER ZRA
+1840 MONGOLIAN LETTER LHA
+1841 MONGOLIAN LETTER ZHI
+1842 MONGOLIAN LETTER CHI
+1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844 MONGOLIAN LETTER TODO E
+1845 MONGOLIAN LETTER TODO I
+1846 MONGOLIAN LETTER TODO O
+1847 MONGOLIAN LETTER TODO U
+1848 MONGOLIAN LETTER TODO OE
+1849 MONGOLIAN LETTER TODO UE
+184a MONGOLIAN LETTER TODO ANG
+184b MONGOLIAN LETTER TODO BA
+184c MONGOLIAN LETTER TODO PA
+184d MONGOLIAN LETTER TODO QA
+184e MONGOLIAN LETTER TODO GA
+184f MONGOLIAN LETTER TODO MA
+1850 MONGOLIAN LETTER TODO TA
+1851 MONGOLIAN LETTER TODO DA
+1852 MONGOLIAN LETTER TODO CHA
+1853 MONGOLIAN LETTER TODO JA
+1854 MONGOLIAN LETTER TODO TSA
+1855 MONGOLIAN LETTER TODO YA
+1856 MONGOLIAN LETTER TODO WA
+1857 MONGOLIAN LETTER TODO KA
+1858 MONGOLIAN LETTER TODO GAA
+1859 MONGOLIAN LETTER TODO HAA
+185a MONGOLIAN LETTER TODO JIA
+185b MONGOLIAN LETTER TODO NIA
+185c MONGOLIAN LETTER TODO DZA
+185d MONGOLIAN LETTER SIBE E
+185e MONGOLIAN LETTER SIBE I
+185f MONGOLIAN LETTER SIBE IY
+1860 MONGOLIAN LETTER SIBE UE
+1861 MONGOLIAN LETTER SIBE U
+1862 MONGOLIAN LETTER SIBE ANG
+1863 MONGOLIAN LETTER SIBE KA
+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
+1869 MONGOLIAN LETTER SIBE DA
+186a MONGOLIAN LETTER SIBE JA
+186b MONGOLIAN LETTER SIBE FA
+186c MONGOLIAN LETTER SIBE GAA
+186d MONGOLIAN LETTER SIBE HAA
+186e MONGOLIAN LETTER SIBE TSA
+186f MONGOLIAN LETTER SIBE ZA
+1870 MONGOLIAN LETTER SIBE RAA
+1871 MONGOLIAN LETTER SIBE CHA
+1872 MONGOLIAN LETTER SIBE ZHA
+1873 MONGOLIAN LETTER MANCHU I
+1874 MONGOLIAN LETTER MANCHU KA
+1875 MONGOLIAN LETTER MANCHU RA
+1876 MONGOLIAN LETTER MANCHU FA
+1877 MONGOLIAN LETTER MANCHU ZHA
+1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882 MONGOLIAN LETTER ALI GALI DAMARU
+1883 MONGOLIAN LETTER ALI GALI UBADAMA
+1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885 MONGOLIAN LETTER ALI GALI BALUDA
+1886 MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887 MONGOLIAN LETTER ALI GALI A
+1888 MONGOLIAN LETTER ALI GALI I
+1889 MONGOLIAN LETTER ALI GALI KA
+188a MONGOLIAN LETTER ALI GALI NGA
+188b MONGOLIAN LETTER ALI GALI CA
+188c MONGOLIAN LETTER ALI GALI TTA
+188d MONGOLIAN LETTER ALI GALI TTHA
+188e MONGOLIAN LETTER ALI GALI DDA
+188f MONGOLIAN LETTER ALI GALI NNA
+1890 MONGOLIAN LETTER ALI GALI TA
+1891 MONGOLIAN LETTER ALI GALI DA
+1892 MONGOLIAN LETTER ALI GALI PA
+1893 MONGOLIAN LETTER ALI GALI PHA
+1894 MONGOLIAN LETTER ALI GALI SSA
+1895 MONGOLIAN LETTER ALI GALI ZHA
+1896 MONGOLIAN LETTER ALI GALI ZA
+1897 MONGOLIAN LETTER ALI GALI AH
+1898 MONGOLIAN LETTER TODO ALI GALI TA
+1899 MONGOLIAN LETTER TODO ALI GALI ZHA
+189a MONGOLIAN LETTER MANCHU ALI GALI GHA
+189b MONGOLIAN LETTER MANCHU ALI GALI NGA
+189c MONGOLIAN LETTER MANCHU ALI GALI CA
+189d MONGOLIAN LETTER MANCHU ALI GALI JHA
+189e MONGOLIAN LETTER MANCHU ALI GALI TTA
+189f MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18a0 MONGOLIAN LETTER MANCHU ALI GALI TA
+18a1 MONGOLIAN LETTER MANCHU ALI GALI DHA
+18a2 MONGOLIAN LETTER MANCHU ALI GALI SSA
+18a3 MONGOLIAN LETTER MANCHU ALI GALI CYA
+18a4 MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18a5 MONGOLIAN LETTER MANCHU ALI GALI ZA
+18a6 MONGOLIAN LETTER ALI GALI HALF U
+18a7 MONGOLIAN LETTER ALI GALI HALF YA
+18a8 MONGOLIAN LETTER MANCHU ALI GALI BHA
+18a9 MONGOLIAN LETTER ALI GALI DAGALGA
+1e00 LATIN CAPITAL LETTER A WITH RING BELOW
+1e01 LATIN SMALL LETTER A WITH RING BELOW
+1e02 LATIN CAPITAL LETTER B WITH DOT ABOVE
+1e03 LATIN SMALL LETTER B WITH DOT ABOVE
+1e04 LATIN CAPITAL LETTER B WITH DOT BELOW
+1e05 LATIN SMALL LETTER B WITH DOT BELOW
+1e06 LATIN CAPITAL LETTER B WITH LINE BELOW
+1e07 LATIN SMALL LETTER B WITH LINE BELOW
+1e08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1e09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1e0a LATIN CAPITAL LETTER D WITH DOT ABOVE
+1e0b LATIN SMALL LETTER D WITH DOT ABOVE
+1e0c LATIN CAPITAL LETTER D WITH DOT BELOW
+1e0d LATIN SMALL LETTER D WITH DOT BELOW
+1e0e LATIN CAPITAL LETTER D WITH LINE BELOW
+1e0f LATIN SMALL LETTER D WITH LINE BELOW
+1e10 LATIN CAPITAL LETTER D WITH CEDILLA
+1e11 LATIN SMALL LETTER D WITH CEDILLA
+1e12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1e13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1e14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1e15 LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1e16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1e17 LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1e18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1e19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1e1a LATIN CAPITAL LETTER E WITH TILDE BELOW
+1e1b LATIN SMALL LETTER E WITH TILDE BELOW
+1e1c LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1e1d LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1e1e LATIN CAPITAL LETTER F WITH DOT ABOVE
+1e1f LATIN SMALL LETTER F WITH DOT ABOVE
+1e20 LATIN CAPITAL LETTER G WITH MACRON
+1e21 LATIN SMALL LETTER G WITH MACRON
+1e22 LATIN CAPITAL LETTER H WITH DOT ABOVE
+1e23 LATIN SMALL LETTER H WITH DOT ABOVE
+1e24 LATIN CAPITAL LETTER H WITH DOT BELOW
+1e25 LATIN SMALL LETTER H WITH DOT BELOW
+1e26 LATIN CAPITAL LETTER H WITH DIAERESIS
+1e27 LATIN SMALL LETTER H WITH DIAERESIS
+1e28 LATIN CAPITAL LETTER H WITH CEDILLA
+1e29 LATIN SMALL LETTER H WITH CEDILLA
+1e2a LATIN CAPITAL LETTER H WITH BREVE BELOW
+1e2b LATIN SMALL LETTER H WITH BREVE BELOW
+1e2c LATIN CAPITAL LETTER I WITH TILDE BELOW
+1e2d LATIN SMALL LETTER I WITH TILDE BELOW
+1e2e LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1e2f LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1e30 LATIN CAPITAL LETTER K WITH ACUTE
+1e31 LATIN SMALL LETTER K WITH ACUTE
+1e32 LATIN CAPITAL LETTER K WITH DOT BELOW
+1e33 LATIN SMALL LETTER K WITH DOT BELOW
+1e34 LATIN CAPITAL LETTER K WITH LINE BELOW
+1e35 LATIN SMALL LETTER K WITH LINE BELOW
+1e36 LATIN CAPITAL LETTER L WITH DOT BELOW
+1e37 LATIN SMALL LETTER L WITH DOT BELOW
+1e38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1e39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1e3a LATIN CAPITAL LETTER L WITH LINE BELOW
+1e3b LATIN SMALL LETTER L WITH LINE BELOW
+1e3c LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1e3d LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1e3e LATIN CAPITAL LETTER M WITH ACUTE
+1e3f LATIN SMALL LETTER M WITH ACUTE
+1e40 LATIN CAPITAL LETTER M WITH DOT ABOVE
+1e41 LATIN SMALL LETTER M WITH DOT ABOVE
+1e42 LATIN CAPITAL LETTER M WITH DOT BELOW
+1e43 LATIN SMALL LETTER M WITH DOT BELOW
+1e44 LATIN CAPITAL LETTER N WITH DOT ABOVE
+1e45 LATIN SMALL LETTER N WITH DOT ABOVE
+1e46 LATIN CAPITAL LETTER N WITH DOT BELOW
+1e47 LATIN SMALL LETTER N WITH DOT BELOW
+1e48 LATIN CAPITAL LETTER N WITH LINE BELOW
+1e49 LATIN SMALL LETTER N WITH LINE BELOW
+1e4a LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1e4b LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1e4c LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1e4d LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1e4e LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1e4f LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1e50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1e51 LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1e52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1e53 LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1e54 LATIN CAPITAL LETTER P WITH ACUTE
+1e55 LATIN SMALL LETTER P WITH ACUTE
+1e56 LATIN CAPITAL LETTER P WITH DOT ABOVE
+1e57 LATIN SMALL LETTER P WITH DOT ABOVE
+1e58 LATIN CAPITAL LETTER R WITH DOT ABOVE
+1e59 LATIN SMALL LETTER R WITH DOT ABOVE
+1e5a LATIN CAPITAL LETTER R WITH DOT BELOW
+1e5b LATIN SMALL LETTER R WITH DOT BELOW
+1e5c LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1e5d LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1e5e LATIN CAPITAL LETTER R WITH LINE BELOW
+1e5f LATIN SMALL LETTER R WITH LINE BELOW
+1e60 LATIN CAPITAL LETTER S WITH DOT ABOVE
+1e61 LATIN SMALL LETTER S WITH DOT ABOVE
+1e62 LATIN CAPITAL LETTER S WITH DOT BELOW
+1e63 LATIN SMALL LETTER S WITH DOT BELOW
+1e64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1e65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1e66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1e67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1e68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1e69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1e6a LATIN CAPITAL LETTER T WITH DOT ABOVE
+1e6b LATIN SMALL LETTER T WITH DOT ABOVE
+1e6c LATIN CAPITAL LETTER T WITH DOT BELOW
+1e6d LATIN SMALL LETTER T WITH DOT BELOW
+1e6e LATIN CAPITAL LETTER T WITH LINE BELOW
+1e6f LATIN SMALL LETTER T WITH LINE BELOW
+1e70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1e71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1e72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1e73 LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1e74 LATIN CAPITAL LETTER U WITH TILDE BELOW
+1e75 LATIN SMALL LETTER U WITH TILDE BELOW
+1e76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1e77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1e78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1e79 LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1e7a LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1e7b LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1e7c LATIN CAPITAL LETTER V WITH TILDE
+1e7d LATIN SMALL LETTER V WITH TILDE
+1e7e LATIN CAPITAL LETTER V WITH DOT BELOW
+1e7f LATIN SMALL LETTER V WITH DOT BELOW
+1e80 LATIN CAPITAL LETTER W WITH GRAVE
+1e81 LATIN SMALL LETTER W WITH GRAVE
+1e82 LATIN CAPITAL LETTER W WITH ACUTE
+1e83 LATIN SMALL LETTER W WITH ACUTE
+1e84 LATIN CAPITAL LETTER W WITH DIAERESIS
+1e85 LATIN SMALL LETTER W WITH DIAERESIS
+1e86 LATIN CAPITAL LETTER W WITH DOT ABOVE
+1e87 LATIN SMALL LETTER W WITH DOT ABOVE
+1e88 LATIN CAPITAL LETTER W WITH DOT BELOW
+1e89 LATIN SMALL LETTER W WITH DOT BELOW
+1e8a LATIN CAPITAL LETTER X WITH DOT ABOVE
+1e8b LATIN SMALL LETTER X WITH DOT ABOVE
+1e8c LATIN CAPITAL LETTER X WITH DIAERESIS
+1e8d LATIN SMALL LETTER X WITH DIAERESIS
+1e8e LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1e8f LATIN SMALL LETTER Y WITH DOT ABOVE
+1e90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1e91 LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1e92 LATIN CAPITAL LETTER Z WITH DOT BELOW
+1e93 LATIN SMALL LETTER Z WITH DOT BELOW
+1e94 LATIN CAPITAL LETTER Z WITH LINE BELOW
+1e95 LATIN SMALL LETTER Z WITH LINE BELOW
+1e96 LATIN SMALL LETTER H WITH LINE BELOW
+1e97 LATIN SMALL LETTER T WITH DIAERESIS
+1e98 LATIN SMALL LETTER W WITH RING ABOVE
+1e99 LATIN SMALL LETTER Y WITH RING ABOVE
+1e9a LATIN SMALL LETTER A WITH RIGHT HALF RING
+1e9b LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1ea0 LATIN CAPITAL LETTER A WITH DOT BELOW
+1ea1 LATIN SMALL LETTER A WITH DOT BELOW
+1ea2 LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1ea3 LATIN SMALL LETTER A WITH HOOK ABOVE
+1ea4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1ea5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1ea6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1ea7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1ea8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1ea9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1eaa LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1eab LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1eac LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1ead LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1eae LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1eaf LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1eb0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1eb1 LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1eb2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1eb3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1eb4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1eb5 LATIN SMALL LETTER A WITH BREVE AND TILDE
+1eb6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1eb7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1eb8 LATIN CAPITAL LETTER E WITH DOT BELOW
+1eb9 LATIN SMALL LETTER E WITH DOT BELOW
+1eba LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1ebb LATIN SMALL LETTER E WITH HOOK ABOVE
+1ebc LATIN CAPITAL LETTER E WITH TILDE
+1ebd LATIN SMALL LETTER E WITH TILDE
+1ebe LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1ebf LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1ec0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1ec1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1ec2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1ec3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1ec4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1ec5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1ec6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1ec7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1ec8 LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ec9 LATIN SMALL LETTER I WITH HOOK ABOVE
+1eca LATIN CAPITAL LETTER I WITH DOT BELOW
+1ecb LATIN SMALL LETTER I WITH DOT BELOW
+1ecc LATIN CAPITAL LETTER O WITH DOT BELOW
+1ecd LATIN SMALL LETTER O WITH DOT BELOW
+1ece LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ecf LATIN SMALL LETTER O WITH HOOK ABOVE
+1ed0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ed1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ed2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ed3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ed4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ed5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ed6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ed7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ed8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ed9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1eda LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1edb LATIN SMALL LETTER O WITH HORN AND ACUTE
+1edc LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1edd LATIN SMALL LETTER O WITH HORN AND GRAVE
+1ede LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1edf LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1ee0 LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1ee1 LATIN SMALL LETTER O WITH HORN AND TILDE
+1ee2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1ee3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1ee4 LATIN CAPITAL LETTER U WITH DOT BELOW
+1ee5 LATIN SMALL LETTER U WITH DOT BELOW
+1ee6 LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1ee7 LATIN SMALL LETTER U WITH HOOK ABOVE
+1ee8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1ee9 LATIN SMALL LETTER U WITH HORN AND ACUTE
+1eea LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1eeb LATIN SMALL LETTER U WITH HORN AND GRAVE
+1eec LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1eed LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1eee LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1eef LATIN SMALL LETTER U WITH HORN AND TILDE
+1ef0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1ef1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1ef2 LATIN CAPITAL LETTER Y WITH GRAVE
+1ef3 LATIN SMALL LETTER Y WITH GRAVE
+1ef4 LATIN CAPITAL LETTER Y WITH DOT BELOW
+1ef5 LATIN SMALL LETTER Y WITH DOT BELOW
+1ef6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1ef7 LATIN SMALL LETTER Y WITH HOOK ABOVE
+1ef8 LATIN CAPITAL LETTER Y WITH TILDE
+1ef9 LATIN SMALL LETTER Y WITH TILDE
+1f00 GREEK SMALL LETTER ALPHA WITH PSILI
+1f01 GREEK SMALL LETTER ALPHA WITH DASIA
+1f02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1f03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1f04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1f05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1f06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1f07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1f08 GREEK CAPITAL LETTER ALPHA WITH PSILI
+1f09 GREEK CAPITAL LETTER ALPHA WITH DASIA
+1f0a GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1f0b GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1f0c GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1f0d GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1f0e GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1f0f GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1f10 GREEK SMALL LETTER EPSILON WITH PSILI
+1f11 GREEK SMALL LETTER EPSILON WITH DASIA
+1f12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1f13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1f14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1f15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1f18 GREEK CAPITAL LETTER EPSILON WITH PSILI
+1f19 GREEK CAPITAL LETTER EPSILON WITH DASIA
+1f1a GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1f1b GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1f1c GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1f1d GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1f20 GREEK SMALL LETTER ETA WITH PSILI
+1f21 GREEK SMALL LETTER ETA WITH DASIA
+1f22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1f23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1f24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1f25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1f26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1f27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1f28 GREEK CAPITAL LETTER ETA WITH PSILI
+1f29 GREEK CAPITAL LETTER ETA WITH DASIA
+1f2a GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1f2b GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1f2c GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1f2d GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1f2e GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1f2f GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1f30 GREEK SMALL LETTER IOTA WITH PSILI
+1f31 GREEK SMALL LETTER IOTA WITH DASIA
+1f32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1f33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1f34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1f35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1f36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1f37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1f38 GREEK CAPITAL LETTER IOTA WITH PSILI
+1f39 GREEK CAPITAL LETTER IOTA WITH DASIA
+1f3a GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1f3b GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1f3c GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1f3d GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1f3e GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1f3f GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1f40 GREEK SMALL LETTER OMICRON WITH PSILI
+1f41 GREEK SMALL LETTER OMICRON WITH DASIA
+1f42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1f43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1f44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1f45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1f48 GREEK CAPITAL LETTER OMICRON WITH PSILI
+1f49 GREEK CAPITAL LETTER OMICRON WITH DASIA
+1f4a GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1f4b GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1f4c GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1f4d GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1f50 GREEK SMALL LETTER UPSILON WITH PSILI
+1f51 GREEK SMALL LETTER UPSILON WITH DASIA
+1f52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1f53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1f54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1f55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1f56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1f57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1f59 GREEK CAPITAL LETTER UPSILON WITH DASIA
+1f5b GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1f5d GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1f5f GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1f60 GREEK SMALL LETTER OMEGA WITH PSILI
+1f61 GREEK SMALL LETTER OMEGA WITH DASIA
+1f62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1f63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1f64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1f65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1f66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1f67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1f68 GREEK CAPITAL LETTER OMEGA WITH PSILI
+1f69 GREEK CAPITAL LETTER OMEGA WITH DASIA
+1f6a GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1f6b GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1f6c GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1f6d GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1f6e GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1f6f GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1f70 GREEK SMALL LETTER ALPHA WITH VARIA
+1f71 GREEK SMALL LETTER ALPHA WITH OXIA
+1f72 GREEK SMALL LETTER EPSILON WITH VARIA
+1f73 GREEK SMALL LETTER EPSILON WITH OXIA
+1f74 GREEK SMALL LETTER ETA WITH VARIA
+1f75 GREEK SMALL LETTER ETA WITH OXIA
+1f76 GREEK SMALL LETTER IOTA WITH VARIA
+1f77 GREEK SMALL LETTER IOTA WITH OXIA
+1f78 GREEK SMALL LETTER OMICRON WITH VARIA
+1f79 GREEK SMALL LETTER OMICRON WITH OXIA
+1f7a GREEK SMALL LETTER UPSILON WITH VARIA
+1f7b GREEK SMALL LETTER UPSILON WITH OXIA
+1f7c GREEK SMALL LETTER OMEGA WITH VARIA
+1f7d GREEK SMALL LETTER OMEGA WITH OXIA
+1f80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1f81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1f82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1f83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1f84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1f85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1f86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1f87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1f88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1f89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1f8a GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1f8b GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1f8c GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1f8d GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1f8e GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1f8f GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1f90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1f91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1f92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1f93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1f94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1f95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1f96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1f97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1f98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1f99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1f9a GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1f9b GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1f9c GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1f9d GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1f9e GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1f9f GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1fa0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1fa1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1fa2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1fa3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1fa4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1fa5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1fa6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1fa7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1fa8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1fa9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1faa GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1fab GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1fac GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1fad GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1fae GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1faf GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1fb0 GREEK SMALL LETTER ALPHA WITH VRACHY
+1fb1 GREEK SMALL LETTER ALPHA WITH MACRON
+1fb2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1fb3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1fb4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1fb6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1fb7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1fb8 GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1fb9 GREEK CAPITAL LETTER ALPHA WITH MACRON
+1fba GREEK CAPITAL LETTER ALPHA WITH VARIA
+1fbb GREEK CAPITAL LETTER ALPHA WITH OXIA
+1fbc GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1fbd GREEK KORONIS
+1fbe GREEK PROSGEGRAMMENI
+1fbf GREEK PSILI
+1fc0 GREEK PERISPOMENI
+1fc1 GREEK DIALYTIKA AND PERISPOMENI
+1fc2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1fc3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1fc4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1fc6 GREEK SMALL LETTER ETA WITH PERISPOMENI
+1fc7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1fc8 GREEK CAPITAL LETTER EPSILON WITH VARIA
+1fc9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+1fca GREEK CAPITAL LETTER ETA WITH VARIA
+1fcb GREEK CAPITAL LETTER ETA WITH OXIA
+1fcc GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1fcd GREEK PSILI AND VARIA
+1fce GREEK PSILI AND OXIA
+1fcf GREEK PSILI AND PERISPOMENI
+1fd0 GREEK SMALL LETTER IOTA WITH VRACHY
+1fd1 GREEK SMALL LETTER IOTA WITH MACRON
+1fd2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1fd3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1fd6 GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1fd7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1fd8 GREEK CAPITAL LETTER IOTA WITH VRACHY
+1fd9 GREEK CAPITAL LETTER IOTA WITH MACRON
+1fda GREEK CAPITAL LETTER IOTA WITH VARIA
+1fdb GREEK CAPITAL LETTER IOTA WITH OXIA
+1fdd GREEK DASIA AND VARIA
+1fde GREEK DASIA AND OXIA
+1fdf GREEK DASIA AND PERISPOMENI
+1fe0 GREEK SMALL LETTER UPSILON WITH VRACHY
+1fe1 GREEK SMALL LETTER UPSILON WITH MACRON
+1fe2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1fe3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1fe4 GREEK SMALL LETTER RHO WITH PSILI
+1fe5 GREEK SMALL LETTER RHO WITH DASIA
+1fe6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1fe7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1fe8 GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1fe9 GREEK CAPITAL LETTER UPSILON WITH MACRON
+1fea GREEK CAPITAL LETTER UPSILON WITH VARIA
+1feb GREEK CAPITAL LETTER UPSILON WITH OXIA
+1fec GREEK CAPITAL LETTER RHO WITH DASIA
+1fed GREEK DIALYTIKA AND VARIA
+1fee GREEK DIALYTIKA AND OXIA
+1fef GREEK VARIA
+1ff2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1ff3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1ff4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1ff6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1ff7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1ff8 GREEK CAPITAL LETTER OMICRON WITH VARIA
+1ff9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+1ffa GREEK CAPITAL LETTER OMEGA WITH VARIA
+1ffb GREEK CAPITAL LETTER OMEGA WITH OXIA
+1ffc GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1ffd GREEK OXIA
+1ffe GREEK DASIA
+2000 EN QUAD
+2001 EM QUAD
+2002 EN SPACE
+2003 EM SPACE
+2004 THREE-PER-EM SPACE
+2005 FOUR-PER-EM SPACE
+2006 SIX-PER-EM SPACE
+2007 FIGURE SPACE
+2008 PUNCTUATION SPACE
+2009 THIN SPACE
+200a HAIR SPACE
+200b ZERO WIDTH SPACE
+200c ZERO WIDTH NON-JOINER
+200d ZERO WIDTH JOINER
+200e LEFT-TO-RIGHT MARK
+200f RIGHT-TO-LEFT MARK
+2010 HYPHEN
+2011 NON-BREAKING HYPHEN
+2012 FIGURE DASH
+2013 EN DASH
+2014 EM DASH
+2015 HORIZONTAL BAR
+2016 DOUBLE VERTICAL LINE
+2017 DOUBLE LOW LINE
+2018 LEFT SINGLE QUOTATION MARK
+2019 RIGHT SINGLE QUOTATION MARK
+201a SINGLE LOW-9 QUOTATION MARK
+201b SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201c LEFT DOUBLE QUOTATION MARK
+201d RIGHT DOUBLE QUOTATION MARK
+201e DOUBLE LOW-9 QUOTATION MARK
+201f DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020 DAGGER
+2021 DOUBLE DAGGER
+2022 BULLET
+2023 TRIANGULAR BULLET
+2024 ONE DOT LEADER
+2025 TWO DOT LEADER
+2026 HORIZONTAL ELLIPSIS
+2027 HYPHENATION POINT
+2028 LINE SEPARATOR
+2029 PARAGRAPH SEPARATOR
+202a LEFT-TO-RIGHT EMBEDDING
+202b RIGHT-TO-LEFT EMBEDDING
+202c POP DIRECTIONAL FORMATTING
+202d LEFT-TO-RIGHT OVERRIDE
+202e RIGHT-TO-LEFT OVERRIDE
+202f NARROW NO-BREAK SPACE
+2030 PER MILLE SIGN
+2031 PER TEN THOUSAND SIGN
+2032 PRIME
+2033 DOUBLE PRIME
+2034 TRIPLE PRIME
+2035 REVERSED PRIME
+2036 REVERSED DOUBLE PRIME
+2037 REVERSED TRIPLE PRIME
+2038 CARET
+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203a SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203b REFERENCE MARK
+203c DOUBLE EXCLAMATION MARK
+203d INTERROBANG
+203e OVERLINE
+203f UNDERTIE
+2040 CHARACTER TIE
+2041 CARET INSERTION POINT
+2042 ASTERISM
+2043 HYPHEN BULLET
+2044 FRACTION SLASH
+2045 LEFT SQUARE BRACKET WITH QUILL
+2046 RIGHT SQUARE BRACKET WITH QUILL
+2048 QUESTION EXCLAMATION MARK
+2049 EXCLAMATION QUESTION MARK
+204a TIRONIAN SIGN ET
+204b REVERSED PILCROW SIGN
+204c BLACK LEFTWARDS BULLET
+204d BLACK RIGHTWARDS BULLET
+206a INHIBIT SYMMETRIC SWAPPING
+206b ACTIVATE SYMMETRIC SWAPPING
+206c INHIBIT ARABIC FORM SHAPING
+206d ACTIVATE ARABIC FORM SHAPING
+206e NATIONAL DIGIT SHAPES
+206f NOMINAL DIGIT SHAPES
+2070 SUPERSCRIPT ZERO
+2074 SUPERSCRIPT FOUR
+2075 SUPERSCRIPT FIVE
+2076 SUPERSCRIPT SIX
+2077 SUPERSCRIPT SEVEN
+2078 SUPERSCRIPT EIGHT
+2079 SUPERSCRIPT NINE
+207a SUPERSCRIPT PLUS SIGN
+207b SUPERSCRIPT MINUS
+207c SUPERSCRIPT EQUALS SIGN
+207d SUPERSCRIPT LEFT PARENTHESIS
+207e SUPERSCRIPT RIGHT PARENTHESIS
+207f SUPERSCRIPT LATIN SMALL LETTER N
+2080 SUBSCRIPT ZERO
+2081 SUBSCRIPT ONE
+2082 SUBSCRIPT TWO
+2083 SUBSCRIPT THREE
+2084 SUBSCRIPT FOUR
+2085 SUBSCRIPT FIVE
+2086 SUBSCRIPT SIX
+2087 SUBSCRIPT SEVEN
+2088 SUBSCRIPT EIGHT
+2089 SUBSCRIPT NINE
+208a SUBSCRIPT PLUS SIGN
+208b SUBSCRIPT MINUS
+208c SUBSCRIPT EQUALS SIGN
+208d SUBSCRIPT LEFT PARENTHESIS
+208e SUBSCRIPT RIGHT PARENTHESIS
+20a0 EURO-CURRENCY SIGN
+20a1 COLON SIGN
+20a2 CRUZEIRO SIGN
+20a3 FRENCH FRANC SIGN
+20a4 LIRA SIGN
+20a5 MILL SIGN
+20a6 NAIRA SIGN
+20a7 PESETA SIGN
+20a8 RUPEE SIGN
+20a9 WON SIGN
+20aa NEW SHEQEL SIGN
+20ab DONG SIGN
+20ac EURO SIGN
+20ad KIP SIGN
+20ae TUGRIK SIGN
+20af DRACHMA SIGN
+20d0 COMBINING LEFT HARPOON ABOVE
+20d1 COMBINING RIGHT HARPOON ABOVE
+20d2 COMBINING LONG VERTICAL LINE OVERLAY
+20d3 COMBINING SHORT VERTICAL LINE OVERLAY
+20d4 COMBINING ANTICLOCKWISE ARROW ABOVE
+20d5 COMBINING CLOCKWISE ARROW ABOVE
+20d6 COMBINING LEFT ARROW ABOVE
+20d7 COMBINING RIGHT ARROW ABOVE
+20d8 COMBINING RING OVERLAY
+20d9 COMBINING CLOCKWISE RING OVERLAY
+20da COMBINING ANTICLOCKWISE RING OVERLAY
+20db COMBINING THREE DOTS ABOVE
+20dc COMBINING FOUR DOTS ABOVE
+20dd COMBINING ENCLOSING CIRCLE
+20de COMBINING ENCLOSING SQUARE
+20df COMBINING ENCLOSING DIAMOND
+20e0 COMBINING ENCLOSING CIRCLE BACKSLASH
+20e1 COMBINING LEFT RIGHT ARROW ABOVE
+20e2 COMBINING ENCLOSING SCREEN
+20e3 COMBINING ENCLOSING KEYCAP
+2100 ACCOUNT OF
+2101 ADDRESSED TO THE SUBJECT
+2102 DOUBLE-STRUCK CAPITAL C
+2103 DEGREE CELSIUS
+2104 CENTRE LINE SYMBOL
+2105 CARE OF
+2106 CADA UNA
+2107 EULER CONSTANT
+2108 SCRUPLE
+2109 DEGREE FAHRENHEIT
+210a SCRIPT SMALL G
+210b SCRIPT CAPITAL H
+210c BLACK-LETTER CAPITAL H
+210d DOUBLE-STRUCK CAPITAL H
+210e PLANCK CONSTANT
+210f PLANCK CONSTANT OVER TWO PI
+2110 SCRIPT CAPITAL I
+2111 BLACK-LETTER CAPITAL I
+2112 SCRIPT CAPITAL L
+2113 SCRIPT SMALL L
+2114 L B BAR SYMBOL
+2115 DOUBLE-STRUCK CAPITAL N
+2116 NUMERO SIGN
+2117 SOUND RECORDING COPYRIGHT
+2118 SCRIPT CAPITAL P
+2119 DOUBLE-STRUCK CAPITAL P
+211a DOUBLE-STRUCK CAPITAL Q
+211b SCRIPT CAPITAL R
+211c BLACK-LETTER CAPITAL R
+211d DOUBLE-STRUCK CAPITAL R
+211e PRESCRIPTION TAKE
+211f RESPONSE
+2120 SERVICE MARK
+2121 TELEPHONE SIGN
+2122 TRADE MARK SIGN
+2123 VERSICLE
+2124 DOUBLE-STRUCK CAPITAL Z
+2125 OUNCE SIGN
+2126 OHM SIGN
+2127 INVERTED OHM SIGN
+2128 BLACK-LETTER CAPITAL Z
+2129 TURNED GREEK SMALL LETTER IOTA
+212a KELVIN SIGN
+212b ANGSTROM SIGN
+212c SCRIPT CAPITAL B
+212d BLACK-LETTER CAPITAL C
+212e ESTIMATED SYMBOL
+212f SCRIPT SMALL E
+2130 SCRIPT CAPITAL E
+2131 SCRIPT CAPITAL F
+2132 TURNED CAPITAL F
+2133 SCRIPT CAPITAL M
+2134 SCRIPT SMALL O
+2135 ALEF SYMBOL
+2136 BET SYMBOL
+2137 GIMEL SYMBOL
+2138 DALET SYMBOL
+2139 INFORMATION SOURCE
+213a ROTATED CAPITAL Q
+2153 VULGAR FRACTION ONE THIRD
+2154 VULGAR FRACTION TWO THIRDS
+2155 VULGAR FRACTION ONE FIFTH
+2156 VULGAR FRACTION TWO FIFTHS
+2157 VULGAR FRACTION THREE FIFTHS
+2158 VULGAR FRACTION FOUR FIFTHS
+2159 VULGAR FRACTION ONE SIXTH
+215a VULGAR FRACTION FIVE SIXTHS
+215b VULGAR FRACTION ONE EIGHTH
+215c VULGAR FRACTION THREE EIGHTHS
+215d VULGAR FRACTION FIVE EIGHTHS
+215e VULGAR FRACTION SEVEN EIGHTHS
+215f FRACTION NUMERATOR ONE
+2160 ROMAN NUMERAL ONE
+2161 ROMAN NUMERAL TWO
+2162 ROMAN NUMERAL THREE
+2163 ROMAN NUMERAL FOUR
+2164 ROMAN NUMERAL FIVE
+2165 ROMAN NUMERAL SIX
+2166 ROMAN NUMERAL SEVEN
+2167 ROMAN NUMERAL EIGHT
+2168 ROMAN NUMERAL NINE
+2169 ROMAN NUMERAL TEN
+216a ROMAN NUMERAL ELEVEN
+216b ROMAN NUMERAL TWELVE
+216c ROMAN NUMERAL FIFTY
+216d ROMAN NUMERAL ONE HUNDRED
+216e ROMAN NUMERAL FIVE HUNDRED
+216f ROMAN NUMERAL ONE THOUSAND
+2170 SMALL ROMAN NUMERAL ONE
+2171 SMALL ROMAN NUMERAL TWO
+2172 SMALL ROMAN NUMERAL THREE
+2173 SMALL ROMAN NUMERAL FOUR
+2174 SMALL ROMAN NUMERAL FIVE
+2175 SMALL ROMAN NUMERAL SIX
+2176 SMALL ROMAN NUMERAL SEVEN
+2177 SMALL ROMAN NUMERAL EIGHT
+2178 SMALL ROMAN NUMERAL NINE
+2179 SMALL ROMAN NUMERAL TEN
+217a SMALL ROMAN NUMERAL ELEVEN
+217b SMALL ROMAN NUMERAL TWELVE
+217c SMALL ROMAN NUMERAL FIFTY
+217d SMALL ROMAN NUMERAL ONE HUNDRED
+217e SMALL ROMAN NUMERAL FIVE HUNDRED
+217f SMALL ROMAN NUMERAL ONE THOUSAND
+2180 ROMAN NUMERAL ONE THOUSAND C D
+2181 ROMAN NUMERAL FIVE THOUSAND
+2182 ROMAN NUMERAL TEN THOUSAND
+2183 ROMAN NUMERAL REVERSED ONE HUNDRED
+2190 LEFTWARDS ARROW
+2191 UPWARDS ARROW
+2192 RIGHTWARDS ARROW
+2193 DOWNWARDS ARROW
+2194 LEFT RIGHT ARROW
+2195 UP DOWN ARROW
+2196 NORTH WEST ARROW
+2197 NORTH EAST ARROW
+2198 SOUTH EAST ARROW
+2199 SOUTH WEST ARROW
+219a LEFTWARDS ARROW WITH STROKE
+219b RIGHTWARDS ARROW WITH STROKE
+219c LEFTWARDS WAVE ARROW
+219d RIGHTWARDS WAVE ARROW
+219e LEFTWARDS TWO HEADED ARROW
+219f UPWARDS TWO HEADED ARROW
+21a0 RIGHTWARDS TWO HEADED ARROW
+21a1 DOWNWARDS TWO HEADED ARROW
+21a2 LEFTWARDS ARROW WITH TAIL
+21a3 RIGHTWARDS ARROW WITH TAIL
+21a4 LEFTWARDS ARROW FROM BAR
+21a5 UPWARDS ARROW FROM BAR
+21a6 RIGHTWARDS ARROW FROM BAR
+21a7 DOWNWARDS ARROW FROM BAR
+21a8 UP DOWN ARROW WITH BASE
+21a9 LEFTWARDS ARROW WITH HOOK
+21aa RIGHTWARDS ARROW WITH HOOK
+21ab LEFTWARDS ARROW WITH LOOP
+21ac RIGHTWARDS ARROW WITH LOOP
+21ad LEFT RIGHT WAVE ARROW
+21ae LEFT RIGHT ARROW WITH STROKE
+21af DOWNWARDS ZIGZAG ARROW
+21b0 UPWARDS ARROW WITH TIP LEFTWARDS
+21b1 UPWARDS ARROW WITH TIP RIGHTWARDS
+21b2 DOWNWARDS ARROW WITH TIP LEFTWARDS
+21b3 DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21b4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21b5 DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21b6 ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21b7 CLOCKWISE TOP SEMICIRCLE ARROW
+21b8 NORTH WEST ARROW TO LONG BAR
+21b9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21ba ANTICLOCKWISE OPEN CIRCLE ARROW
+21bb CLOCKWISE OPEN CIRCLE ARROW
+21bc LEFTWARDS HARPOON WITH BARB UPWARDS
+21bd LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21be UPWARDS HARPOON WITH BARB RIGHTWARDS
+21bf UPWARDS HARPOON WITH BARB LEFTWARDS
+21c0 RIGHTWARDS HARPOON WITH BARB UPWARDS
+21c1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21c2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21c3 DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21c4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21c5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21c6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21c7 LEFTWARDS PAIRED ARROWS
+21c8 UPWARDS PAIRED ARROWS
+21c9 RIGHTWARDS PAIRED ARROWS
+21ca DOWNWARDS PAIRED ARROWS
+21cb LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21cc RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21cd LEFTWARDS DOUBLE ARROW WITH STROKE
+21ce LEFT RIGHT DOUBLE ARROW WITH STROKE
+21cf RIGHTWARDS DOUBLE ARROW WITH STROKE
+21d0 LEFTWARDS DOUBLE ARROW
+21d1 UPWARDS DOUBLE ARROW
+21d2 RIGHTWARDS DOUBLE ARROW
+21d3 DOWNWARDS DOUBLE ARROW
+21d4 LEFT RIGHT DOUBLE ARROW
+21d5 UP DOWN DOUBLE ARROW
+21d6 NORTH WEST DOUBLE ARROW
+21d7 NORTH EAST DOUBLE ARROW
+21d8 SOUTH EAST DOUBLE ARROW
+21d9 SOUTH WEST DOUBLE ARROW
+21da LEFTWARDS TRIPLE ARROW
+21db RIGHTWARDS TRIPLE ARROW
+21dc LEFTWARDS SQUIGGLE ARROW
+21dd RIGHTWARDS SQUIGGLE ARROW
+21de UPWARDS ARROW WITH DOUBLE STROKE
+21df DOWNWARDS ARROW WITH DOUBLE STROKE
+21e0 LEFTWARDS DASHED ARROW
+21e1 UPWARDS DASHED ARROW
+21e2 RIGHTWARDS DASHED ARROW
+21e3 DOWNWARDS DASHED ARROW
+21e4 LEFTWARDS ARROW TO BAR
+21e5 RIGHTWARDS ARROW TO BAR
+21e6 LEFTWARDS WHITE ARROW
+21e7 UPWARDS WHITE ARROW
+21e8 RIGHTWARDS WHITE ARROW
+21e9 DOWNWARDS WHITE ARROW
+21ea UPWARDS WHITE ARROW FROM BAR
+21eb UPWARDS WHITE ARROW ON PEDESTAL
+21ec UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ed UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21ee UPWARDS WHITE DOUBLE ARROW
+21ef UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21f0 RIGHTWARDS WHITE ARROW FROM WALL
+21f1 NORTH WEST ARROW TO CORNER
+21f2 SOUTH EAST ARROW TO CORNER
+21f3 UP DOWN WHITE ARROW
+2200 FOR ALL
+2201 COMPLEMENT
+2202 PARTIAL DIFFERENTIAL
+2203 THERE EXISTS
+2204 THERE DOES NOT EXIST
+2205 EMPTY SET
+2206 INCREMENT
+2207 NABLA
+2208 ELEMENT OF
+2209 NOT AN ELEMENT OF
+220a SMALL ELEMENT OF
+220b CONTAINS AS MEMBER
+220c DOES NOT CONTAIN AS MEMBER
+220d SMALL CONTAINS AS MEMBER
+220e END OF PROOF
+220f N-ARY PRODUCT
+2210 N-ARY COPRODUCT
+2211 N-ARY SUMMATION
+2212 MINUS SIGN
+2213 MINUS-OR-PLUS SIGN
+2214 DOT PLUS
+2215 DIVISION SLASH
+2216 SET MINUS
+2217 ASTERISK OPERATOR
+2218 RING OPERATOR
+2219 BULLET OPERATOR
+221a SQUARE ROOT
+221b CUBE ROOT
+221c FOURTH ROOT
+221d PROPORTIONAL TO
+221e INFINITY
+221f RIGHT ANGLE
+2220 ANGLE
+2221 MEASURED ANGLE
+2222 SPHERICAL ANGLE
+2223 DIVIDES
+2224 DOES NOT DIVIDE
+2225 PARALLEL TO
+2226 NOT PARALLEL TO
+2227 LOGICAL AND
+2228 LOGICAL OR
+2229 INTERSECTION
+222a UNION
+222b INTEGRAL
+222c DOUBLE INTEGRAL
+222d TRIPLE INTEGRAL
+222e CONTOUR INTEGRAL
+222f SURFACE INTEGRAL
+2230 VOLUME INTEGRAL
+2231 CLOCKWISE INTEGRAL
+2232 CLOCKWISE CONTOUR INTEGRAL
+2233 ANTICLOCKWISE CONTOUR INTEGRAL
+2234 THEREFORE
+2235 BECAUSE
+2236 RATIO
+2237 PROPORTION
+2238 DOT MINUS
+2239 EXCESS
+223a GEOMETRIC PROPORTION
+223b HOMOTHETIC
+223c TILDE OPERATOR
+223d REVERSED TILDE
+223e INVERTED LAZY S
+223f SINE WAVE
+2240 WREATH PRODUCT
+2241 NOT TILDE
+2242 MINUS TILDE
+2243 ASYMPTOTICALLY EQUAL TO
+2244 NOT ASYMPTOTICALLY EQUAL TO
+2245 APPROXIMATELY EQUAL TO
+2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248 ALMOST EQUAL TO
+2249 NOT ALMOST EQUAL TO
+224a ALMOST EQUAL OR EQUAL TO
+224b TRIPLE TILDE
+224c ALL EQUAL TO
+224d EQUIVALENT TO
+224e GEOMETRICALLY EQUIVALENT TO
+224f DIFFERENCE BETWEEN
+2250 APPROACHES THE LIMIT
+2251 GEOMETRICALLY EQUAL TO
+2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253 IMAGE OF OR APPROXIMATELY EQUAL TO
+2254 COLON EQUALS
+2255 EQUALS COLON
+2256 RING IN EQUAL TO
+2257 RING EQUAL TO
+2258 CORRESPONDS TO
+2259 ESTIMATES
+225a EQUIANGULAR TO
+225b STAR EQUALS
+225c DELTA EQUAL TO
+225d EQUAL TO BY DEFINITION
+225e MEASURED BY
+225f QUESTIONED EQUAL TO
+2260 NOT EQUAL TO
+2261 IDENTICAL TO
+2262 NOT IDENTICAL TO
+2263 STRICTLY EQUIVALENT TO
+2264 LESS-THAN OR EQUAL TO
+2265 GREATER-THAN OR EQUAL TO
+2266 LESS-THAN OVER EQUAL TO
+2267 GREATER-THAN OVER EQUAL TO
+2268 LESS-THAN BUT NOT EQUAL TO
+2269 GREATER-THAN BUT NOT EQUAL TO
+226a MUCH LESS-THAN
+226b MUCH GREATER-THAN
+226c BETWEEN
+226d NOT EQUIVALENT TO
+226e NOT LESS-THAN
+226f NOT GREATER-THAN
+2270 NEITHER LESS-THAN NOR EQUAL TO
+2271 NEITHER GREATER-THAN NOR EQUAL TO
+2272 LESS-THAN OR EQUIVALENT TO
+2273 GREATER-THAN OR EQUIVALENT TO
+2274 NEITHER LESS-THAN NOR EQUIVALENT TO
+2275 NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276 LESS-THAN OR GREATER-THAN
+2277 GREATER-THAN OR LESS-THAN
+2278 NEITHER LESS-THAN NOR GREATER-THAN
+2279 NEITHER GREATER-THAN NOR LESS-THAN
+227a PRECEDES
+227b SUCCEEDS
+227c PRECEDES OR EQUAL TO
+227d SUCCEEDS OR EQUAL TO
+227e PRECEDES OR EQUIVALENT TO
+227f SUCCEEDS OR EQUIVALENT TO
+2280 DOES NOT PRECEDE
+2281 DOES NOT SUCCEED
+2282 SUBSET OF
+2283 SUPERSET OF
+2284 NOT A SUBSET OF
+2285 NOT A SUPERSET OF
+2286 SUBSET OF OR EQUAL TO
+2287 SUPERSET OF OR EQUAL TO
+2288 NEITHER A SUBSET OF NOR EQUAL TO
+2289 NEITHER A SUPERSET OF NOR EQUAL TO
+228a SUBSET OF WITH NOT EQUAL TO
+228b SUPERSET OF WITH NOT EQUAL TO
+228c MULTISET
+228d MULTISET MULTIPLICATION
+228e MULTISET UNION
+228f SQUARE IMAGE OF
+2290 SQUARE ORIGINAL OF
+2291 SQUARE IMAGE OF OR EQUAL TO
+2292 SQUARE ORIGINAL OF OR EQUAL TO
+2293 SQUARE CAP
+2294 SQUARE CUP
+2295 CIRCLED PLUS
+2296 CIRCLED MINUS
+2297 CIRCLED TIMES
+2298 CIRCLED DIVISION SLASH
+2299 CIRCLED DOT OPERATOR
+229a CIRCLED RING OPERATOR
+229b CIRCLED ASTERISK OPERATOR
+229c CIRCLED EQUALS
+229d CIRCLED DASH
+229e SQUARED PLUS
+229f SQUARED MINUS
+22a0 SQUARED TIMES
+22a1 SQUARED DOT OPERATOR
+22a2 RIGHT TACK
+22a3 LEFT TACK
+22a4 DOWN TACK
+22a5 UP TACK
+22a6 ASSERTION
+22a7 MODELS
+22a8 TRUE
+22a9 FORCES
+22aa TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22ab DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22ac DOES NOT PROVE
+22ad NOT TRUE
+22ae DOES NOT FORCE
+22af NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22b0 PRECEDES UNDER RELATION
+22b1 SUCCEEDS UNDER RELATION
+22b2 NORMAL SUBGROUP OF
+22b3 CONTAINS AS NORMAL SUBGROUP
+22b4 NORMAL SUBGROUP OF OR EQUAL TO
+22b5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22b6 ORIGINAL OF
+22b7 IMAGE OF
+22b8 MULTIMAP
+22b9 HERMITIAN CONJUGATE MATRIX
+22ba INTERCALATE
+22bb XOR
+22bc NAND
+22bd NOR
+22be RIGHT ANGLE WITH ARC
+22bf RIGHT TRIANGLE
+22c0 N-ARY LOGICAL AND
+22c1 N-ARY LOGICAL OR
+22c2 N-ARY INTERSECTION
+22c3 N-ARY UNION
+22c4 DIAMOND OPERATOR
+22c5 DOT OPERATOR
+22c6 STAR OPERATOR
+22c7 DIVISION TIMES
+22c8 BOWTIE
+22c9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22ca RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22cb LEFT SEMIDIRECT PRODUCT
+22cc RIGHT SEMIDIRECT PRODUCT
+22cd REVERSED TILDE EQUALS
+22ce CURLY LOGICAL OR
+22cf CURLY LOGICAL AND
+22d0 DOUBLE SUBSET
+22d1 DOUBLE SUPERSET
+22d2 DOUBLE INTERSECTION
+22d3 DOUBLE UNION
+22d4 PITCHFORK
+22d5 EQUAL AND PARALLEL TO
+22d6 LESS-THAN WITH DOT
+22d7 GREATER-THAN WITH DOT
+22d8 VERY MUCH LESS-THAN
+22d9 VERY MUCH GREATER-THAN
+22da LESS-THAN EQUAL TO OR GREATER-THAN
+22db GREATER-THAN EQUAL TO OR LESS-THAN
+22dc EQUAL TO OR LESS-THAN
+22dd EQUAL TO OR GREATER-THAN
+22de EQUAL TO OR PRECEDES
+22df EQUAL TO OR SUCCEEDS
+22e0 DOES NOT PRECEDE OR EQUAL
+22e1 DOES NOT SUCCEED OR EQUAL
+22e2 NOT SQUARE IMAGE OF OR EQUAL TO
+22e3 NOT SQUARE ORIGINAL OF OR EQUAL TO
+22e4 SQUARE IMAGE OF OR NOT EQUAL TO
+22e5 SQUARE ORIGINAL OF OR NOT EQUAL TO
+22e6 LESS-THAN BUT NOT EQUIVALENT TO
+22e7 GREATER-THAN BUT NOT EQUIVALENT TO
+22e8 PRECEDES BUT NOT EQUIVALENT TO
+22e9 SUCCEEDS BUT NOT EQUIVALENT TO
+22ea NOT NORMAL SUBGROUP OF
+22eb DOES NOT CONTAIN AS NORMAL SUBGROUP
+22ec NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ed DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22ee VERTICAL ELLIPSIS
+22ef MIDLINE HORIZONTAL ELLIPSIS
+22f0 UP RIGHT DIAGONAL ELLIPSIS
+22f1 DOWN RIGHT DIAGONAL ELLIPSIS
+2300 DIAMETER SIGN
+2301 ELECTRIC ARROW
+2302 HOUSE
+2303 UP ARROWHEAD
+2304 DOWN ARROWHEAD
+2305 PROJECTIVE
+2306 PERSPECTIVE
+2307 WAVY LINE
+2308 LEFT CEILING
+2309 RIGHT CEILING
+230a LEFT FLOOR
+230b RIGHT FLOOR
+230c BOTTOM RIGHT CROP
+230d BOTTOM LEFT CROP
+230e TOP RIGHT CROP
+230f TOP LEFT CROP
+2310 REVERSED NOT SIGN
+2311 SQUARE LOZENGE
+2312 ARC
+2313 SEGMENT
+2314 SECTOR
+2315 TELEPHONE RECORDER
+2316 POSITION INDICATOR
+2317 VIEWDATA SQUARE
+2318 PLACE OF INTEREST SIGN
+2319 TURNED NOT SIGN
+231a WATCH
+231b HOURGLASS
+231c TOP LEFT CORNER
+231d TOP RIGHT CORNER
+231e BOTTOM LEFT CORNER
+231f BOTTOM RIGHT CORNER
+2320 TOP HALF INTEGRAL
+2321 BOTTOM HALF INTEGRAL
+2322 FROWN
+2323 SMILE
+2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325 OPTION KEY
+2326 ERASE TO THE RIGHT
+2327 X IN A RECTANGLE BOX
+2328 KEYBOARD
+2329 LEFT-POINTING ANGLE BRACKET
+232a RIGHT-POINTING ANGLE BRACKET
+232b ERASE TO THE LEFT
+232c BENZENE RING
+232d CYLINDRICITY
+232e ALL AROUND-PROFILE
+232f SYMMETRY
+2330 TOTAL RUNOUT
+2331 DIMENSION ORIGIN
+2332 CONICAL TAPER
+2333 SLOPE
+2334 COUNTERBORE
+2335 COUNTERSINK
+2336 APL FUNCTIONAL SYMBOL I-BEAM
+2337 APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338 APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233a APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233b APL FUNCTIONAL SYMBOL QUAD JOT
+233c APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233d APL FUNCTIONAL SYMBOL CIRCLE STILE
+233e APL FUNCTIONAL SYMBOL CIRCLE JOT
+233f APL FUNCTIONAL SYMBOL SLASH BAR
+2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341 APL FUNCTIONAL SYMBOL QUAD SLASH
+2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343 APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344 APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345 APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346 APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349 APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234a APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234b APL FUNCTIONAL SYMBOL DELTA STILE
+234c APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234d APL FUNCTIONAL SYMBOL QUAD DELTA
+234e APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234f APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352 APL FUNCTIONAL SYMBOL DEL STILE
+2353 APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354 APL FUNCTIONAL SYMBOL QUAD DEL
+2355 APL FUNCTIONAL SYMBOL UP TACK JOT
+2356 APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358 APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359 APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235a APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235b APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235c APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235d APL FUNCTIONAL SYMBOL UP SHOE JOT
+235e APL FUNCTIONAL SYMBOL QUOTE QUAD
+235f APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360 APL FUNCTIONAL SYMBOL QUAD COLON
+2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369 APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236a APL FUNCTIONAL SYMBOL COMMA BAR
+236b APL FUNCTIONAL SYMBOL DEL TILDE
+236c APL FUNCTIONAL SYMBOL ZILDE
+236d APL FUNCTIONAL SYMBOL STILE TILDE
+236e APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236f APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370 APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372 APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373 APL FUNCTIONAL SYMBOL IOTA
+2374 APL FUNCTIONAL SYMBOL RHO
+2375 APL FUNCTIONAL SYMBOL OMEGA
+2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379 APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237a APL FUNCTIONAL SYMBOL ALPHA
+237b NOT CHECK MARK
+237d SHOULDERED OPEN BOX
+237e BELL SYMBOL
+237f VERTICAL LINE WITH MIDDLE DOT
+2380 INSERTION SYMBOL
+2381 CONTINUOUS UNDERLINE SYMBOL
+2382 DISCONTINUOUS UNDERLINE SYMBOL
+2383 EMPHASIS SYMBOL
+2384 COMPOSITION SYMBOL
+2385 WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386 ENTER SYMBOL
+2387 ALTERNATIVE KEY SYMBOL
+2388 HELM SYMBOL
+2389 CIRCLED HORIZONTAL BAR WITH NOTCH
+238a CIRCLED TRIANGLE DOWN
+238b BROKEN CIRCLE WITH NORTHWEST ARROW
+238c UNDO SYMBOL
+238d MONOSTABLE SYMBOL
+238e HYSTERESIS SYMBOL
+238f OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390 OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391 PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392 PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393 DIRECT CURRENT SYMBOL FORM TWO
+2394 SOFTWARE-FUNCTION SYMBOL
+2395 APL FUNCTIONAL SYMBOL QUAD
+2396 DECIMAL SEPARATOR KEY SYMBOL
+2397 PREVIOUS PAGE
+2398 NEXT PAGE
+2399 PRINT SCREEN SYMBOL
+239a CLEAR SCREEN SYMBOL
+2400 SYMBOL FOR NULL
+2401 SYMBOL FOR START OF HEADING
+2402 SYMBOL FOR START OF TEXT
+2403 SYMBOL FOR END OF TEXT
+2404 SYMBOL FOR END OF TRANSMISSION
+2405 SYMBOL FOR ENQUIRY
+2406 SYMBOL FOR ACKNOWLEDGE
+2407 SYMBOL FOR BELL
+2408 SYMBOL FOR BACKSPACE
+2409 SYMBOL FOR HORIZONTAL TABULATION
+240a SYMBOL FOR LINE FEED
+240b SYMBOL FOR VERTICAL TABULATION
+240c SYMBOL FOR FORM FEED
+240d SYMBOL FOR CARRIAGE RETURN
+240e SYMBOL FOR SHIFT OUT
+240f SYMBOL FOR SHIFT IN
+2410 SYMBOL FOR DATA LINK ESCAPE
+2411 SYMBOL FOR DEVICE CONTROL ONE
+2412 SYMBOL FOR DEVICE CONTROL TWO
+2413 SYMBOL FOR DEVICE CONTROL THREE
+2414 SYMBOL FOR DEVICE CONTROL FOUR
+2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416 SYMBOL FOR SYNCHRONOUS IDLE
+2417 SYMBOL FOR END OF TRANSMISSION BLOCK
+2418 SYMBOL FOR CANCEL
+2419 SYMBOL FOR END OF MEDIUM
+241a SYMBOL FOR SUBSTITUTE
+241b SYMBOL FOR ESCAPE
+241c SYMBOL FOR FILE SEPARATOR
+241d SYMBOL FOR GROUP SEPARATOR
+241e SYMBOL FOR RECORD SEPARATOR
+241f SYMBOL FOR UNIT SEPARATOR
+2420 SYMBOL FOR SPACE
+2421 SYMBOL FOR DELETE
+2422 BLANK SYMBOL
+2423 OPEN BOX
+2424 SYMBOL FOR NEWLINE
+2425 SYMBOL FOR DELETE FORM TWO
+2426 SYMBOL FOR SUBSTITUTE FORM TWO
+2440 OCR HOOK
+2441 OCR CHAIR
+2442 OCR FORK
+2443 OCR INVERTED FORK
+2444 OCR BELT BUCKLE
+2445 OCR BOW TIE
+2446 OCR BRANCH BANK IDENTIFICATION
+2447 OCR AMOUNT OF CHECK
+2448 OCR DASH
+2449 OCR CUSTOMER ACCOUNT NUMBER
+244a OCR DOUBLE BACKSLASH
+2460 CIRCLED DIGIT ONE
+2461 CIRCLED DIGIT TWO
+2462 CIRCLED DIGIT THREE
+2463 CIRCLED DIGIT FOUR
+2464 CIRCLED DIGIT FIVE
+2465 CIRCLED DIGIT SIX
+2466 CIRCLED DIGIT SEVEN
+2467 CIRCLED DIGIT EIGHT
+2468 CIRCLED DIGIT NINE
+2469 CIRCLED NUMBER TEN
+246a CIRCLED NUMBER ELEVEN
+246b CIRCLED NUMBER TWELVE
+246c CIRCLED NUMBER THIRTEEN
+246d CIRCLED NUMBER FOURTEEN
+246e CIRCLED NUMBER FIFTEEN
+246f CIRCLED NUMBER SIXTEEN
+2470 CIRCLED NUMBER SEVENTEEN
+2471 CIRCLED NUMBER EIGHTEEN
+2472 CIRCLED NUMBER NINETEEN
+2473 CIRCLED NUMBER TWENTY
+2474 PARENTHESIZED DIGIT ONE
+2475 PARENTHESIZED DIGIT TWO
+2476 PARENTHESIZED DIGIT THREE
+2477 PARENTHESIZED DIGIT FOUR
+2478 PARENTHESIZED DIGIT FIVE
+2479 PARENTHESIZED DIGIT SIX
+247a PARENTHESIZED DIGIT SEVEN
+247b PARENTHESIZED DIGIT EIGHT
+247c PARENTHESIZED DIGIT NINE
+247d PARENTHESIZED NUMBER TEN
+247e PARENTHESIZED NUMBER ELEVEN
+247f PARENTHESIZED NUMBER TWELVE
+2480 PARENTHESIZED NUMBER THIRTEEN
+2481 PARENTHESIZED NUMBER FOURTEEN
+2482 PARENTHESIZED NUMBER FIFTEEN
+2483 PARENTHESIZED NUMBER SIXTEEN
+2484 PARENTHESIZED NUMBER SEVENTEEN
+2485 PARENTHESIZED NUMBER EIGHTEEN
+2486 PARENTHESIZED NUMBER NINETEEN
+2487 PARENTHESIZED NUMBER TWENTY
+2488 DIGIT ONE FULL STOP
+2489 DIGIT TWO FULL STOP
+248a DIGIT THREE FULL STOP
+248b DIGIT FOUR FULL STOP
+248c DIGIT FIVE FULL STOP
+248d DIGIT SIX FULL STOP
+248e DIGIT SEVEN FULL STOP
+248f DIGIT EIGHT FULL STOP
+2490 DIGIT NINE FULL STOP
+2491 NUMBER TEN FULL STOP
+2492 NUMBER ELEVEN FULL STOP
+2493 NUMBER TWELVE FULL STOP
+2494 NUMBER THIRTEEN FULL STOP
+2495 NUMBER FOURTEEN FULL STOP
+2496 NUMBER FIFTEEN FULL STOP
+2497 NUMBER SIXTEEN FULL STOP
+2498 NUMBER SEVENTEEN FULL STOP
+2499 NUMBER EIGHTEEN FULL STOP
+249a NUMBER NINETEEN FULL STOP
+249b NUMBER TWENTY FULL STOP
+249c PARENTHESIZED LATIN SMALL LETTER A
+249d PARENTHESIZED LATIN SMALL LETTER B
+249e PARENTHESIZED LATIN SMALL LETTER C
+249f PARENTHESIZED LATIN SMALL LETTER D
+24a0 PARENTHESIZED LATIN SMALL LETTER E
+24a1 PARENTHESIZED LATIN SMALL LETTER F
+24a2 PARENTHESIZED LATIN SMALL LETTER G
+24a3 PARENTHESIZED LATIN SMALL LETTER H
+24a4 PARENTHESIZED LATIN SMALL LETTER I
+24a5 PARENTHESIZED LATIN SMALL LETTER J
+24a6 PARENTHESIZED LATIN SMALL LETTER K
+24a7 PARENTHESIZED LATIN SMALL LETTER L
+24a8 PARENTHESIZED LATIN SMALL LETTER M
+24a9 PARENTHESIZED LATIN SMALL LETTER N
+24aa PARENTHESIZED LATIN SMALL LETTER O
+24ab PARENTHESIZED LATIN SMALL LETTER P
+24ac PARENTHESIZED LATIN SMALL LETTER Q
+24ad PARENTHESIZED LATIN SMALL LETTER R
+24ae PARENTHESIZED LATIN SMALL LETTER S
+24af PARENTHESIZED LATIN SMALL LETTER T
+24b0 PARENTHESIZED LATIN SMALL LETTER U
+24b1 PARENTHESIZED LATIN SMALL LETTER V
+24b2 PARENTHESIZED LATIN SMALL LETTER W
+24b3 PARENTHESIZED LATIN SMALL LETTER X
+24b4 PARENTHESIZED LATIN SMALL LETTER Y
+24b5 PARENTHESIZED LATIN SMALL LETTER Z
+24b6 CIRCLED LATIN CAPITAL LETTER A
+24b7 CIRCLED LATIN CAPITAL LETTER B
+24b8 CIRCLED LATIN CAPITAL LETTER C
+24b9 CIRCLED LATIN CAPITAL LETTER D
+24ba CIRCLED LATIN CAPITAL LETTER E
+24bb CIRCLED LATIN CAPITAL LETTER F
+24bc CIRCLED LATIN CAPITAL LETTER G
+24bd CIRCLED LATIN CAPITAL LETTER H
+24be CIRCLED LATIN CAPITAL LETTER I
+24bf CIRCLED LATIN CAPITAL LETTER J
+24c0 CIRCLED LATIN CAPITAL LETTER K
+24c1 CIRCLED LATIN CAPITAL LETTER L
+24c2 CIRCLED LATIN CAPITAL LETTER M
+24c3 CIRCLED LATIN CAPITAL LETTER N
+24c4 CIRCLED LATIN CAPITAL LETTER O
+24c5 CIRCLED LATIN CAPITAL LETTER P
+24c6 CIRCLED LATIN CAPITAL LETTER Q
+24c7 CIRCLED LATIN CAPITAL LETTER R
+24c8 CIRCLED LATIN CAPITAL LETTER S
+24c9 CIRCLED LATIN CAPITAL LETTER T
+24ca CIRCLED LATIN CAPITAL LETTER U
+24cb CIRCLED LATIN CAPITAL LETTER V
+24cc CIRCLED LATIN CAPITAL LETTER W
+24cd CIRCLED LATIN CAPITAL LETTER X
+24ce CIRCLED LATIN CAPITAL LETTER Y
+24cf CIRCLED LATIN CAPITAL LETTER Z
+24d0 CIRCLED LATIN SMALL LETTER A
+24d1 CIRCLED LATIN SMALL LETTER B
+24d2 CIRCLED LATIN SMALL LETTER C
+24d3 CIRCLED LATIN SMALL LETTER D
+24d4 CIRCLED LATIN SMALL LETTER E
+24d5 CIRCLED LATIN SMALL LETTER F
+24d6 CIRCLED LATIN SMALL LETTER G
+24d7 CIRCLED LATIN SMALL LETTER H
+24d8 CIRCLED LATIN SMALL LETTER I
+24d9 CIRCLED LATIN SMALL LETTER J
+24da CIRCLED LATIN SMALL LETTER K
+24db CIRCLED LATIN SMALL LETTER L
+24dc CIRCLED LATIN SMALL LETTER M
+24dd CIRCLED LATIN SMALL LETTER N
+24de CIRCLED LATIN SMALL LETTER O
+24df CIRCLED LATIN SMALL LETTER P
+24e0 CIRCLED LATIN SMALL LETTER Q
+24e1 CIRCLED LATIN SMALL LETTER R
+24e2 CIRCLED LATIN SMALL LETTER S
+24e3 CIRCLED LATIN SMALL LETTER T
+24e4 CIRCLED LATIN SMALL LETTER U
+24e5 CIRCLED LATIN SMALL LETTER V
+24e6 CIRCLED LATIN SMALL LETTER W
+24e7 CIRCLED LATIN SMALL LETTER X
+24e8 CIRCLED LATIN SMALL LETTER Y
+24e9 CIRCLED LATIN SMALL LETTER Z
+24ea CIRCLED DIGIT ZERO
+2500 BOX DRAWINGS LIGHT HORIZONTAL
+2501 BOX DRAWINGS HEAVY HORIZONTAL
+2502 BOX DRAWINGS LIGHT VERTICAL
+2503 BOX DRAWINGS HEAVY VERTICAL
+2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250a BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250b BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250c BOX DRAWINGS LIGHT DOWN AND RIGHT
+250d BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250e BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250f BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
+2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513 BOX DRAWINGS HEAVY DOWN AND LEFT
+2514 BOX DRAWINGS LIGHT UP AND RIGHT
+2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517 BOX DRAWINGS HEAVY UP AND RIGHT
+2518 BOX DRAWINGS LIGHT UP AND LEFT
+2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251a BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251b BOX DRAWINGS HEAVY UP AND LEFT
+251c BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251d BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251e BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251f BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252a BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252b BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252c BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252d BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252e BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252f BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253a BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253b BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253c BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253d BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253e BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253f BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254a BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254b BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254c BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254d BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254e BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254f BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550 BOX DRAWINGS DOUBLE HORIZONTAL
+2551 BOX DRAWINGS DOUBLE VERTICAL
+2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255a BOX DRAWINGS DOUBLE UP AND RIGHT
+255b BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255c BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255d BOX DRAWINGS DOUBLE UP AND LEFT
+255e BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255f BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256a BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256b BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256c BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256d BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256e BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256f BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574 BOX DRAWINGS LIGHT LEFT
+2575 BOX DRAWINGS LIGHT UP
+2576 BOX DRAWINGS LIGHT RIGHT
+2577 BOX DRAWINGS LIGHT DOWN
+2578 BOX DRAWINGS HEAVY LEFT
+2579 BOX DRAWINGS HEAVY UP
+257a BOX DRAWINGS HEAVY RIGHT
+257b BOX DRAWINGS HEAVY DOWN
+257c BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257d BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257e BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257f BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580 UPPER HALF BLOCK
+2581 LOWER ONE EIGHTH BLOCK
+2582 LOWER ONE QUARTER BLOCK
+2583 LOWER THREE EIGHTHS BLOCK
+2584 LOWER HALF BLOCK
+2585 LOWER FIVE EIGHTHS BLOCK
+2586 LOWER THREE QUARTERS BLOCK
+2587 LOWER SEVEN EIGHTHS BLOCK
+2588 FULL BLOCK
+2589 LEFT SEVEN EIGHTHS BLOCK
+258a LEFT THREE QUARTERS BLOCK
+258b LEFT FIVE EIGHTHS BLOCK
+258c LEFT HALF BLOCK
+258d LEFT THREE EIGHTHS BLOCK
+258e LEFT ONE QUARTER BLOCK
+258f LEFT ONE EIGHTH BLOCK
+2590 RIGHT HALF BLOCK
+2591 LIGHT SHADE
+2592 MEDIUM SHADE
+2593 DARK SHADE
+2594 UPPER ONE EIGHTH BLOCK
+2595 RIGHT ONE EIGHTH BLOCK
+25a0 BLACK SQUARE
+25a1 WHITE SQUARE
+25a2 WHITE SQUARE WITH ROUNDED CORNERS
+25a3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25a4 SQUARE WITH HORIZONTAL FILL
+25a5 SQUARE WITH VERTICAL FILL
+25a6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25a7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25a8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25a9 SQUARE WITH DIAGONAL CROSSHATCH FILL
+25aa BLACK SMALL SQUARE
+25ab WHITE SMALL SQUARE
+25ac BLACK RECTANGLE
+25ad WHITE RECTANGLE
+25ae BLACK VERTICAL RECTANGLE
+25af WHITE VERTICAL RECTANGLE
+25b0 BLACK PARALLELOGRAM
+25b1 WHITE PARALLELOGRAM
+25b2 BLACK UP-POINTING TRIANGLE
+25b3 WHITE UP-POINTING TRIANGLE
+25b4 BLACK UP-POINTING SMALL TRIANGLE
+25b5 WHITE UP-POINTING SMALL TRIANGLE
+25b6 BLACK RIGHT-POINTING TRIANGLE
+25b7 WHITE RIGHT-POINTING TRIANGLE
+25b8 BLACK RIGHT-POINTING SMALL TRIANGLE
+25b9 WHITE RIGHT-POINTING SMALL TRIANGLE
+25ba BLACK RIGHT-POINTING POINTER
+25bb WHITE RIGHT-POINTING POINTER
+25bc BLACK DOWN-POINTING TRIANGLE
+25bd WHITE DOWN-POINTING TRIANGLE
+25be BLACK DOWN-POINTING SMALL TRIANGLE
+25bf WHITE DOWN-POINTING SMALL TRIANGLE
+25c0 BLACK LEFT-POINTING TRIANGLE
+25c1 WHITE LEFT-POINTING TRIANGLE
+25c2 BLACK LEFT-POINTING SMALL TRIANGLE
+25c3 WHITE LEFT-POINTING SMALL TRIANGLE
+25c4 BLACK LEFT-POINTING POINTER
+25c5 WHITE LEFT-POINTING POINTER
+25c6 BLACK DIAMOND
+25c7 WHITE DIAMOND
+25c8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25c9 FISHEYE
+25ca LOZENGE
+25cb WHITE CIRCLE
+25cc DOTTED CIRCLE
+25cd CIRCLE WITH VERTICAL FILL
+25ce BULLSEYE
+25cf BLACK CIRCLE
+25d0 CIRCLE WITH LEFT HALF BLACK
+25d1 CIRCLE WITH RIGHT HALF BLACK
+25d2 CIRCLE WITH LOWER HALF BLACK
+25d3 CIRCLE WITH UPPER HALF BLACK
+25d4 CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25d5 CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25d6 LEFT HALF BLACK CIRCLE
+25d7 RIGHT HALF BLACK CIRCLE
+25d8 INVERSE BULLET
+25d9 INVERSE WHITE CIRCLE
+25da UPPER HALF INVERSE WHITE CIRCLE
+25db LOWER HALF INVERSE WHITE CIRCLE
+25dc UPPER LEFT QUADRANT CIRCULAR ARC
+25dd UPPER RIGHT QUADRANT CIRCULAR ARC
+25de LOWER RIGHT QUADRANT CIRCULAR ARC
+25df LOWER LEFT QUADRANT CIRCULAR ARC
+25e0 UPPER HALF CIRCLE
+25e1 LOWER HALF CIRCLE
+25e2 BLACK LOWER RIGHT TRIANGLE
+25e3 BLACK LOWER LEFT TRIANGLE
+25e4 BLACK UPPER LEFT TRIANGLE
+25e5 BLACK UPPER RIGHT TRIANGLE
+25e6 WHITE BULLET
+25e7 SQUARE WITH LEFT HALF BLACK
+25e8 SQUARE WITH RIGHT HALF BLACK
+25e9 SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25ea SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25eb WHITE SQUARE WITH VERTICAL BISECTING LINE
+25ec WHITE UP-POINTING TRIANGLE WITH DOT
+25ed UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25ee UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25ef LARGE CIRCLE
+25f0 WHITE SQUARE WITH UPPER LEFT QUADRANT
+25f1 WHITE SQUARE WITH LOWER LEFT QUADRANT
+25f2 WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25f3 WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25f4 WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25f5 WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25f6 WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25f7 WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600 BLACK SUN WITH RAYS
+2601 CLOUD
+2602 UMBRELLA
+2603 SNOWMAN
+2604 COMET
+2605 BLACK STAR
+2606 WHITE STAR
+2607 LIGHTNING
+2608 THUNDERSTORM
+2609 SUN
+260a ASCENDING NODE
+260b DESCENDING NODE
+260c CONJUNCTION
+260d OPPOSITION
+260e BLACK TELEPHONE
+260f WHITE TELEPHONE
+2610 BALLOT BOX
+2611 BALLOT BOX WITH CHECK
+2612 BALLOT BOX WITH X
+2613 SALTIRE
+2619 REVERSED ROTATED FLORAL HEART BULLET
+261a BLACK LEFT POINTING INDEX
+261b BLACK RIGHT POINTING INDEX
+261c WHITE LEFT POINTING INDEX
+261d WHITE UP POINTING INDEX
+261e WHITE RIGHT POINTING INDEX
+261f WHITE DOWN POINTING INDEX
+2620 SKULL AND CROSSBONES
+2621 CAUTION SIGN
+2622 RADIOACTIVE SIGN
+2623 BIOHAZARD SIGN
+2624 CADUCEUS
+2625 ANKH
+2626 ORTHODOX CROSS
+2627 CHI RHO
+2628 CROSS OF LORRAINE
+2629 CROSS OF JERUSALEM
+262a STAR AND CRESCENT
+262b FARSI SYMBOL
+262c ADI SHAKTI
+262d HAMMER AND SICKLE
+262e PEACE SYMBOL
+262f YIN YANG
+2630 TRIGRAM FOR HEAVEN
+2631 TRIGRAM FOR LAKE
+2632 TRIGRAM FOR FIRE
+2633 TRIGRAM FOR THUNDER
+2634 TRIGRAM FOR WIND
+2635 TRIGRAM FOR WATER
+2636 TRIGRAM FOR MOUNTAIN
+2637 TRIGRAM FOR EARTH
+2638 WHEEL OF DHARMA
+2639 WHITE FROWNING FACE
+263a WHITE SMILING FACE
+263b BLACK SMILING FACE
+263c WHITE SUN WITH RAYS
+263d FIRST QUARTER MOON
+263e LAST QUARTER MOON
+263f MERCURY
+2640 FEMALE SIGN
+2641 EARTH
+2642 MALE SIGN
+2643 JUPITER
+2644 SATURN
+2645 URANUS
+2646 NEPTUNE
+2647 PLUTO
+2648 ARIES
+2649 TAURUS
+264a GEMINI
+264b CANCER
+264c LEO
+264d VIRGO
+264e LIBRA
+264f SCORPIUS
+2650 SAGITTARIUS
+2651 CAPRICORN
+2652 AQUARIUS
+2653 PISCES
+2654 WHITE CHESS KING
+2655 WHITE CHESS QUEEN
+2656 WHITE CHESS ROOK
+2657 WHITE CHESS BISHOP
+2658 WHITE CHESS KNIGHT
+2659 WHITE CHESS PAWN
+265a BLACK CHESS KING
+265b BLACK CHESS QUEEN
+265c BLACK CHESS ROOK
+265d BLACK CHESS BISHOP
+265e BLACK CHESS KNIGHT
+265f BLACK CHESS PAWN
+2660 BLACK SPADE SUIT
+2661 WHITE HEART SUIT
+2662 WHITE DIAMOND SUIT
+2663 BLACK CLUB SUIT
+2664 WHITE SPADE SUIT
+2665 BLACK HEART SUIT
+2666 BLACK DIAMOND SUIT
+2667 WHITE CLUB SUIT
+2668 HOT SPRINGS
+2669 QUARTER NOTE
+266a EIGHTH NOTE
+266b BEAMED EIGHTH NOTES
+266c BEAMED SIXTEENTH NOTES
+266d MUSIC FLAT SIGN
+266e MUSIC NATURAL SIGN
+266f MUSIC SHARP SIGN
+2670 WEST SYRIAC CROSS
+2671 EAST SYRIAC CROSS
+2701 UPPER BLADE SCISSORS
+2702 BLACK SCISSORS
+2703 LOWER BLADE SCISSORS
+2704 WHITE SCISSORS
+2706 TELEPHONE LOCATION SIGN
+2707 TAPE DRIVE
+2708 AIRPLANE
+2709 ENVELOPE
+270c VICTORY HAND
+270d WRITING HAND
+270e LOWER RIGHT PENCIL
+270f PENCIL
+2710 UPPER RIGHT PENCIL
+2711 WHITE NIB
+2712 BLACK NIB
+2713 CHECK MARK
+2714 HEAVY CHECK MARK
+2715 MULTIPLICATION X
+2716 HEAVY MULTIPLICATION X
+2717 BALLOT X
+2718 HEAVY BALLOT X
+2719 OUTLINED GREEK CROSS
+271a HEAVY GREEK CROSS
+271b OPEN CENTRE CROSS
+271c HEAVY OPEN CENTRE CROSS
+271d LATIN CROSS
+271e SHADOWED WHITE LATIN CROSS
+271f OUTLINED LATIN CROSS
+2720 MALTESE CROSS
+2721 STAR OF DAVID
+2722 FOUR TEARDROP-SPOKED ASTERISK
+2723 FOUR BALLOON-SPOKED ASTERISK
+2724 HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725 FOUR CLUB-SPOKED ASTERISK
+2726 BLACK FOUR POINTED STAR
+2727 WHITE FOUR POINTED STAR
+2729 STRESS OUTLINED WHITE STAR
+272a CIRCLED WHITE STAR
+272b OPEN CENTRE BLACK STAR
+272c BLACK CENTRE WHITE STAR
+272d OUTLINED BLACK STAR
+272e HEAVY OUTLINED BLACK STAR
+272f PINWHEEL STAR
+2730 SHADOWED WHITE STAR
+2731 HEAVY ASTERISK
+2732 OPEN CENTRE ASTERISK
+2733 EIGHT SPOKED ASTERISK
+2734 EIGHT POINTED BLACK STAR
+2735 EIGHT POINTED PINWHEEL STAR
+2736 SIX POINTED BLACK STAR
+2737 EIGHT POINTED RECTILINEAR BLACK STAR
+2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739 TWELVE POINTED BLACK STAR
+273a SIXTEEN POINTED ASTERISK
+273b TEARDROP-SPOKED ASTERISK
+273c OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273d HEAVY TEARDROP-SPOKED ASTERISK
+273e SIX PETALLED BLACK AND WHITE FLORETTE
+273f BLACK FLORETTE
+2740 WHITE FLORETTE
+2741 EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744 SNOWFLAKE
+2745 TIGHT TRIFOLIATE SNOWFLAKE
+2746 HEAVY CHEVRON SNOWFLAKE
+2747 SPARKLE
+2748 HEAVY SPARKLE
+2749 BALLOON-SPOKED ASTERISK
+274a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274d SHADOWED WHITE CIRCLE
+274f LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751 LOWER RIGHT SHADOWED WHITE SQUARE
+2752 UPPER RIGHT SHADOWED WHITE SQUARE
+2756 BLACK DIAMOND MINUS WHITE X
+2758 LIGHT VERTICAL BAR
+2759 MEDIUM VERTICAL BAR
+275a HEAVY VERTICAL BAR
+275b HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761 CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762 HEAVY EXCLAMATION MARK ORNAMENT
+2763 HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764 HEAVY BLACK HEART
+2765 ROTATED HEAVY BLACK HEART BULLET
+2766 FLORAL HEART
+2767 ROTATED FLORAL HEART BULLET
+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277a DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277b DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277c DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277d DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277e DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277f DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278a DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278b DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278c DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278d DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278e DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278f DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798 HEAVY SOUTH EAST ARROW
+2799 HEAVY RIGHTWARDS ARROW
+279a HEAVY NORTH EAST ARROW
+279b DRAFTING POINT RIGHTWARDS ARROW
+279c HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279d TRIANGLE-HEADED RIGHTWARDS ARROW
+279e HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279f DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27a0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27a1 BLACK RIGHTWARDS ARROW
+27a2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27a3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27a4 BLACK RIGHTWARDS ARROWHEAD
+27a5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27a6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27a7 SQUAT BLACK RIGHTWARDS ARROW
+27a8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27a9 RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27aa LEFT-SHADED WHITE RIGHTWARDS ARROW
+27ab BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27ac FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27ad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27ae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27af NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27b1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27b2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27b3 WHITE-FEATHERED RIGHTWARDS ARROW
+27b4 BLACK-FEATHERED SOUTH EAST ARROW
+27b5 BLACK-FEATHERED RIGHTWARDS ARROW
+27b6 BLACK-FEATHERED NORTH EAST ARROW
+27b7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27b8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27b9 HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27ba TEARDROP-BARBED RIGHTWARDS ARROW
+27bb HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27bc WEDGE-TAILED RIGHTWARDS ARROW
+27bd HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27be OPEN-OUTLINED RIGHTWARDS ARROW
+2800 BRAILLE PATTERN BLANK
+2801 BRAILLE PATTERN DOTS-1
+2802 BRAILLE PATTERN DOTS-2
+2803 BRAILLE PATTERN DOTS-12
+2804 BRAILLE PATTERN DOTS-3
+2805 BRAILLE PATTERN DOTS-13
+2806 BRAILLE PATTERN DOTS-23
+2807 BRAILLE PATTERN DOTS-123
+2808 BRAILLE PATTERN DOTS-4
+2809 BRAILLE PATTERN DOTS-14
+280a BRAILLE PATTERN DOTS-24
+280b BRAILLE PATTERN DOTS-124
+280c BRAILLE PATTERN DOTS-34
+280d BRAILLE PATTERN DOTS-134
+280e BRAILLE PATTERN DOTS-234
+280f BRAILLE PATTERN DOTS-1234
+2810 BRAILLE PATTERN DOTS-5
+2811 BRAILLE PATTERN DOTS-15
+2812 BRAILLE PATTERN DOTS-25
+2813 BRAILLE PATTERN DOTS-125
+2814 BRAILLE PATTERN DOTS-35
+2815 BRAILLE PATTERN DOTS-135
+2816 BRAILLE PATTERN DOTS-235
+2817 BRAILLE PATTERN DOTS-1235
+2818 BRAILLE PATTERN DOTS-45
+2819 BRAILLE PATTERN DOTS-145
+281a BRAILLE PATTERN DOTS-245
+281b BRAILLE PATTERN DOTS-1245
+281c BRAILLE PATTERN DOTS-345
+281d BRAILLE PATTERN DOTS-1345
+281e BRAILLE PATTERN DOTS-2345
+281f BRAILLE PATTERN DOTS-12345
+2820 BRAILLE PATTERN DOTS-6
+2821 BRAILLE PATTERN DOTS-16
+2822 BRAILLE PATTERN DOTS-26
+2823 BRAILLE PATTERN DOTS-126
+2824 BRAILLE PATTERN DOTS-36
+2825 BRAILLE PATTERN DOTS-136
+2826 BRAILLE PATTERN DOTS-236
+2827 BRAILLE PATTERN DOTS-1236
+2828 BRAILLE PATTERN DOTS-46
+2829 BRAILLE PATTERN DOTS-146
+282a BRAILLE PATTERN DOTS-246
+282b BRAILLE PATTERN DOTS-1246
+282c BRAILLE PATTERN DOTS-346
+282d BRAILLE PATTERN DOTS-1346
+282e BRAILLE PATTERN DOTS-2346
+282f BRAILLE PATTERN DOTS-12346
+2830 BRAILLE PATTERN DOTS-56
+2831 BRAILLE PATTERN DOTS-156
+2832 BRAILLE PATTERN DOTS-256
+2833 BRAILLE PATTERN DOTS-1256
+2834 BRAILLE PATTERN DOTS-356
+2835 BRAILLE PATTERN DOTS-1356
+2836 BRAILLE PATTERN DOTS-2356
+2837 BRAILLE PATTERN DOTS-12356
+2838 BRAILLE PATTERN DOTS-456
+2839 BRAILLE PATTERN DOTS-1456
+283a BRAILLE PATTERN DOTS-2456
+283b BRAILLE PATTERN DOTS-12456
+283c BRAILLE PATTERN DOTS-3456
+283d BRAILLE PATTERN DOTS-13456
+283e BRAILLE PATTERN DOTS-23456
+283f BRAILLE PATTERN DOTS-123456
+2840 BRAILLE PATTERN DOTS-7
+2841 BRAILLE PATTERN DOTS-17
+2842 BRAILLE PATTERN DOTS-27
+2843 BRAILLE PATTERN DOTS-127
+2844 BRAILLE PATTERN DOTS-37
+2845 BRAILLE PATTERN DOTS-137
+2846 BRAILLE PATTERN DOTS-237
+2847 BRAILLE PATTERN DOTS-1237
+2848 BRAILLE PATTERN DOTS-47
+2849 BRAILLE PATTERN DOTS-147
+284a BRAILLE PATTERN DOTS-247
+284b BRAILLE PATTERN DOTS-1247
+284c BRAILLE PATTERN DOTS-347
+284d BRAILLE PATTERN DOTS-1347
+284e BRAILLE PATTERN DOTS-2347
+284f BRAILLE PATTERN DOTS-12347
+2850 BRAILLE PATTERN DOTS-57
+2851 BRAILLE PATTERN DOTS-157
+2852 BRAILLE PATTERN DOTS-257
+2853 BRAILLE PATTERN DOTS-1257
+2854 BRAILLE PATTERN DOTS-357
+2855 BRAILLE PATTERN DOTS-1357
+2856 BRAILLE PATTERN DOTS-2357
+2857 BRAILLE PATTERN DOTS-12357
+2858 BRAILLE PATTERN DOTS-457
+2859 BRAILLE PATTERN DOTS-1457
+285a BRAILLE PATTERN DOTS-2457
+285b BRAILLE PATTERN DOTS-12457
+285c BRAILLE PATTERN DOTS-3457
+285d BRAILLE PATTERN DOTS-13457
+285e BRAILLE PATTERN DOTS-23457
+285f BRAILLE PATTERN DOTS-123457
+2860 BRAILLE PATTERN DOTS-67
+2861 BRAILLE PATTERN DOTS-167
+2862 BRAILLE PATTERN DOTS-267
+2863 BRAILLE PATTERN DOTS-1267
+2864 BRAILLE PATTERN DOTS-367
+2865 BRAILLE PATTERN DOTS-1367
+2866 BRAILLE PATTERN DOTS-2367
+2867 BRAILLE PATTERN DOTS-12367
+2868 BRAILLE PATTERN DOTS-467
+2869 BRAILLE PATTERN DOTS-1467
+286a BRAILLE PATTERN DOTS-2467
+286b BRAILLE PATTERN DOTS-12467
+286c BRAILLE PATTERN DOTS-3467
+286d BRAILLE PATTERN DOTS-13467
+286e BRAILLE PATTERN DOTS-23467
+286f BRAILLE PATTERN DOTS-123467
+2870 BRAILLE PATTERN DOTS-567
+2871 BRAILLE PATTERN DOTS-1567
+2872 BRAILLE PATTERN DOTS-2567
+2873 BRAILLE PATTERN DOTS-12567
+2874 BRAILLE PATTERN DOTS-3567
+2875 BRAILLE PATTERN DOTS-13567
+2876 BRAILLE PATTERN DOTS-23567
+2877 BRAILLE PATTERN DOTS-123567
+2878 BRAILLE PATTERN DOTS-4567
+2879 BRAILLE PATTERN DOTS-14567
+287a BRAILLE PATTERN DOTS-24567
+287b BRAILLE PATTERN DOTS-124567
+287c BRAILLE PATTERN DOTS-34567
+287d BRAILLE PATTERN DOTS-134567
+287e BRAILLE PATTERN DOTS-234567
+287f BRAILLE PATTERN DOTS-1234567
+2880 BRAILLE PATTERN DOTS-8
+2881 BRAILLE PATTERN DOTS-18
+2882 BRAILLE PATTERN DOTS-28
+2883 BRAILLE PATTERN DOTS-128
+2884 BRAILLE PATTERN DOTS-38
+2885 BRAILLE PATTERN DOTS-138
+2886 BRAILLE PATTERN DOTS-238
+2887 BRAILLE PATTERN DOTS-1238
+2888 BRAILLE PATTERN DOTS-48
+2889 BRAILLE PATTERN DOTS-148
+288a BRAILLE PATTERN DOTS-248
+288b BRAILLE PATTERN DOTS-1248
+288c BRAILLE PATTERN DOTS-348
+288d BRAILLE PATTERN DOTS-1348
+288e BRAILLE PATTERN DOTS-2348
+288f BRAILLE PATTERN DOTS-12348
+2890 BRAILLE PATTERN DOTS-58
+2891 BRAILLE PATTERN DOTS-158
+2892 BRAILLE PATTERN DOTS-258
+2893 BRAILLE PATTERN DOTS-1258
+2894 BRAILLE PATTERN DOTS-358
+2895 BRAILLE PATTERN DOTS-1358
+2896 BRAILLE PATTERN DOTS-2358
+2897 BRAILLE PATTERN DOTS-12358
+2898 BRAILLE PATTERN DOTS-458
+2899 BRAILLE PATTERN DOTS-1458
+289a BRAILLE PATTERN DOTS-2458
+289b BRAILLE PATTERN DOTS-12458
+289c BRAILLE PATTERN DOTS-3458
+289d BRAILLE PATTERN DOTS-13458
+289e BRAILLE PATTERN DOTS-23458
+289f BRAILLE PATTERN DOTS-123458
+28a0 BRAILLE PATTERN DOTS-68
+28a1 BRAILLE PATTERN DOTS-168
+28a2 BRAILLE PATTERN DOTS-268
+28a3 BRAILLE PATTERN DOTS-1268
+28a4 BRAILLE PATTERN DOTS-368
+28a5 BRAILLE PATTERN DOTS-1368
+28a6 BRAILLE PATTERN DOTS-2368
+28a7 BRAILLE PATTERN DOTS-12368
+28a8 BRAILLE PATTERN DOTS-468
+28a9 BRAILLE PATTERN DOTS-1468
+28aa BRAILLE PATTERN DOTS-2468
+28ab BRAILLE PATTERN DOTS-12468
+28ac BRAILLE PATTERN DOTS-3468
+28ad BRAILLE PATTERN DOTS-13468
+28ae BRAILLE PATTERN DOTS-23468
+28af BRAILLE PATTERN DOTS-123468
+28b0 BRAILLE PATTERN DOTS-568
+28b1 BRAILLE PATTERN DOTS-1568
+28b2 BRAILLE PATTERN DOTS-2568
+28b3 BRAILLE PATTERN DOTS-12568
+28b4 BRAILLE PATTERN DOTS-3568
+28b5 BRAILLE PATTERN DOTS-13568
+28b6 BRAILLE PATTERN DOTS-23568
+28b7 BRAILLE PATTERN DOTS-123568
+28b8 BRAILLE PATTERN DOTS-4568
+28b9 BRAILLE PATTERN DOTS-14568
+28ba BRAILLE PATTERN DOTS-24568
+28bb BRAILLE PATTERN DOTS-124568
+28bc BRAILLE PATTERN DOTS-34568
+28bd BRAILLE PATTERN DOTS-134568
+28be BRAILLE PATTERN DOTS-234568
+28bf BRAILLE PATTERN DOTS-1234568
+28c0 BRAILLE PATTERN DOTS-78
+28c1 BRAILLE PATTERN DOTS-178
+28c2 BRAILLE PATTERN DOTS-278
+28c3 BRAILLE PATTERN DOTS-1278
+28c4 BRAILLE PATTERN DOTS-378
+28c5 BRAILLE PATTERN DOTS-1378
+28c6 BRAILLE PATTERN DOTS-2378
+28c7 BRAILLE PATTERN DOTS-12378
+28c8 BRAILLE PATTERN DOTS-478
+28c9 BRAILLE PATTERN DOTS-1478
+28ca BRAILLE PATTERN DOTS-2478
+28cb BRAILLE PATTERN DOTS-12478
+28cc BRAILLE PATTERN DOTS-3478
+28cd BRAILLE PATTERN DOTS-13478
+28ce BRAILLE PATTERN DOTS-23478
+28cf BRAILLE PATTERN DOTS-123478
+28d0 BRAILLE PATTERN DOTS-578
+28d1 BRAILLE PATTERN DOTS-1578
+28d2 BRAILLE PATTERN DOTS-2578
+28d3 BRAILLE PATTERN DOTS-12578
+28d4 BRAILLE PATTERN DOTS-3578
+28d5 BRAILLE PATTERN DOTS-13578
+28d6 BRAILLE PATTERN DOTS-23578
+28d7 BRAILLE PATTERN DOTS-123578
+28d8 BRAILLE PATTERN DOTS-4578
+28d9 BRAILLE PATTERN DOTS-14578
+28da BRAILLE PATTERN DOTS-24578
+28db BRAILLE PATTERN DOTS-124578
+28dc BRAILLE PATTERN DOTS-34578
+28dd BRAILLE PATTERN DOTS-134578
+28de BRAILLE PATTERN DOTS-234578
+28df BRAILLE PATTERN DOTS-1234578
+28e0 BRAILLE PATTERN DOTS-678
+28e1 BRAILLE PATTERN DOTS-1678
+28e2 BRAILLE PATTERN DOTS-2678
+28e3 BRAILLE PATTERN DOTS-12678
+28e4 BRAILLE PATTERN DOTS-3678
+28e5 BRAILLE PATTERN DOTS-13678
+28e6 BRAILLE PATTERN DOTS-23678
+28e7 BRAILLE PATTERN DOTS-123678
+28e8 BRAILLE PATTERN DOTS-4678
+28e9 BRAILLE PATTERN DOTS-14678
+28ea BRAILLE PATTERN DOTS-24678
+28eb BRAILLE PATTERN DOTS-124678
+28ec BRAILLE PATTERN DOTS-34678
+28ed BRAILLE PATTERN DOTS-134678
+28ee BRAILLE PATTERN DOTS-234678
+28ef BRAILLE PATTERN DOTS-1234678
+28f0 BRAILLE PATTERN DOTS-5678
+28f1 BRAILLE PATTERN DOTS-15678
+28f2 BRAILLE PATTERN DOTS-25678
+28f3 BRAILLE PATTERN DOTS-125678
+28f4 BRAILLE PATTERN DOTS-35678
+28f5 BRAILLE PATTERN DOTS-135678
+28f6 BRAILLE PATTERN DOTS-235678
+28f7 BRAILLE PATTERN DOTS-1235678
+28f8 BRAILLE PATTERN DOTS-45678
+28f9 BRAILLE PATTERN DOTS-145678
+28fa BRAILLE PATTERN DOTS-245678
+28fb BRAILLE PATTERN DOTS-1245678
+28fc BRAILLE PATTERN DOTS-345678
+28fd BRAILLE PATTERN DOTS-1345678
+28fe BRAILLE PATTERN DOTS-2345678
+28ff BRAILLE PATTERN DOTS-12345678
+2e80 CJK RADICAL REPEAT
+2e81 CJK RADICAL CLIFF
+2e82 CJK RADICAL SECOND ONE
+2e83 CJK RADICAL SECOND TWO
+2e84 CJK RADICAL SECOND THREE
+2e85 CJK RADICAL PERSON
+2e86 CJK RADICAL BOX
+2e87 CJK RADICAL TABLE
+2e88 CJK RADICAL KNIFE ONE
+2e89 CJK RADICAL KNIFE TWO
+2e8a CJK RADICAL DIVINATION
+2e8b CJK RADICAL SEAL
+2e8c CJK RADICAL SMALL ONE
+2e8d CJK RADICAL SMALL TWO
+2e8e CJK RADICAL LAME ONE
+2e8f CJK RADICAL LAME TWO
+2e90 CJK RADICAL LAME THREE
+2e91 CJK RADICAL LAME FOUR
+2e92 CJK RADICAL SNAKE
+2e93 CJK RADICAL THREAD
+2e94 CJK RADICAL SNOUT ONE
+2e95 CJK RADICAL SNOUT TWO
+2e96 CJK RADICAL HEART ONE
+2e97 CJK RADICAL HEART TWO
+2e98 CJK RADICAL HAND
+2e99 CJK RADICAL RAP
+2e9b CJK RADICAL CHOKE
+2e9c CJK RADICAL SUN
+2e9d CJK RADICAL MOON
+2e9e CJK RADICAL DEATH
+2e9f CJK RADICAL MOTHER
+2ea0 CJK RADICAL CIVILIAN
+2ea1 CJK RADICAL WATER ONE
+2ea2 CJK RADICAL WATER TWO
+2ea3 CJK RADICAL FIRE
+2ea4 CJK RADICAL PAW ONE
+2ea5 CJK RADICAL PAW TWO
+2ea6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2ea7 CJK RADICAL COW
+2ea8 CJK RADICAL DOG
+2ea9 CJK RADICAL JADE
+2eaa CJK RADICAL BOLT OF CLOTH
+2eab CJK RADICAL EYE
+2eac CJK RADICAL SPIRIT ONE
+2ead CJK RADICAL SPIRIT TWO
+2eae CJK RADICAL BAMBOO
+2eaf CJK RADICAL SILK
+2eb0 CJK RADICAL C-SIMPLIFIED SILK
+2eb1 CJK RADICAL NET ONE
+2eb2 CJK RADICAL NET TWO
+2eb3 CJK RADICAL NET THREE
+2eb4 CJK RADICAL NET FOUR
+2eb5 CJK RADICAL MESH
+2eb6 CJK RADICAL SHEEP
+2eb7 CJK RADICAL RAM
+2eb8 CJK RADICAL EWE
+2eb9 CJK RADICAL OLD
+2eba CJK RADICAL BRUSH ONE
+2ebb CJK RADICAL BRUSH TWO
+2ebc CJK RADICAL MEAT
+2ebd CJK RADICAL MORTAR
+2ebe CJK RADICAL GRASS ONE
+2ebf CJK RADICAL GRASS TWO
+2ec0 CJK RADICAL GRASS THREE
+2ec1 CJK RADICAL TIGER
+2ec2 CJK RADICAL CLOTHES
+2ec3 CJK RADICAL WEST ONE
+2ec4 CJK RADICAL WEST TWO
+2ec5 CJK RADICAL C-SIMPLIFIED SEE
+2ec6 CJK RADICAL SIMPLIFIED HORN
+2ec7 CJK RADICAL HORN
+2ec8 CJK RADICAL C-SIMPLIFIED SPEECH
+2ec9 CJK RADICAL C-SIMPLIFIED SHELL
+2eca CJK RADICAL FOOT
+2ecb CJK RADICAL C-SIMPLIFIED CART
+2ecc CJK RADICAL SIMPLIFIED WALK
+2ecd CJK RADICAL WALK ONE
+2ece CJK RADICAL WALK TWO
+2ecf CJK RADICAL CITY
+2ed0 CJK RADICAL C-SIMPLIFIED GOLD
+2ed1 CJK RADICAL LONG ONE
+2ed2 CJK RADICAL LONG TWO
+2ed3 CJK RADICAL C-SIMPLIFIED LONG
+2ed4 CJK RADICAL C-SIMPLIFIED GATE
+2ed5 CJK RADICAL MOUND ONE
+2ed6 CJK RADICAL MOUND TWO
+2ed7 CJK RADICAL RAIN
+2ed8 CJK RADICAL BLUE
+2ed9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2eda CJK RADICAL C-SIMPLIFIED LEAF
+2edb CJK RADICAL C-SIMPLIFIED WIND
+2edc CJK RADICAL C-SIMPLIFIED FLY
+2edd CJK RADICAL EAT ONE
+2ede CJK RADICAL EAT TWO
+2edf CJK RADICAL EAT THREE
+2ee0 CJK RADICAL C-SIMPLIFIED EAT
+2ee1 CJK RADICAL HEAD
+2ee2 CJK RADICAL C-SIMPLIFIED HORSE
+2ee3 CJK RADICAL BONE
+2ee4 CJK RADICAL GHOST
+2ee5 CJK RADICAL C-SIMPLIFIED FISH
+2ee6 CJK RADICAL C-SIMPLIFIED BIRD
+2ee7 CJK RADICAL C-SIMPLIFIED SALT
+2ee8 CJK RADICAL SIMPLIFIED WHEAT
+2ee9 CJK RADICAL SIMPLIFIED YELLOW
+2eea CJK RADICAL C-SIMPLIFIED FROG
+2eeb CJK RADICAL J-SIMPLIFIED EVEN
+2eec CJK RADICAL C-SIMPLIFIED EVEN
+2eed CJK RADICAL J-SIMPLIFIED TOOTH
+2eee CJK RADICAL C-SIMPLIFIED TOOTH
+2eef CJK RADICAL J-SIMPLIFIED DRAGON
+2ef0 CJK RADICAL C-SIMPLIFIED DRAGON
+2ef1 CJK RADICAL TURTLE
+2ef2 CJK RADICAL J-SIMPLIFIED TURTLE
+2ef3 CJK RADICAL C-SIMPLIFIED TURTLE
+2f00 KANGXI RADICAL ONE
+2f01 KANGXI RADICAL LINE
+2f02 KANGXI RADICAL DOT
+2f03 KANGXI RADICAL SLASH
+2f04 KANGXI RADICAL SECOND
+2f05 KANGXI RADICAL HOOK
+2f06 KANGXI RADICAL TWO
+2f07 KANGXI RADICAL LID
+2f08 KANGXI RADICAL MAN
+2f09 KANGXI RADICAL LEGS
+2f0a KANGXI RADICAL ENTER
+2f0b KANGXI RADICAL EIGHT
+2f0c KANGXI RADICAL DOWN BOX
+2f0d KANGXI RADICAL COVER
+2f0e KANGXI RADICAL ICE
+2f0f KANGXI RADICAL TABLE
+2f10 KANGXI RADICAL OPEN BOX
+2f11 KANGXI RADICAL KNIFE
+2f12 KANGXI RADICAL POWER
+2f13 KANGXI RADICAL WRAP
+2f14 KANGXI RADICAL SPOON
+2f15 KANGXI RADICAL RIGHT OPEN BOX
+2f16 KANGXI RADICAL HIDING ENCLOSURE
+2f17 KANGXI RADICAL TEN
+2f18 KANGXI RADICAL DIVINATION
+2f19 KANGXI RADICAL SEAL
+2f1a KANGXI RADICAL CLIFF
+2f1b KANGXI RADICAL PRIVATE
+2f1c KANGXI RADICAL AGAIN
+2f1d KANGXI RADICAL MOUTH
+2f1e KANGXI RADICAL ENCLOSURE
+2f1f KANGXI RADICAL EARTH
+2f20 KANGXI RADICAL SCHOLAR
+2f21 KANGXI RADICAL GO
+2f22 KANGXI RADICAL GO SLOWLY
+2f23 KANGXI RADICAL EVENING
+2f24 KANGXI RADICAL BIG
+2f25 KANGXI RADICAL WOMAN
+2f26 KANGXI RADICAL CHILD
+2f27 KANGXI RADICAL ROOF
+2f28 KANGXI RADICAL INCH
+2f29 KANGXI RADICAL SMALL
+2f2a KANGXI RADICAL LAME
+2f2b KANGXI RADICAL CORPSE
+2f2c KANGXI RADICAL SPROUT
+2f2d KANGXI RADICAL MOUNTAIN
+2f2e KANGXI RADICAL RIVER
+2f2f KANGXI RADICAL WORK
+2f30 KANGXI RADICAL ONESELF
+2f31 KANGXI RADICAL TURBAN
+2f32 KANGXI RADICAL DRY
+2f33 KANGXI RADICAL SHORT THREAD
+2f34 KANGXI RADICAL DOTTED CLIFF
+2f35 KANGXI RADICAL LONG STRIDE
+2f36 KANGXI RADICAL TWO HANDS
+2f37 KANGXI RADICAL SHOOT
+2f38 KANGXI RADICAL BOW
+2f39 KANGXI RADICAL SNOUT
+2f3a KANGXI RADICAL BRISTLE
+2f3b KANGXI RADICAL STEP
+2f3c KANGXI RADICAL HEART
+2f3d KANGXI RADICAL HALBERD
+2f3e KANGXI RADICAL DOOR
+2f3f KANGXI RADICAL HAND
+2f40 KANGXI RADICAL BRANCH
+2f41 KANGXI RADICAL RAP
+2f42 KANGXI RADICAL SCRIPT
+2f43 KANGXI RADICAL DIPPER
+2f44 KANGXI RADICAL AXE
+2f45 KANGXI RADICAL SQUARE
+2f46 KANGXI RADICAL NOT
+2f47 KANGXI RADICAL SUN
+2f48 KANGXI RADICAL SAY
+2f49 KANGXI RADICAL MOON
+2f4a KANGXI RADICAL TREE
+2f4b KANGXI RADICAL LACK
+2f4c KANGXI RADICAL STOP
+2f4d KANGXI RADICAL DEATH
+2f4e KANGXI RADICAL WEAPON
+2f4f KANGXI RADICAL DO NOT
+2f50 KANGXI RADICAL COMPARE
+2f51 KANGXI RADICAL FUR
+2f52 KANGXI RADICAL CLAN
+2f53 KANGXI RADICAL STEAM
+2f54 KANGXI RADICAL WATER
+2f55 KANGXI RADICAL FIRE
+2f56 KANGXI RADICAL CLAW
+2f57 KANGXI RADICAL FATHER
+2f58 KANGXI RADICAL DOUBLE X
+2f59 KANGXI RADICAL HALF TREE TRUNK
+2f5a KANGXI RADICAL SLICE
+2f5b KANGXI RADICAL FANG
+2f5c KANGXI RADICAL COW
+2f5d KANGXI RADICAL DOG
+2f5e KANGXI RADICAL PROFOUND
+2f5f KANGXI RADICAL JADE
+2f60 KANGXI RADICAL MELON
+2f61 KANGXI RADICAL TILE
+2f62 KANGXI RADICAL SWEET
+2f63 KANGXI RADICAL LIFE
+2f64 KANGXI RADICAL USE
+2f65 KANGXI RADICAL FIELD
+2f66 KANGXI RADICAL BOLT OF CLOTH
+2f67 KANGXI RADICAL SICKNESS
+2f68 KANGXI RADICAL DOTTED TENT
+2f69 KANGXI RADICAL WHITE
+2f6a KANGXI RADICAL SKIN
+2f6b KANGXI RADICAL DISH
+2f6c KANGXI RADICAL EYE
+2f6d KANGXI RADICAL SPEAR
+2f6e KANGXI RADICAL ARROW
+2f6f KANGXI RADICAL STONE
+2f70 KANGXI RADICAL SPIRIT
+2f71 KANGXI RADICAL TRACK
+2f72 KANGXI RADICAL GRAIN
+2f73 KANGXI RADICAL CAVE
+2f74 KANGXI RADICAL STAND
+2f75 KANGXI RADICAL BAMBOO
+2f76 KANGXI RADICAL RICE
+2f77 KANGXI RADICAL SILK
+2f78 KANGXI RADICAL JAR
+2f79 KANGXI RADICAL NET
+2f7a KANGXI RADICAL SHEEP
+2f7b KANGXI RADICAL FEATHER
+2f7c KANGXI RADICAL OLD
+2f7d KANGXI RADICAL AND
+2f7e KANGXI RADICAL PLOW
+2f7f KANGXI RADICAL EAR
+2f80 KANGXI RADICAL BRUSH
+2f81 KANGXI RADICAL MEAT
+2f82 KANGXI RADICAL MINISTER
+2f83 KANGXI RADICAL SELF
+2f84 KANGXI RADICAL ARRIVE
+2f85 KANGXI RADICAL MORTAR
+2f86 KANGXI RADICAL TONGUE
+2f87 KANGXI RADICAL OPPOSE
+2f88 KANGXI RADICAL BOAT
+2f89 KANGXI RADICAL STOPPING
+2f8a KANGXI RADICAL COLOR
+2f8b KANGXI RADICAL GRASS
+2f8c KANGXI RADICAL TIGER
+2f8d KANGXI RADICAL INSECT
+2f8e KANGXI RADICAL BLOOD
+2f8f KANGXI RADICAL WALK ENCLOSURE
+2f90 KANGXI RADICAL CLOTHES
+2f91 KANGXI RADICAL WEST
+2f92 KANGXI RADICAL SEE
+2f93 KANGXI RADICAL HORN
+2f94 KANGXI RADICAL SPEECH
+2f95 KANGXI RADICAL VALLEY
+2f96 KANGXI RADICAL BEAN
+2f97 KANGXI RADICAL PIG
+2f98 KANGXI RADICAL BADGER
+2f99 KANGXI RADICAL SHELL
+2f9a KANGXI RADICAL RED
+2f9b KANGXI RADICAL RUN
+2f9c KANGXI RADICAL FOOT
+2f9d KANGXI RADICAL BODY
+2f9e KANGXI RADICAL CART
+2f9f KANGXI RADICAL BITTER
+2fa0 KANGXI RADICAL MORNING
+2fa1 KANGXI RADICAL WALK
+2fa2 KANGXI RADICAL CITY
+2fa3 KANGXI RADICAL WINE
+2fa4 KANGXI RADICAL DISTINGUISH
+2fa5 KANGXI RADICAL VILLAGE
+2fa6 KANGXI RADICAL GOLD
+2fa7 KANGXI RADICAL LONG
+2fa8 KANGXI RADICAL GATE
+2fa9 KANGXI RADICAL MOUND
+2faa KANGXI RADICAL SLAVE
+2fab KANGXI RADICAL SHORT TAILED BIRD
+2fac KANGXI RADICAL RAIN
+2fad KANGXI RADICAL BLUE
+2fae KANGXI RADICAL WRONG
+2faf KANGXI RADICAL FACE
+2fb0 KANGXI RADICAL LEATHER
+2fb1 KANGXI RADICAL TANNED LEATHER
+2fb2 KANGXI RADICAL LEEK
+2fb3 KANGXI RADICAL SOUND
+2fb4 KANGXI RADICAL LEAF
+2fb5 KANGXI RADICAL WIND
+2fb6 KANGXI RADICAL FLY
+2fb7 KANGXI RADICAL EAT
+2fb8 KANGXI RADICAL HEAD
+2fb9 KANGXI RADICAL FRAGRANT
+2fba KANGXI RADICAL HORSE
+2fbb KANGXI RADICAL BONE
+2fbc KANGXI RADICAL TALL
+2fbd KANGXI RADICAL HAIR
+2fbe KANGXI RADICAL FIGHT
+2fbf KANGXI RADICAL SACRIFICIAL WINE
+2fc0 KANGXI RADICAL CAULDRON
+2fc1 KANGXI RADICAL GHOST
+2fc2 KANGXI RADICAL FISH
+2fc3 KANGXI RADICAL BIRD
+2fc4 KANGXI RADICAL SALT
+2fc5 KANGXI RADICAL DEER
+2fc6 KANGXI RADICAL WHEAT
+2fc7 KANGXI RADICAL HEMP
+2fc8 KANGXI RADICAL YELLOW
+2fc9 KANGXI RADICAL MILLET
+2fca KANGXI RADICAL BLACK
+2fcb KANGXI RADICAL EMBROIDERY
+2fcc KANGXI RADICAL FROG
+2fcd KANGXI RADICAL TRIPOD
+2fce KANGXI RADICAL DRUM
+2fcf KANGXI RADICAL RAT
+2fd0 KANGXI RADICAL NOSE
+2fd1 KANGXI RADICAL EVEN
+2fd2 KANGXI RADICAL TOOTH
+2fd3 KANGXI RADICAL DRAGON
+2fd4 KANGXI RADICAL TURTLE
+2fd5 KANGXI RADICAL FLUTE
+2ff0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2ff1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2ff2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2ff3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2ff4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2ff5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2ff6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2ff7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2ff8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2ff9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2ffa IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2ffb IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000 IDEOGRAPHIC SPACE
+3001 IDEOGRAPHIC COMMA
+3002 IDEOGRAPHIC FULL STOP
+3003 DITTO MARK
+3004 JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005 IDEOGRAPHIC ITERATION MARK
+3006 IDEOGRAPHIC CLOSING MARK
+3007 IDEOGRAPHIC NUMBER ZERO
+3008 LEFT ANGLE BRACKET
+3009 RIGHT ANGLE BRACKET
+300a LEFT DOUBLE ANGLE BRACKET
+300b RIGHT DOUBLE ANGLE BRACKET
+300c LEFT CORNER BRACKET
+300d RIGHT CORNER BRACKET
+300e LEFT WHITE CORNER BRACKET
+300f RIGHT WHITE CORNER BRACKET
+3010 LEFT BLACK LENTICULAR BRACKET
+3011 RIGHT BLACK LENTICULAR BRACKET
+3012 POSTAL MARK
+3013 GETA MARK
+3014 LEFT TORTOISE SHELL BRACKET
+3015 RIGHT TORTOISE SHELL BRACKET
+3016 LEFT WHITE LENTICULAR BRACKET
+3017 RIGHT WHITE LENTICULAR BRACKET
+3018 LEFT WHITE TORTOISE SHELL BRACKET
+3019 RIGHT WHITE TORTOISE SHELL BRACKET
+301a LEFT WHITE SQUARE BRACKET
+301b RIGHT WHITE SQUARE BRACKET
+301c WAVE DASH
+301d REVERSED DOUBLE PRIME QUOTATION MARK
+301e DOUBLE PRIME QUOTATION MARK
+301f LOW DOUBLE PRIME QUOTATION MARK
+3020 POSTAL MARK FACE
+3021 HANGZHOU NUMERAL ONE
+3022 HANGZHOU NUMERAL TWO
+3023 HANGZHOU NUMERAL THREE
+3024 HANGZHOU NUMERAL FOUR
+3025 HANGZHOU NUMERAL FIVE
+3026 HANGZHOU NUMERAL SIX
+3027 HANGZHOU NUMERAL SEVEN
+3028 HANGZHOU NUMERAL EIGHT
+3029 HANGZHOU NUMERAL NINE
+302a IDEOGRAPHIC LEVEL TONE MARK
+302b IDEOGRAPHIC RISING TONE MARK
+302c IDEOGRAPHIC DEPARTING TONE MARK
+302d IDEOGRAPHIC ENTERING TONE MARK
+302e HANGUL SINGLE DOT TONE MARK
+302f HANGUL DOUBLE DOT TONE MARK
+3030 WAVY DASH
+3031 VERTICAL KANA REPEAT MARK
+3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033 VERTICAL KANA REPEAT MARK UPPER HALF
+3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035 VERTICAL KANA REPEAT MARK LOWER HALF
+3036 CIRCLED POSTAL MARK
+3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038 HANGZHOU NUMERAL TEN
+3039 HANGZHOU NUMERAL TWENTY
+303a HANGZHOU NUMERAL THIRTY
+303e IDEOGRAPHIC VARIATION INDICATOR
+303f IDEOGRAPHIC HALF FILL SPACE
+3041 HIRAGANA LETTER SMALL A
+3042 HIRAGANA LETTER A
+3043 HIRAGANA LETTER SMALL I
+3044 HIRAGANA LETTER I
+3045 HIRAGANA LETTER SMALL U
+3046 HIRAGANA LETTER U
+3047 HIRAGANA LETTER SMALL E
+3048 HIRAGANA LETTER E
+3049 HIRAGANA LETTER SMALL O
+304a HIRAGANA LETTER O
+304b HIRAGANA LETTER KA
+304c HIRAGANA LETTER GA
+304d HIRAGANA LETTER KI
+304e HIRAGANA LETTER GI
+304f HIRAGANA LETTER KU
+3050 HIRAGANA LETTER GU
+3051 HIRAGANA LETTER KE
+3052 HIRAGANA LETTER GE
+3053 HIRAGANA LETTER KO
+3054 HIRAGANA LETTER GO
+3055 HIRAGANA LETTER SA
+3056 HIRAGANA LETTER ZA
+3057 HIRAGANA LETTER SI
+3058 HIRAGANA LETTER ZI
+3059 HIRAGANA LETTER SU
+305a HIRAGANA LETTER ZU
+305b HIRAGANA LETTER SE
+305c HIRAGANA LETTER ZE
+305d HIRAGANA LETTER SO
+305e HIRAGANA LETTER ZO
+305f HIRAGANA LETTER TA
+3060 HIRAGANA LETTER DA
+3061 HIRAGANA LETTER TI
+3062 HIRAGANA LETTER DI
+3063 HIRAGANA LETTER SMALL TU
+3064 HIRAGANA LETTER TU
+3065 HIRAGANA LETTER DU
+3066 HIRAGANA LETTER TE
+3067 HIRAGANA LETTER DE
+3068 HIRAGANA LETTER TO
+3069 HIRAGANA LETTER DO
+306a HIRAGANA LETTER NA
+306b HIRAGANA LETTER NI
+306c HIRAGANA LETTER NU
+306d HIRAGANA LETTER NE
+306e HIRAGANA LETTER NO
+306f HIRAGANA LETTER HA
+3070 HIRAGANA LETTER BA
+3071 HIRAGANA LETTER PA
+3072 HIRAGANA LETTER HI
+3073 HIRAGANA LETTER BI
+3074 HIRAGANA LETTER PI
+3075 HIRAGANA LETTER HU
+3076 HIRAGANA LETTER BU
+3077 HIRAGANA LETTER PU
+3078 HIRAGANA LETTER HE
+3079 HIRAGANA LETTER BE
+307a HIRAGANA LETTER PE
+307b HIRAGANA LETTER HO
+307c HIRAGANA LETTER BO
+307d HIRAGANA LETTER PO
+307e HIRAGANA LETTER MA
+307f HIRAGANA LETTER MI
+3080 HIRAGANA LETTER MU
+3081 HIRAGANA LETTER ME
+3082 HIRAGANA LETTER MO
+3083 HIRAGANA LETTER SMALL YA
+3084 HIRAGANA LETTER YA
+3085 HIRAGANA LETTER SMALL YU
+3086 HIRAGANA LETTER YU
+3087 HIRAGANA LETTER SMALL YO
+3088 HIRAGANA LETTER YO
+3089 HIRAGANA LETTER RA
+308a HIRAGANA LETTER RI
+308b HIRAGANA LETTER RU
+308c HIRAGANA LETTER RE
+308d HIRAGANA LETTER RO
+308e HIRAGANA LETTER SMALL WA
+308f HIRAGANA LETTER WA
+3090 HIRAGANA LETTER WI
+3091 HIRAGANA LETTER WE
+3092 HIRAGANA LETTER WO
+3093 HIRAGANA LETTER N
+3094 HIRAGANA LETTER VU
+3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309b KATAKANA-HIRAGANA VOICED SOUND MARK
+309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309d HIRAGANA ITERATION MARK
+309e HIRAGANA VOICED ITERATION MARK
+30a1 KATAKANA LETTER SMALL A
+30a2 KATAKANA LETTER A
+30a3 KATAKANA LETTER SMALL I
+30a4 KATAKANA LETTER I
+30a5 KATAKANA LETTER SMALL U
+30a6 KATAKANA LETTER U
+30a7 KATAKANA LETTER SMALL E
+30a8 KATAKANA LETTER E
+30a9 KATAKANA LETTER SMALL O
+30aa KATAKANA LETTER O
+30ab KATAKANA LETTER KA
+30ac KATAKANA LETTER GA
+30ad KATAKANA LETTER KI
+30ae KATAKANA LETTER GI
+30af KATAKANA LETTER KU
+30b0 KATAKANA LETTER GU
+30b1 KATAKANA LETTER KE
+30b2 KATAKANA LETTER GE
+30b3 KATAKANA LETTER KO
+30b4 KATAKANA LETTER GO
+30b5 KATAKANA LETTER SA
+30b6 KATAKANA LETTER ZA
+30b7 KATAKANA LETTER SI
+30b8 KATAKANA LETTER ZI
+30b9 KATAKANA LETTER SU
+30ba KATAKANA LETTER ZU
+30bb KATAKANA LETTER SE
+30bc KATAKANA LETTER ZE
+30bd KATAKANA LETTER SO
+30be KATAKANA LETTER ZO
+30bf KATAKANA LETTER TA
+30c0 KATAKANA LETTER DA
+30c1 KATAKANA LETTER TI
+30c2 KATAKANA LETTER DI
+30c3 KATAKANA LETTER SMALL TU
+30c4 KATAKANA LETTER TU
+30c5 KATAKANA LETTER DU
+30c6 KATAKANA LETTER TE
+30c7 KATAKANA LETTER DE
+30c8 KATAKANA LETTER TO
+30c9 KATAKANA LETTER DO
+30ca KATAKANA LETTER NA
+30cb KATAKANA LETTER NI
+30cc KATAKANA LETTER NU
+30cd KATAKANA LETTER NE
+30ce KATAKANA LETTER NO
+30cf KATAKANA LETTER HA
+30d0 KATAKANA LETTER BA
+30d1 KATAKANA LETTER PA
+30d2 KATAKANA LETTER HI
+30d3 KATAKANA LETTER BI
+30d4 KATAKANA LETTER PI
+30d5 KATAKANA LETTER HU
+30d6 KATAKANA LETTER BU
+30d7 KATAKANA LETTER PU
+30d8 KATAKANA LETTER HE
+30d9 KATAKANA LETTER BE
+30da KATAKANA LETTER PE
+30db KATAKANA LETTER HO
+30dc KATAKANA LETTER BO
+30dd KATAKANA LETTER PO
+30de KATAKANA LETTER MA
+30df KATAKANA LETTER MI
+30e0 KATAKANA LETTER MU
+30e1 KATAKANA LETTER ME
+30e2 KATAKANA LETTER MO
+30e3 KATAKANA LETTER SMALL YA
+30e4 KATAKANA LETTER YA
+30e5 KATAKANA LETTER SMALL YU
+30e6 KATAKANA LETTER YU
+30e7 KATAKANA LETTER SMALL YO
+30e8 KATAKANA LETTER YO
+30e9 KATAKANA LETTER RA
+30ea KATAKANA LETTER RI
+30eb KATAKANA LETTER RU
+30ec KATAKANA LETTER RE
+30ed KATAKANA LETTER RO
+30ee KATAKANA LETTER SMALL WA
+30ef KATAKANA LETTER WA
+30f0 KATAKANA LETTER WI
+30f1 KATAKANA LETTER WE
+30f2 KATAKANA LETTER WO
+30f3 KATAKANA LETTER N
+30f4 KATAKANA LETTER VU
+30f5 KATAKANA LETTER SMALL KA
+30f6 KATAKANA LETTER SMALL KE
+30f7 KATAKANA LETTER VA
+30f8 KATAKANA LETTER VI
+30f9 KATAKANA LETTER VE
+30fa KATAKANA LETTER VO
+30fb KATAKANA MIDDLE DOT
+30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30fd KATAKANA ITERATION MARK
+30fe KATAKANA VOICED ITERATION MARK
+3105 BOPOMOFO LETTER B
+3106 BOPOMOFO LETTER P
+3107 BOPOMOFO LETTER M
+3108 BOPOMOFO LETTER F
+3109 BOPOMOFO LETTER D
+310a BOPOMOFO LETTER T
+310b BOPOMOFO LETTER N
+310c BOPOMOFO LETTER L
+310d BOPOMOFO LETTER G
+310e BOPOMOFO LETTER K
+310f BOPOMOFO LETTER H
+3110 BOPOMOFO LETTER J
+3111 BOPOMOFO LETTER Q
+3112 BOPOMOFO LETTER X
+3113 BOPOMOFO LETTER ZH
+3114 BOPOMOFO LETTER CH
+3115 BOPOMOFO LETTER SH
+3116 BOPOMOFO LETTER R
+3117 BOPOMOFO LETTER Z
+3118 BOPOMOFO LETTER C
+3119 BOPOMOFO LETTER S
+311a BOPOMOFO LETTER A
+311b BOPOMOFO LETTER O
+311c BOPOMOFO LETTER E
+311d BOPOMOFO LETTER EH
+311e BOPOMOFO LETTER AI
+311f BOPOMOFO LETTER EI
+3120 BOPOMOFO LETTER AU
+3121 BOPOMOFO LETTER OU
+3122 BOPOMOFO LETTER AN
+3123 BOPOMOFO LETTER EN
+3124 BOPOMOFO LETTER ANG
+3125 BOPOMOFO LETTER ENG
+3126 BOPOMOFO LETTER ER
+3127 BOPOMOFO LETTER I
+3128 BOPOMOFO LETTER U
+3129 BOPOMOFO LETTER IU
+312a BOPOMOFO LETTER V
+312b BOPOMOFO LETTER NG
+312c BOPOMOFO LETTER GN
+3131 HANGUL LETTER KIYEOK
+3132 HANGUL LETTER SSANGKIYEOK
+3133 HANGUL LETTER KIYEOK-SIOS
+3134 HANGUL LETTER NIEUN
+3135 HANGUL LETTER NIEUN-CIEUC
+3136 HANGUL LETTER NIEUN-HIEUH
+3137 HANGUL LETTER TIKEUT
+3138 HANGUL LETTER SSANGTIKEUT
+3139 HANGUL LETTER RIEUL
+313a HANGUL LETTER RIEUL-KIYEOK
+313b HANGUL LETTER RIEUL-MIEUM
+313c HANGUL LETTER RIEUL-PIEUP
+313d HANGUL LETTER RIEUL-SIOS
+313e HANGUL LETTER RIEUL-THIEUTH
+313f HANGUL LETTER RIEUL-PHIEUPH
+3140 HANGUL LETTER RIEUL-HIEUH
+3141 HANGUL LETTER MIEUM
+3142 HANGUL LETTER PIEUP
+3143 HANGUL LETTER SSANGPIEUP
+3144 HANGUL LETTER PIEUP-SIOS
+3145 HANGUL LETTER SIOS
+3146 HANGUL LETTER SSANGSIOS
+3147 HANGUL LETTER IEUNG
+3148 HANGUL LETTER CIEUC
+3149 HANGUL LETTER SSANGCIEUC
+314a HANGUL LETTER CHIEUCH
+314b HANGUL LETTER KHIEUKH
+314c HANGUL LETTER THIEUTH
+314d HANGUL LETTER PHIEUPH
+314e HANGUL LETTER HIEUH
+314f HANGUL LETTER A
+3150 HANGUL LETTER AE
+3151 HANGUL LETTER YA
+3152 HANGUL LETTER YAE
+3153 HANGUL LETTER EO
+3154 HANGUL LETTER E
+3155 HANGUL LETTER YEO
+3156 HANGUL LETTER YE
+3157 HANGUL LETTER O
+3158 HANGUL LETTER WA
+3159 HANGUL LETTER WAE
+315a HANGUL LETTER OE
+315b HANGUL LETTER YO
+315c HANGUL LETTER U
+315d HANGUL LETTER WEO
+315e HANGUL LETTER WE
+315f HANGUL LETTER WI
+3160 HANGUL LETTER YU
+3161 HANGUL LETTER EU
+3162 HANGUL LETTER YI
+3163 HANGUL LETTER I
+3164 HANGUL FILLER
+3165 HANGUL LETTER SSANGNIEUN
+3166 HANGUL LETTER NIEUN-TIKEUT
+3167 HANGUL LETTER NIEUN-SIOS
+3168 HANGUL LETTER NIEUN-PANSIOS
+3169 HANGUL LETTER RIEUL-KIYEOK-SIOS
+316a HANGUL LETTER RIEUL-TIKEUT
+316b HANGUL LETTER RIEUL-PIEUP-SIOS
+316c HANGUL LETTER RIEUL-PANSIOS
+316d HANGUL LETTER RIEUL-YEORINHIEUH
+316e HANGUL LETTER MIEUM-PIEUP
+316f HANGUL LETTER MIEUM-SIOS
+3170 HANGUL LETTER MIEUM-PANSIOS
+3171 HANGUL LETTER KAPYEOUNMIEUM
+3172 HANGUL LETTER PIEUP-KIYEOK
+3173 HANGUL LETTER PIEUP-TIKEUT
+3174 HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175 HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176 HANGUL LETTER PIEUP-CIEUC
+3177 HANGUL LETTER PIEUP-THIEUTH
+3178 HANGUL LETTER KAPYEOUNPIEUP
+3179 HANGUL LETTER KAPYEOUNSSANGPIEUP
+317a HANGUL LETTER SIOS-KIYEOK
+317b HANGUL LETTER SIOS-NIEUN
+317c HANGUL LETTER SIOS-TIKEUT
+317d HANGUL LETTER SIOS-PIEUP
+317e HANGUL LETTER SIOS-CIEUC
+317f HANGUL LETTER PANSIOS
+3180 HANGUL LETTER SSANGIEUNG
+3181 HANGUL LETTER YESIEUNG
+3182 HANGUL LETTER YESIEUNG-SIOS
+3183 HANGUL LETTER YESIEUNG-PANSIOS
+3184 HANGUL LETTER KAPYEOUNPHIEUPH
+3185 HANGUL LETTER SSANGHIEUH
+3186 HANGUL LETTER YEORINHIEUH
+3187 HANGUL LETTER YO-YA
+3188 HANGUL LETTER YO-YAE
+3189 HANGUL LETTER YO-I
+318a HANGUL LETTER YU-YEO
+318b HANGUL LETTER YU-YE
+318c HANGUL LETTER YU-I
+318d HANGUL LETTER ARAEA
+318e HANGUL LETTER ARAEAE
+3190 IDEOGRAPHIC ANNOTATION LINKING MARK
+3191 IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192 IDEOGRAPHIC ANNOTATION ONE MARK
+3193 IDEOGRAPHIC ANNOTATION TWO MARK
+3194 IDEOGRAPHIC ANNOTATION THREE MARK
+3195 IDEOGRAPHIC ANNOTATION FOUR MARK
+3196 IDEOGRAPHIC ANNOTATION TOP MARK
+3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199 IDEOGRAPHIC ANNOTATION FIRST MARK
+319a IDEOGRAPHIC ANNOTATION SECOND MARK
+319b IDEOGRAPHIC ANNOTATION THIRD MARK
+319c IDEOGRAPHIC ANNOTATION FOURTH MARK
+319d IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319e IDEOGRAPHIC ANNOTATION EARTH MARK
+319f IDEOGRAPHIC ANNOTATION MAN MARK
+31a0 BOPOMOFO LETTER BU
+31a1 BOPOMOFO LETTER ZI
+31a2 BOPOMOFO LETTER JI
+31a3 BOPOMOFO LETTER GU
+31a4 BOPOMOFO LETTER EE
+31a5 BOPOMOFO LETTER ENN
+31a6 BOPOMOFO LETTER OO
+31a7 BOPOMOFO LETTER ONN
+31a8 BOPOMOFO LETTER IR
+31a9 BOPOMOFO LETTER ANN
+31aa BOPOMOFO LETTER INN
+31ab BOPOMOFO LETTER UNN
+31ac BOPOMOFO LETTER IM
+31ad BOPOMOFO LETTER NGG
+31ae BOPOMOFO LETTER AINN
+31af BOPOMOFO LETTER AUNN
+31b0 BOPOMOFO LETTER AM
+31b1 BOPOMOFO LETTER OM
+31b2 BOPOMOFO LETTER ONG
+31b3 BOPOMOFO LETTER INNN
+31b4 BOPOMOFO FINAL LETTER P
+31b5 BOPOMOFO FINAL LETTER T
+31b6 BOPOMOFO FINAL LETTER K
+31b7 BOPOMOFO FINAL LETTER H
+3200 PARENTHESIZED HANGUL KIYEOK
+3201 PARENTHESIZED HANGUL NIEUN
+3202 PARENTHESIZED HANGUL TIKEUT
+3203 PARENTHESIZED HANGUL RIEUL
+3204 PARENTHESIZED HANGUL MIEUM
+3205 PARENTHESIZED HANGUL PIEUP
+3206 PARENTHESIZED HANGUL SIOS
+3207 PARENTHESIZED HANGUL IEUNG
+3208 PARENTHESIZED HANGUL CIEUC
+3209 PARENTHESIZED HANGUL CHIEUCH
+320a PARENTHESIZED HANGUL KHIEUKH
+320b PARENTHESIZED HANGUL THIEUTH
+320c PARENTHESIZED HANGUL PHIEUPH
+320d PARENTHESIZED HANGUL HIEUH
+320e PARENTHESIZED HANGUL KIYEOK A
+320f PARENTHESIZED HANGUL NIEUN A
+3210 PARENTHESIZED HANGUL TIKEUT A
+3211 PARENTHESIZED HANGUL RIEUL A
+3212 PARENTHESIZED HANGUL MIEUM A
+3213 PARENTHESIZED HANGUL PIEUP A
+3214 PARENTHESIZED HANGUL SIOS A
+3215 PARENTHESIZED HANGUL IEUNG A
+3216 PARENTHESIZED HANGUL CIEUC A
+3217 PARENTHESIZED HANGUL CHIEUCH A
+3218 PARENTHESIZED HANGUL KHIEUKH A
+3219 PARENTHESIZED HANGUL THIEUTH A
+321a PARENTHESIZED HANGUL PHIEUPH A
+321b PARENTHESIZED HANGUL HIEUH A
+321c PARENTHESIZED HANGUL CIEUC U
+3220 PARENTHESIZED IDEOGRAPH ONE
+3221 PARENTHESIZED IDEOGRAPH TWO
+3222 PARENTHESIZED IDEOGRAPH THREE
+3223 PARENTHESIZED IDEOGRAPH FOUR
+3224 PARENTHESIZED IDEOGRAPH FIVE
+3225 PARENTHESIZED IDEOGRAPH SIX
+3226 PARENTHESIZED IDEOGRAPH SEVEN
+3227 PARENTHESIZED IDEOGRAPH EIGHT
+3228 PARENTHESIZED IDEOGRAPH NINE
+3229 PARENTHESIZED IDEOGRAPH TEN
+322a PARENTHESIZED IDEOGRAPH MOON
+322b PARENTHESIZED IDEOGRAPH FIRE
+322c PARENTHESIZED IDEOGRAPH WATER
+322d PARENTHESIZED IDEOGRAPH WOOD
+322e PARENTHESIZED IDEOGRAPH METAL
+322f PARENTHESIZED IDEOGRAPH EARTH
+3230 PARENTHESIZED IDEOGRAPH SUN
+3231 PARENTHESIZED IDEOGRAPH STOCK
+3232 PARENTHESIZED IDEOGRAPH HAVE
+3233 PARENTHESIZED IDEOGRAPH SOCIETY
+3234 PARENTHESIZED IDEOGRAPH NAME
+3235 PARENTHESIZED IDEOGRAPH SPECIAL
+3236 PARENTHESIZED IDEOGRAPH FINANCIAL
+3237 PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238 PARENTHESIZED IDEOGRAPH LABOR
+3239 PARENTHESIZED IDEOGRAPH REPRESENT
+323a PARENTHESIZED IDEOGRAPH CALL
+323b PARENTHESIZED IDEOGRAPH STUDY
+323c PARENTHESIZED IDEOGRAPH SUPERVISE
+323d PARENTHESIZED IDEOGRAPH ENTERPRISE
+323e PARENTHESIZED IDEOGRAPH RESOURCE
+323f PARENTHESIZED IDEOGRAPH ALLIANCE
+3240 PARENTHESIZED IDEOGRAPH FESTIVAL
+3241 PARENTHESIZED IDEOGRAPH REST
+3242 PARENTHESIZED IDEOGRAPH SELF
+3243 PARENTHESIZED IDEOGRAPH REACH
+3260 CIRCLED HANGUL KIYEOK
+3261 CIRCLED HANGUL NIEUN
+3262 CIRCLED HANGUL TIKEUT
+3263 CIRCLED HANGUL RIEUL
+3264 CIRCLED HANGUL MIEUM
+3265 CIRCLED HANGUL PIEUP
+3266 CIRCLED HANGUL SIOS
+3267 CIRCLED HANGUL IEUNG
+3268 CIRCLED HANGUL CIEUC
+3269 CIRCLED HANGUL CHIEUCH
+326a CIRCLED HANGUL KHIEUKH
+326b CIRCLED HANGUL THIEUTH
+326c CIRCLED HANGUL PHIEUPH
+326d CIRCLED HANGUL HIEUH
+326e CIRCLED HANGUL KIYEOK A
+326f CIRCLED HANGUL NIEUN A
+3270 CIRCLED HANGUL TIKEUT A
+3271 CIRCLED HANGUL RIEUL A
+3272 CIRCLED HANGUL MIEUM A
+3273 CIRCLED HANGUL PIEUP A
+3274 CIRCLED HANGUL SIOS A
+3275 CIRCLED HANGUL IEUNG A
+3276 CIRCLED HANGUL CIEUC A
+3277 CIRCLED HANGUL CHIEUCH A
+3278 CIRCLED HANGUL KHIEUKH A
+3279 CIRCLED HANGUL THIEUTH A
+327a CIRCLED HANGUL PHIEUPH A
+327b CIRCLED HANGUL HIEUH A
+327f KOREAN STANDARD SYMBOL
+3280 CIRCLED IDEOGRAPH ONE
+3281 CIRCLED IDEOGRAPH TWO
+3282 CIRCLED IDEOGRAPH THREE
+3283 CIRCLED IDEOGRAPH FOUR
+3284 CIRCLED IDEOGRAPH FIVE
+3285 CIRCLED IDEOGRAPH SIX
+3286 CIRCLED IDEOGRAPH SEVEN
+3287 CIRCLED IDEOGRAPH EIGHT
+3288 CIRCLED IDEOGRAPH NINE
+3289 CIRCLED IDEOGRAPH TEN
+328a CIRCLED IDEOGRAPH MOON
+328b CIRCLED IDEOGRAPH FIRE
+328c CIRCLED IDEOGRAPH WATER
+328d CIRCLED IDEOGRAPH WOOD
+328e CIRCLED IDEOGRAPH METAL
+328f CIRCLED IDEOGRAPH EARTH
+3290 CIRCLED IDEOGRAPH SUN
+3291 CIRCLED IDEOGRAPH STOCK
+3292 CIRCLED IDEOGRAPH HAVE
+3293 CIRCLED IDEOGRAPH SOCIETY
+3294 CIRCLED IDEOGRAPH NAME
+3295 CIRCLED IDEOGRAPH SPECIAL
+3296 CIRCLED IDEOGRAPH FINANCIAL
+3297 CIRCLED IDEOGRAPH CONGRATULATION
+3298 CIRCLED IDEOGRAPH LABOR
+3299 CIRCLED IDEOGRAPH SECRET
+329a CIRCLED IDEOGRAPH MALE
+329b CIRCLED IDEOGRAPH FEMALE
+329c CIRCLED IDEOGRAPH SUITABLE
+329d CIRCLED IDEOGRAPH EXCELLENT
+329e CIRCLED IDEOGRAPH PRINT
+329f CIRCLED IDEOGRAPH ATTENTION
+32a0 CIRCLED IDEOGRAPH ITEM
+32a1 CIRCLED IDEOGRAPH REST
+32a2 CIRCLED IDEOGRAPH COPY
+32a3 CIRCLED IDEOGRAPH CORRECT
+32a4 CIRCLED IDEOGRAPH HIGH
+32a5 CIRCLED IDEOGRAPH CENTRE
+32a6 CIRCLED IDEOGRAPH LOW
+32a7 CIRCLED IDEOGRAPH LEFT
+32a8 CIRCLED IDEOGRAPH RIGHT
+32a9 CIRCLED IDEOGRAPH MEDICINE
+32aa CIRCLED IDEOGRAPH RELIGION
+32ab CIRCLED IDEOGRAPH STUDY
+32ac CIRCLED IDEOGRAPH SUPERVISE
+32ad CIRCLED IDEOGRAPH ENTERPRISE
+32ae CIRCLED IDEOGRAPH RESOURCE
+32af CIRCLED IDEOGRAPH ALLIANCE
+32b0 CIRCLED IDEOGRAPH NIGHT
+32c0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32c1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32c2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32c3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32c4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32c5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32c6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32c7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32c8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32c9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32ca IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32cb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32d0 CIRCLED KATAKANA A
+32d1 CIRCLED KATAKANA I
+32d2 CIRCLED KATAKANA U
+32d3 CIRCLED KATAKANA E
+32d4 CIRCLED KATAKANA O
+32d5 CIRCLED KATAKANA KA
+32d6 CIRCLED KATAKANA KI
+32d7 CIRCLED KATAKANA KU
+32d8 CIRCLED KATAKANA KE
+32d9 CIRCLED KATAKANA KO
+32da CIRCLED KATAKANA SA
+32db CIRCLED KATAKANA SI
+32dc CIRCLED KATAKANA SU
+32dd CIRCLED KATAKANA SE
+32de CIRCLED KATAKANA SO
+32df CIRCLED KATAKANA TA
+32e0 CIRCLED KATAKANA TI
+32e1 CIRCLED KATAKANA TU
+32e2 CIRCLED KATAKANA TE
+32e3 CIRCLED KATAKANA TO
+32e4 CIRCLED KATAKANA NA
+32e5 CIRCLED KATAKANA NI
+32e6 CIRCLED KATAKANA NU
+32e7 CIRCLED KATAKANA NE
+32e8 CIRCLED KATAKANA NO
+32e9 CIRCLED KATAKANA HA
+32ea CIRCLED KATAKANA HI
+32eb CIRCLED KATAKANA HU
+32ec CIRCLED KATAKANA HE
+32ed CIRCLED KATAKANA HO
+32ee CIRCLED KATAKANA MA
+32ef CIRCLED KATAKANA MI
+32f0 CIRCLED KATAKANA MU
+32f1 CIRCLED KATAKANA ME
+32f2 CIRCLED KATAKANA MO
+32f3 CIRCLED KATAKANA YA
+32f4 CIRCLED KATAKANA YU
+32f5 CIRCLED KATAKANA YO
+32f6 CIRCLED KATAKANA RA
+32f7 CIRCLED KATAKANA RI
+32f8 CIRCLED KATAKANA RU
+32f9 CIRCLED KATAKANA RE
+32fa CIRCLED KATAKANA RO
+32fb CIRCLED KATAKANA WA
+32fc CIRCLED KATAKANA WI
+32fd CIRCLED KATAKANA WE
+32fe CIRCLED KATAKANA WO
+3300 SQUARE APAATO
+3301 SQUARE ARUHUA
+3302 SQUARE ANPEA
+3303 SQUARE AARU
+3304 SQUARE ININGU
+3305 SQUARE INTI
+3306 SQUARE UON
+3307 SQUARE ESUKUUDO
+3308 SQUARE EEKAA
+3309 SQUARE ONSU
+330a SQUARE OOMU
+330b SQUARE KAIRI
+330c SQUARE KARATTO
+330d SQUARE KARORII
+330e SQUARE GARON
+330f SQUARE GANMA
+3310 SQUARE GIGA
+3311 SQUARE GINII
+3312 SQUARE KYURII
+3313 SQUARE GIRUDAA
+3314 SQUARE KIRO
+3315 SQUARE KIROGURAMU
+3316 SQUARE KIROMEETORU
+3317 SQUARE KIROWATTO
+3318 SQUARE GURAMU
+3319 SQUARE GURAMUTON
+331a SQUARE KURUZEIRO
+331b SQUARE KUROONE
+331c SQUARE KEESU
+331d SQUARE KORUNA
+331e SQUARE KOOPO
+331f SQUARE SAIKURU
+3320 SQUARE SANTIIMU
+3321 SQUARE SIRINGU
+3322 SQUARE SENTI
+3323 SQUARE SENTO
+3324 SQUARE DAASU
+3325 SQUARE DESI
+3326 SQUARE DORU
+3327 SQUARE TON
+3328 SQUARE NANO
+3329 SQUARE NOTTO
+332a SQUARE HAITU
+332b SQUARE PAASENTO
+332c SQUARE PAATU
+332d SQUARE BAARERU
+332e SQUARE PIASUTORU
+332f SQUARE PIKURU
+3330 SQUARE PIKO
+3331 SQUARE BIRU
+3332 SQUARE HUARADDO
+3333 SQUARE HUIITO
+3334 SQUARE BUSSYERU
+3335 SQUARE HURAN
+3336 SQUARE HEKUTAARU
+3337 SQUARE PESO
+3338 SQUARE PENIHI
+3339 SQUARE HERUTU
+333a SQUARE PENSU
+333b SQUARE PEEZI
+333c SQUARE BEETA
+333d SQUARE POINTO
+333e SQUARE BORUTO
+333f SQUARE HON
+3340 SQUARE PONDO
+3341 SQUARE HOORU
+3342 SQUARE HOON
+3343 SQUARE MAIKURO
+3344 SQUARE MAIRU
+3345 SQUARE MAHHA
+3346 SQUARE MARUKU
+3347 SQUARE MANSYON
+3348 SQUARE MIKURON
+3349 SQUARE MIRI
+334a SQUARE MIRIBAARU
+334b SQUARE MEGA
+334c SQUARE MEGATON
+334d SQUARE MEETORU
+334e SQUARE YAADO
+334f SQUARE YAARU
+3350 SQUARE YUAN
+3351 SQUARE RITTORU
+3352 SQUARE RIRA
+3353 SQUARE RUPII
+3354 SQUARE RUUBURU
+3355 SQUARE REMU
+3356 SQUARE RENTOGEN
+3357 SQUARE WATTO
+3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335a IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335b IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335c IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335d IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335e IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335f IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336a IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336b IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336c IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336d IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336e IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336f IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371 SQUARE HPA
+3372 SQUARE DA
+3373 SQUARE AU
+3374 SQUARE BAR
+3375 SQUARE OV
+3376 SQUARE PC
+337b SQUARE ERA NAME HEISEI
+337c SQUARE ERA NAME SYOUWA
+337d SQUARE ERA NAME TAISYOU
+337e SQUARE ERA NAME MEIZI
+337f SQUARE CORPORATION
+3380 SQUARE PA AMPS
+3381 SQUARE NA
+3382 SQUARE MU A
+3383 SQUARE MA
+3384 SQUARE KA
+3385 SQUARE KB
+3386 SQUARE MB
+3387 SQUARE GB
+3388 SQUARE CAL
+3389 SQUARE KCAL
+338a SQUARE PF
+338b SQUARE NF
+338c SQUARE MU F
+338d SQUARE MU G
+338e SQUARE MG
+338f SQUARE KG
+3390 SQUARE HZ
+3391 SQUARE KHZ
+3392 SQUARE MHZ
+3393 SQUARE GHZ
+3394 SQUARE THZ
+3395 SQUARE MU L
+3396 SQUARE ML
+3397 SQUARE DL
+3398 SQUARE KL
+3399 SQUARE FM
+339a SQUARE NM
+339b SQUARE MU M
+339c SQUARE MM
+339d SQUARE CM
+339e SQUARE KM
+339f SQUARE MM SQUARED
+33a0 SQUARE CM SQUARED
+33a1 SQUARE M SQUARED
+33a2 SQUARE KM SQUARED
+33a3 SQUARE MM CUBED
+33a4 SQUARE CM CUBED
+33a5 SQUARE M CUBED
+33a6 SQUARE KM CUBED
+33a7 SQUARE M OVER S
+33a8 SQUARE M OVER S SQUARED
+33a9 SQUARE PA
+33aa SQUARE KPA
+33ab SQUARE MPA
+33ac SQUARE GPA
+33ad SQUARE RAD
+33ae SQUARE RAD OVER S
+33af SQUARE RAD OVER S SQUARED
+33b0 SQUARE PS
+33b1 SQUARE NS
+33b2 SQUARE MU S
+33b3 SQUARE MS
+33b4 SQUARE PV
+33b5 SQUARE NV
+33b6 SQUARE MU V
+33b7 SQUARE MV
+33b8 SQUARE KV
+33b9 SQUARE MV MEGA
+33ba SQUARE PW
+33bb SQUARE NW
+33bc SQUARE MU W
+33bd SQUARE MW
+33be SQUARE KW
+33bf SQUARE MW MEGA
+33c0 SQUARE K OHM
+33c1 SQUARE M OHM
+33c2 SQUARE AM
+33c3 SQUARE BQ
+33c4 SQUARE CC
+33c5 SQUARE CD
+33c6 SQUARE C OVER KG
+33c7 SQUARE CO
+33c8 SQUARE DB
+33c9 SQUARE GY
+33ca SQUARE HA
+33cb SQUARE HP
+33cc SQUARE IN
+33cd SQUARE KK
+33ce SQUARE KM CAPITAL
+33cf SQUARE KT
+33d0 SQUARE LM
+33d1 SQUARE LN
+33d2 SQUARE LOG
+33d3 SQUARE LX
+33d4 SQUARE MB SMALL
+33d5 SQUARE MIL
+33d6 SQUARE MOL
+33d7 SQUARE PH
+33d8 SQUARE PM
+33d9 SQUARE PPM
+33da SQUARE PR
+33db SQUARE SR
+33dc SQUARE SV
+33dd SQUARE WB
+33e0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33e1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33e2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33e3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33e4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33e5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33e6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33e7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33e8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33e9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33ea IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33eb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33ec IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ed IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33ee IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33ef IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33f0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33f1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33f2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33f3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33f4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33f5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33f6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33f7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33f8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33f9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33fa IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33fb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33fc IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33fd IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33fe IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+3400 4db5 <CJK Ideograph Extension A, First>
+4e00 9fa5 <CJK Ideograph, First>
+a000 YI SYLLABLE IT
+a001 YI SYLLABLE IX
+a002 YI SYLLABLE I
+a003 YI SYLLABLE IP
+a004 YI SYLLABLE IET
+a005 YI SYLLABLE IEX
+a006 YI SYLLABLE IE
+a007 YI SYLLABLE IEP
+a008 YI SYLLABLE AT
+a009 YI SYLLABLE AX
+a00a YI SYLLABLE A
+a00b YI SYLLABLE AP
+a00c YI SYLLABLE UOX
+a00d YI SYLLABLE UO
+a00e YI SYLLABLE UOP
+a00f YI SYLLABLE OT
+a010 YI SYLLABLE OX
+a011 YI SYLLABLE O
+a012 YI SYLLABLE OP
+a013 YI SYLLABLE EX
+a014 YI SYLLABLE E
+a015 YI SYLLABLE WU
+a016 YI SYLLABLE BIT
+a017 YI SYLLABLE BIX
+a018 YI SYLLABLE BI
+a019 YI SYLLABLE BIP
+a01a YI SYLLABLE BIET
+a01b YI SYLLABLE BIEX
+a01c YI SYLLABLE BIE
+a01d YI SYLLABLE BIEP
+a01e YI SYLLABLE BAT
+a01f YI SYLLABLE BAX
+a020 YI SYLLABLE BA
+a021 YI SYLLABLE BAP
+a022 YI SYLLABLE BUOX
+a023 YI SYLLABLE BUO
+a024 YI SYLLABLE BUOP
+a025 YI SYLLABLE BOT
+a026 YI SYLLABLE BOX
+a027 YI SYLLABLE BO
+a028 YI SYLLABLE BOP
+a029 YI SYLLABLE BEX
+a02a YI SYLLABLE BE
+a02b YI SYLLABLE BEP
+a02c YI SYLLABLE BUT
+a02d YI SYLLABLE BUX
+a02e YI SYLLABLE BU
+a02f YI SYLLABLE BUP
+a030 YI SYLLABLE BURX
+a031 YI SYLLABLE BUR
+a032 YI SYLLABLE BYT
+a033 YI SYLLABLE BYX
+a034 YI SYLLABLE BY
+a035 YI SYLLABLE BYP
+a036 YI SYLLABLE BYRX
+a037 YI SYLLABLE BYR
+a038 YI SYLLABLE PIT
+a039 YI SYLLABLE PIX
+a03a YI SYLLABLE PI
+a03b YI SYLLABLE PIP
+a03c YI SYLLABLE PIEX
+a03d YI SYLLABLE PIE
+a03e YI SYLLABLE PIEP
+a03f YI SYLLABLE PAT
+a040 YI SYLLABLE PAX
+a041 YI SYLLABLE PA
+a042 YI SYLLABLE PAP
+a043 YI SYLLABLE PUOX
+a044 YI SYLLABLE PUO
+a045 YI SYLLABLE PUOP
+a046 YI SYLLABLE POT
+a047 YI SYLLABLE POX
+a048 YI SYLLABLE PO
+a049 YI SYLLABLE POP
+a04a YI SYLLABLE PUT
+a04b YI SYLLABLE PUX
+a04c YI SYLLABLE PU
+a04d YI SYLLABLE PUP
+a04e YI SYLLABLE PURX
+a04f YI SYLLABLE PUR
+a050 YI SYLLABLE PYT
+a051 YI SYLLABLE PYX
+a052 YI SYLLABLE PY
+a053 YI SYLLABLE PYP
+a054 YI SYLLABLE PYRX
+a055 YI SYLLABLE PYR
+a056 YI SYLLABLE BBIT
+a057 YI SYLLABLE BBIX
+a058 YI SYLLABLE BBI
+a059 YI SYLLABLE BBIP
+a05a YI SYLLABLE BBIET
+a05b YI SYLLABLE BBIEX
+a05c YI SYLLABLE BBIE
+a05d YI SYLLABLE BBIEP
+a05e YI SYLLABLE BBAT
+a05f YI SYLLABLE BBAX
+a060 YI SYLLABLE BBA
+a061 YI SYLLABLE BBAP
+a062 YI SYLLABLE BBUOX
+a063 YI SYLLABLE BBUO
+a064 YI SYLLABLE BBUOP
+a065 YI SYLLABLE BBOT
+a066 YI SYLLABLE BBOX
+a067 YI SYLLABLE BBO
+a068 YI SYLLABLE BBOP
+a069 YI SYLLABLE BBEX
+a06a YI SYLLABLE BBE
+a06b YI SYLLABLE BBEP
+a06c YI SYLLABLE BBUT
+a06d YI SYLLABLE BBUX
+a06e YI SYLLABLE BBU
+a06f YI SYLLABLE BBUP
+a070 YI SYLLABLE BBURX
+a071 YI SYLLABLE BBUR
+a072 YI SYLLABLE BBYT
+a073 YI SYLLABLE BBYX
+a074 YI SYLLABLE BBY
+a075 YI SYLLABLE BBYP
+a076 YI SYLLABLE NBIT
+a077 YI SYLLABLE NBIX
+a078 YI SYLLABLE NBI
+a079 YI SYLLABLE NBIP
+a07a YI SYLLABLE NBIEX
+a07b YI SYLLABLE NBIE
+a07c YI SYLLABLE NBIEP
+a07d YI SYLLABLE NBAT
+a07e YI SYLLABLE NBAX
+a07f YI SYLLABLE NBA
+a080 YI SYLLABLE NBAP
+a081 YI SYLLABLE NBOT
+a082 YI SYLLABLE NBOX
+a083 YI SYLLABLE NBO
+a084 YI SYLLABLE NBOP
+a085 YI SYLLABLE NBUT
+a086 YI SYLLABLE NBUX
+a087 YI SYLLABLE NBU
+a088 YI SYLLABLE NBUP
+a089 YI SYLLABLE NBURX
+a08a YI SYLLABLE NBUR
+a08b YI SYLLABLE NBYT
+a08c YI SYLLABLE NBYX
+a08d YI SYLLABLE NBY
+a08e YI SYLLABLE NBYP
+a08f YI SYLLABLE NBYRX
+a090 YI SYLLABLE NBYR
+a091 YI SYLLABLE HMIT
+a092 YI SYLLABLE HMIX
+a093 YI SYLLABLE HMI
+a094 YI SYLLABLE HMIP
+a095 YI SYLLABLE HMIEX
+a096 YI SYLLABLE HMIE
+a097 YI SYLLABLE HMIEP
+a098 YI SYLLABLE HMAT
+a099 YI SYLLABLE HMAX
+a09a YI SYLLABLE HMA
+a09b YI SYLLABLE HMAP
+a09c YI SYLLABLE HMUOX
+a09d YI SYLLABLE HMUO
+a09e YI SYLLABLE HMUOP
+a09f YI SYLLABLE HMOT
+a0a0 YI SYLLABLE HMOX
+a0a1 YI SYLLABLE HMO
+a0a2 YI SYLLABLE HMOP
+a0a3 YI SYLLABLE HMUT
+a0a4 YI SYLLABLE HMUX
+a0a5 YI SYLLABLE HMU
+a0a6 YI SYLLABLE HMUP
+a0a7 YI SYLLABLE HMURX
+a0a8 YI SYLLABLE HMUR
+a0a9 YI SYLLABLE HMYX
+a0aa YI SYLLABLE HMY
+a0ab YI SYLLABLE HMYP
+a0ac YI SYLLABLE HMYRX
+a0ad YI SYLLABLE HMYR
+a0ae YI SYLLABLE MIT
+a0af YI SYLLABLE MIX
+a0b0 YI SYLLABLE MI
+a0b1 YI SYLLABLE MIP
+a0b2 YI SYLLABLE MIEX
+a0b3 YI SYLLABLE MIE
+a0b4 YI SYLLABLE MIEP
+a0b5 YI SYLLABLE MAT
+a0b6 YI SYLLABLE MAX
+a0b7 YI SYLLABLE MA
+a0b8 YI SYLLABLE MAP
+a0b9 YI SYLLABLE MUOT
+a0ba YI SYLLABLE MUOX
+a0bb YI SYLLABLE MUO
+a0bc YI SYLLABLE MUOP
+a0bd YI SYLLABLE MOT
+a0be YI SYLLABLE MOX
+a0bf YI SYLLABLE MO
+a0c0 YI SYLLABLE MOP
+a0c1 YI SYLLABLE MEX
+a0c2 YI SYLLABLE ME
+a0c3 YI SYLLABLE MUT
+a0c4 YI SYLLABLE MUX
+a0c5 YI SYLLABLE MU
+a0c6 YI SYLLABLE MUP
+a0c7 YI SYLLABLE MURX
+a0c8 YI SYLLABLE MUR
+a0c9 YI SYLLABLE MYT
+a0ca YI SYLLABLE MYX
+a0cb YI SYLLABLE MY
+a0cc YI SYLLABLE MYP
+a0cd YI SYLLABLE FIT
+a0ce YI SYLLABLE FIX
+a0cf YI SYLLABLE FI
+a0d0 YI SYLLABLE FIP
+a0d1 YI SYLLABLE FAT
+a0d2 YI SYLLABLE FAX
+a0d3 YI SYLLABLE FA
+a0d4 YI SYLLABLE FAP
+a0d5 YI SYLLABLE FOX
+a0d6 YI SYLLABLE FO
+a0d7 YI SYLLABLE FOP
+a0d8 YI SYLLABLE FUT
+a0d9 YI SYLLABLE FUX
+a0da YI SYLLABLE FU
+a0db YI SYLLABLE FUP
+a0dc YI SYLLABLE FURX
+a0dd YI SYLLABLE FUR
+a0de YI SYLLABLE FYT
+a0df YI SYLLABLE FYX
+a0e0 YI SYLLABLE FY
+a0e1 YI SYLLABLE FYP
+a0e2 YI SYLLABLE VIT
+a0e3 YI SYLLABLE VIX
+a0e4 YI SYLLABLE VI
+a0e5 YI SYLLABLE VIP
+a0e6 YI SYLLABLE VIET
+a0e7 YI SYLLABLE VIEX
+a0e8 YI SYLLABLE VIE
+a0e9 YI SYLLABLE VIEP
+a0ea YI SYLLABLE VAT
+a0eb YI SYLLABLE VAX
+a0ec YI SYLLABLE VA
+a0ed YI SYLLABLE VAP
+a0ee YI SYLLABLE VOT
+a0ef YI SYLLABLE VOX
+a0f0 YI SYLLABLE VO
+a0f1 YI SYLLABLE VOP
+a0f2 YI SYLLABLE VEX
+a0f3 YI SYLLABLE VEP
+a0f4 YI SYLLABLE VUT
+a0f5 YI SYLLABLE VUX
+a0f6 YI SYLLABLE VU
+a0f7 YI SYLLABLE VUP
+a0f8 YI SYLLABLE VURX
+a0f9 YI SYLLABLE VUR
+a0fa YI SYLLABLE VYT
+a0fb YI SYLLABLE VYX
+a0fc YI SYLLABLE VY
+a0fd YI SYLLABLE VYP
+a0fe YI SYLLABLE VYRX
+a0ff YI SYLLABLE VYR
+a100 YI SYLLABLE DIT
+a101 YI SYLLABLE DIX
+a102 YI SYLLABLE DI
+a103 YI SYLLABLE DIP
+a104 YI SYLLABLE DIEX
+a105 YI SYLLABLE DIE
+a106 YI SYLLABLE DIEP
+a107 YI SYLLABLE DAT
+a108 YI SYLLABLE DAX
+a109 YI SYLLABLE DA
+a10a YI SYLLABLE DAP
+a10b YI SYLLABLE DUOX
+a10c YI SYLLABLE DUO
+a10d YI SYLLABLE DOT
+a10e YI SYLLABLE DOX
+a10f YI SYLLABLE DO
+a110 YI SYLLABLE DOP
+a111 YI SYLLABLE DEX
+a112 YI SYLLABLE DE
+a113 YI SYLLABLE DEP
+a114 YI SYLLABLE DUT
+a115 YI SYLLABLE DUX
+a116 YI SYLLABLE DU
+a117 YI SYLLABLE DUP
+a118 YI SYLLABLE DURX
+a119 YI SYLLABLE DUR
+a11a YI SYLLABLE TIT
+a11b YI SYLLABLE TIX
+a11c YI SYLLABLE TI
+a11d YI SYLLABLE TIP
+a11e YI SYLLABLE TIEX
+a11f YI SYLLABLE TIE
+a120 YI SYLLABLE TIEP
+a121 YI SYLLABLE TAT
+a122 YI SYLLABLE TAX
+a123 YI SYLLABLE TA
+a124 YI SYLLABLE TAP
+a125 YI SYLLABLE TUOT
+a126 YI SYLLABLE TUOX
+a127 YI SYLLABLE TUO
+a128 YI SYLLABLE TUOP
+a129 YI SYLLABLE TOT
+a12a YI SYLLABLE TOX
+a12b YI SYLLABLE TO
+a12c YI SYLLABLE TOP
+a12d YI SYLLABLE TEX
+a12e YI SYLLABLE TE
+a12f YI SYLLABLE TEP
+a130 YI SYLLABLE TUT
+a131 YI SYLLABLE TUX
+a132 YI SYLLABLE TU
+a133 YI SYLLABLE TUP
+a134 YI SYLLABLE TURX
+a135 YI SYLLABLE TUR
+a136 YI SYLLABLE DDIT
+a137 YI SYLLABLE DDIX
+a138 YI SYLLABLE DDI
+a139 YI SYLLABLE DDIP
+a13a YI SYLLABLE DDIEX
+a13b YI SYLLABLE DDIE
+a13c YI SYLLABLE DDIEP
+a13d YI SYLLABLE DDAT
+a13e YI SYLLABLE DDAX
+a13f YI SYLLABLE DDA
+a140 YI SYLLABLE DDAP
+a141 YI SYLLABLE DDUOX
+a142 YI SYLLABLE DDUO
+a143 YI SYLLABLE DDUOP
+a144 YI SYLLABLE DDOT
+a145 YI SYLLABLE DDOX
+a146 YI SYLLABLE DDO
+a147 YI SYLLABLE DDOP
+a148 YI SYLLABLE DDEX
+a149 YI SYLLABLE DDE
+a14a YI SYLLABLE DDEP
+a14b YI SYLLABLE DDUT
+a14c YI SYLLABLE DDUX
+a14d YI SYLLABLE DDU
+a14e YI SYLLABLE DDUP
+a14f YI SYLLABLE DDURX
+a150 YI SYLLABLE DDUR
+a151 YI SYLLABLE NDIT
+a152 YI SYLLABLE NDIX
+a153 YI SYLLABLE NDI
+a154 YI SYLLABLE NDIP
+a155 YI SYLLABLE NDIEX
+a156 YI SYLLABLE NDIE
+a157 YI SYLLABLE NDAT
+a158 YI SYLLABLE NDAX
+a159 YI SYLLABLE NDA
+a15a YI SYLLABLE NDAP
+a15b YI SYLLABLE NDOT
+a15c YI SYLLABLE NDOX
+a15d YI SYLLABLE NDO
+a15e YI SYLLABLE NDOP
+a15f YI SYLLABLE NDEX
+a160 YI SYLLABLE NDE
+a161 YI SYLLABLE NDEP
+a162 YI SYLLABLE NDUT
+a163 YI SYLLABLE NDUX
+a164 YI SYLLABLE NDU
+a165 YI SYLLABLE NDUP
+a166 YI SYLLABLE NDURX
+a167 YI SYLLABLE NDUR
+a168 YI SYLLABLE HNIT
+a169 YI SYLLABLE HNIX
+a16a YI SYLLABLE HNI
+a16b YI SYLLABLE HNIP
+a16c YI SYLLABLE HNIET
+a16d YI SYLLABLE HNIEX
+a16e YI SYLLABLE HNIE
+a16f YI SYLLABLE HNIEP
+a170 YI SYLLABLE HNAT
+a171 YI SYLLABLE HNAX
+a172 YI SYLLABLE HNA
+a173 YI SYLLABLE HNAP
+a174 YI SYLLABLE HNUOX
+a175 YI SYLLABLE HNUO
+a176 YI SYLLABLE HNOT
+a177 YI SYLLABLE HNOX
+a178 YI SYLLABLE HNOP
+a179 YI SYLLABLE HNEX
+a17a YI SYLLABLE HNE
+a17b YI SYLLABLE HNEP
+a17c YI SYLLABLE HNUT
+a17d YI SYLLABLE NIT
+a17e YI SYLLABLE NIX
+a17f YI SYLLABLE NI
+a180 YI SYLLABLE NIP
+a181 YI SYLLABLE NIEX
+a182 YI SYLLABLE NIE
+a183 YI SYLLABLE NIEP
+a184 YI SYLLABLE NAX
+a185 YI SYLLABLE NA
+a186 YI SYLLABLE NAP
+a187 YI SYLLABLE NUOX
+a188 YI SYLLABLE NUO
+a189 YI SYLLABLE NUOP
+a18a YI SYLLABLE NOT
+a18b YI SYLLABLE NOX
+a18c YI SYLLABLE NO
+a18d YI SYLLABLE NOP
+a18e YI SYLLABLE NEX
+a18f YI SYLLABLE NE
+a190 YI SYLLABLE NEP
+a191 YI SYLLABLE NUT
+a192 YI SYLLABLE NUX
+a193 YI SYLLABLE NU
+a194 YI SYLLABLE NUP
+a195 YI SYLLABLE NURX
+a196 YI SYLLABLE NUR
+a197 YI SYLLABLE HLIT
+a198 YI SYLLABLE HLIX
+a199 YI SYLLABLE HLI
+a19a YI SYLLABLE HLIP
+a19b YI SYLLABLE HLIEX
+a19c YI SYLLABLE HLIE
+a19d YI SYLLABLE HLIEP
+a19e YI SYLLABLE HLAT
+a19f YI SYLLABLE HLAX
+a1a0 YI SYLLABLE HLA
+a1a1 YI SYLLABLE HLAP
+a1a2 YI SYLLABLE HLUOX
+a1a3 YI SYLLABLE HLUO
+a1a4 YI SYLLABLE HLUOP
+a1a5 YI SYLLABLE HLOX
+a1a6 YI SYLLABLE HLO
+a1a7 YI SYLLABLE HLOP
+a1a8 YI SYLLABLE HLEX
+a1a9 YI SYLLABLE HLE
+a1aa YI SYLLABLE HLEP
+a1ab YI SYLLABLE HLUT
+a1ac YI SYLLABLE HLUX
+a1ad YI SYLLABLE HLU
+a1ae YI SYLLABLE HLUP
+a1af YI SYLLABLE HLURX
+a1b0 YI SYLLABLE HLUR
+a1b1 YI SYLLABLE HLYT
+a1b2 YI SYLLABLE HLYX
+a1b3 YI SYLLABLE HLY
+a1b4 YI SYLLABLE HLYP
+a1b5 YI SYLLABLE HLYRX
+a1b6 YI SYLLABLE HLYR
+a1b7 YI SYLLABLE LIT
+a1b8 YI SYLLABLE LIX
+a1b9 YI SYLLABLE LI
+a1ba YI SYLLABLE LIP
+a1bb YI SYLLABLE LIET
+a1bc YI SYLLABLE LIEX
+a1bd YI SYLLABLE LIE
+a1be YI SYLLABLE LIEP
+a1bf YI SYLLABLE LAT
+a1c0 YI SYLLABLE LAX
+a1c1 YI SYLLABLE LA
+a1c2 YI SYLLABLE LAP
+a1c3 YI SYLLABLE LUOT
+a1c4 YI SYLLABLE LUOX
+a1c5 YI SYLLABLE LUO
+a1c6 YI SYLLABLE LUOP
+a1c7 YI SYLLABLE LOT
+a1c8 YI SYLLABLE LOX
+a1c9 YI SYLLABLE LO
+a1ca YI SYLLABLE LOP
+a1cb YI SYLLABLE LEX
+a1cc YI SYLLABLE LE
+a1cd YI SYLLABLE LEP
+a1ce YI SYLLABLE LUT
+a1cf YI SYLLABLE LUX
+a1d0 YI SYLLABLE LU
+a1d1 YI SYLLABLE LUP
+a1d2 YI SYLLABLE LURX
+a1d3 YI SYLLABLE LUR
+a1d4 YI SYLLABLE LYT
+a1d5 YI SYLLABLE LYX
+a1d6 YI SYLLABLE LY
+a1d7 YI SYLLABLE LYP
+a1d8 YI SYLLABLE LYRX
+a1d9 YI SYLLABLE LYR
+a1da YI SYLLABLE GIT
+a1db YI SYLLABLE GIX
+a1dc YI SYLLABLE GI
+a1dd YI SYLLABLE GIP
+a1de YI SYLLABLE GIET
+a1df YI SYLLABLE GIEX
+a1e0 YI SYLLABLE GIE
+a1e1 YI SYLLABLE GIEP
+a1e2 YI SYLLABLE GAT
+a1e3 YI SYLLABLE GAX
+a1e4 YI SYLLABLE GA
+a1e5 YI SYLLABLE GAP
+a1e6 YI SYLLABLE GUOT
+a1e7 YI SYLLABLE GUOX
+a1e8 YI SYLLABLE GUO
+a1e9 YI SYLLABLE GUOP
+a1ea YI SYLLABLE GOT
+a1eb YI SYLLABLE GOX
+a1ec YI SYLLABLE GO
+a1ed YI SYLLABLE GOP
+a1ee YI SYLLABLE GET
+a1ef YI SYLLABLE GEX
+a1f0 YI SYLLABLE GE
+a1f1 YI SYLLABLE GEP
+a1f2 YI SYLLABLE GUT
+a1f3 YI SYLLABLE GUX
+a1f4 YI SYLLABLE GU
+a1f5 YI SYLLABLE GUP
+a1f6 YI SYLLABLE GURX
+a1f7 YI SYLLABLE GUR
+a1f8 YI SYLLABLE KIT
+a1f9 YI SYLLABLE KIX
+a1fa YI SYLLABLE KI
+a1fb YI SYLLABLE KIP
+a1fc YI SYLLABLE KIEX
+a1fd YI SYLLABLE KIE
+a1fe YI SYLLABLE KIEP
+a1ff YI SYLLABLE KAT
+a200 YI SYLLABLE KAX
+a201 YI SYLLABLE KA
+a202 YI SYLLABLE KAP
+a203 YI SYLLABLE KUOX
+a204 YI SYLLABLE KUO
+a205 YI SYLLABLE KUOP
+a206 YI SYLLABLE KOT
+a207 YI SYLLABLE KOX
+a208 YI SYLLABLE KO
+a209 YI SYLLABLE KOP
+a20a YI SYLLABLE KET
+a20b YI SYLLABLE KEX
+a20c YI SYLLABLE KE
+a20d YI SYLLABLE KEP
+a20e YI SYLLABLE KUT
+a20f YI SYLLABLE KUX
+a210 YI SYLLABLE KU
+a211 YI SYLLABLE KUP
+a212 YI SYLLABLE KURX
+a213 YI SYLLABLE KUR
+a214 YI SYLLABLE GGIT
+a215 YI SYLLABLE GGIX
+a216 YI SYLLABLE GGI
+a217 YI SYLLABLE GGIEX
+a218 YI SYLLABLE GGIE
+a219 YI SYLLABLE GGIEP
+a21a YI SYLLABLE GGAT
+a21b YI SYLLABLE GGAX
+a21c YI SYLLABLE GGA
+a21d YI SYLLABLE GGAP
+a21e YI SYLLABLE GGUOT
+a21f YI SYLLABLE GGUOX
+a220 YI SYLLABLE GGUO
+a221 YI SYLLABLE GGUOP
+a222 YI SYLLABLE GGOT
+a223 YI SYLLABLE GGOX
+a224 YI SYLLABLE GGO
+a225 YI SYLLABLE GGOP
+a226 YI SYLLABLE GGET
+a227 YI SYLLABLE GGEX
+a228 YI SYLLABLE GGE
+a229 YI SYLLABLE GGEP
+a22a YI SYLLABLE GGUT
+a22b YI SYLLABLE GGUX
+a22c YI SYLLABLE GGU
+a22d YI SYLLABLE GGUP
+a22e YI SYLLABLE GGURX
+a22f YI SYLLABLE GGUR
+a230 YI SYLLABLE MGIEX
+a231 YI SYLLABLE MGIE
+a232 YI SYLLABLE MGAT
+a233 YI SYLLABLE MGAX
+a234 YI SYLLABLE MGA
+a235 YI SYLLABLE MGAP
+a236 YI SYLLABLE MGUOX
+a237 YI SYLLABLE MGUO
+a238 YI SYLLABLE MGUOP
+a239 YI SYLLABLE MGOT
+a23a YI SYLLABLE MGOX
+a23b YI SYLLABLE MGO
+a23c YI SYLLABLE MGOP
+a23d YI SYLLABLE MGEX
+a23e YI SYLLABLE MGE
+a23f YI SYLLABLE MGEP
+a240 YI SYLLABLE MGUT
+a241 YI SYLLABLE MGUX
+a242 YI SYLLABLE MGU
+a243 YI SYLLABLE MGUP
+a244 YI SYLLABLE MGURX
+a245 YI SYLLABLE MGUR
+a246 YI SYLLABLE HXIT
+a247 YI SYLLABLE HXIX
+a248 YI SYLLABLE HXI
+a249 YI SYLLABLE HXIP
+a24a YI SYLLABLE HXIET
+a24b YI SYLLABLE HXIEX
+a24c YI SYLLABLE HXIE
+a24d YI SYLLABLE HXIEP
+a24e YI SYLLABLE HXAT
+a24f YI SYLLABLE HXAX
+a250 YI SYLLABLE HXA
+a251 YI SYLLABLE HXAP
+a252 YI SYLLABLE HXUOT
+a253 YI SYLLABLE HXUOX
+a254 YI SYLLABLE HXUO
+a255 YI SYLLABLE HXUOP
+a256 YI SYLLABLE HXOT
+a257 YI SYLLABLE HXOX
+a258 YI SYLLABLE HXO
+a259 YI SYLLABLE HXOP
+a25a YI SYLLABLE HXEX
+a25b YI SYLLABLE HXE
+a25c YI SYLLABLE HXEP
+a25d YI SYLLABLE NGIEX
+a25e YI SYLLABLE NGIE
+a25f YI SYLLABLE NGIEP
+a260 YI SYLLABLE NGAT
+a261 YI SYLLABLE NGAX
+a262 YI SYLLABLE NGA
+a263 YI SYLLABLE NGAP
+a264 YI SYLLABLE NGUOT
+a265 YI SYLLABLE NGUOX
+a266 YI SYLLABLE NGUO
+a267 YI SYLLABLE NGOT
+a268 YI SYLLABLE NGOX
+a269 YI SYLLABLE NGO
+a26a YI SYLLABLE NGOP
+a26b YI SYLLABLE NGEX
+a26c YI SYLLABLE NGE
+a26d YI SYLLABLE NGEP
+a26e YI SYLLABLE HIT
+a26f YI SYLLABLE HIEX
+a270 YI SYLLABLE HIE
+a271 YI SYLLABLE HAT
+a272 YI SYLLABLE HAX
+a273 YI SYLLABLE HA
+a274 YI SYLLABLE HAP
+a275 YI SYLLABLE HUOT
+a276 YI SYLLABLE HUOX
+a277 YI SYLLABLE HUO
+a278 YI SYLLABLE HUOP
+a279 YI SYLLABLE HOT
+a27a YI SYLLABLE HOX
+a27b YI SYLLABLE HO
+a27c YI SYLLABLE HOP
+a27d YI SYLLABLE HEX
+a27e YI SYLLABLE HE
+a27f YI SYLLABLE HEP
+a280 YI SYLLABLE WAT
+a281 YI SYLLABLE WAX
+a282 YI SYLLABLE WA
+a283 YI SYLLABLE WAP
+a284 YI SYLLABLE WUOX
+a285 YI SYLLABLE WUO
+a286 YI SYLLABLE WUOP
+a287 YI SYLLABLE WOX
+a288 YI SYLLABLE WO
+a289 YI SYLLABLE WOP
+a28a YI SYLLABLE WEX
+a28b YI SYLLABLE WE
+a28c YI SYLLABLE WEP
+a28d YI SYLLABLE ZIT
+a28e YI SYLLABLE ZIX
+a28f YI SYLLABLE ZI
+a290 YI SYLLABLE ZIP
+a291 YI SYLLABLE ZIEX
+a292 YI SYLLABLE ZIE
+a293 YI SYLLABLE ZIEP
+a294 YI SYLLABLE ZAT
+a295 YI SYLLABLE ZAX
+a296 YI SYLLABLE ZA
+a297 YI SYLLABLE ZAP
+a298 YI SYLLABLE ZUOX
+a299 YI SYLLABLE ZUO
+a29a YI SYLLABLE ZUOP
+a29b YI SYLLABLE ZOT
+a29c YI SYLLABLE ZOX
+a29d YI SYLLABLE ZO
+a29e YI SYLLABLE ZOP
+a29f YI SYLLABLE ZEX
+a2a0 YI SYLLABLE ZE
+a2a1 YI SYLLABLE ZEP
+a2a2 YI SYLLABLE ZUT
+a2a3 YI SYLLABLE ZUX
+a2a4 YI SYLLABLE ZU
+a2a5 YI SYLLABLE ZUP
+a2a6 YI SYLLABLE ZURX
+a2a7 YI SYLLABLE ZUR
+a2a8 YI SYLLABLE ZYT
+a2a9 YI SYLLABLE ZYX
+a2aa YI SYLLABLE ZY
+a2ab YI SYLLABLE ZYP
+a2ac YI SYLLABLE ZYRX
+a2ad YI SYLLABLE ZYR
+a2ae YI SYLLABLE CIT
+a2af YI SYLLABLE CIX
+a2b0 YI SYLLABLE CI
+a2b1 YI SYLLABLE CIP
+a2b2 YI SYLLABLE CIET
+a2b3 YI SYLLABLE CIEX
+a2b4 YI SYLLABLE CIE
+a2b5 YI SYLLABLE CIEP
+a2b6 YI SYLLABLE CAT
+a2b7 YI SYLLABLE CAX
+a2b8 YI SYLLABLE CA
+a2b9 YI SYLLABLE CAP
+a2ba YI SYLLABLE CUOX
+a2bb YI SYLLABLE CUO
+a2bc YI SYLLABLE CUOP
+a2bd YI SYLLABLE COT
+a2be YI SYLLABLE COX
+a2bf YI SYLLABLE CO
+a2c0 YI SYLLABLE COP
+a2c1 YI SYLLABLE CEX
+a2c2 YI SYLLABLE CE
+a2c3 YI SYLLABLE CEP
+a2c4 YI SYLLABLE CUT
+a2c5 YI SYLLABLE CUX
+a2c6 YI SYLLABLE CU
+a2c7 YI SYLLABLE CUP
+a2c8 YI SYLLABLE CURX
+a2c9 YI SYLLABLE CUR
+a2ca YI SYLLABLE CYT
+a2cb YI SYLLABLE CYX
+a2cc YI SYLLABLE CY
+a2cd YI SYLLABLE CYP
+a2ce YI SYLLABLE CYRX
+a2cf YI SYLLABLE CYR
+a2d0 YI SYLLABLE ZZIT
+a2d1 YI SYLLABLE ZZIX
+a2d2 YI SYLLABLE ZZI
+a2d3 YI SYLLABLE ZZIP
+a2d4 YI SYLLABLE ZZIET
+a2d5 YI SYLLABLE ZZIEX
+a2d6 YI SYLLABLE ZZIE
+a2d7 YI SYLLABLE ZZIEP
+a2d8 YI SYLLABLE ZZAT
+a2d9 YI SYLLABLE ZZAX
+a2da YI SYLLABLE ZZA
+a2db YI SYLLABLE ZZAP
+a2dc YI SYLLABLE ZZOX
+a2dd YI SYLLABLE ZZO
+a2de YI SYLLABLE ZZOP
+a2df YI SYLLABLE ZZEX
+a2e0 YI SYLLABLE ZZE
+a2e1 YI SYLLABLE ZZEP
+a2e2 YI SYLLABLE ZZUX
+a2e3 YI SYLLABLE ZZU
+a2e4 YI SYLLABLE ZZUP
+a2e5 YI SYLLABLE ZZURX
+a2e6 YI SYLLABLE ZZUR
+a2e7 YI SYLLABLE ZZYT
+a2e8 YI SYLLABLE ZZYX
+a2e9 YI SYLLABLE ZZY
+a2ea YI SYLLABLE ZZYP
+a2eb YI SYLLABLE ZZYRX
+a2ec YI SYLLABLE ZZYR
+a2ed YI SYLLABLE NZIT
+a2ee YI SYLLABLE NZIX
+a2ef YI SYLLABLE NZI
+a2f0 YI SYLLABLE NZIP
+a2f1 YI SYLLABLE NZIEX
+a2f2 YI SYLLABLE NZIE
+a2f3 YI SYLLABLE NZIEP
+a2f4 YI SYLLABLE NZAT
+a2f5 YI SYLLABLE NZAX
+a2f6 YI SYLLABLE NZA
+a2f7 YI SYLLABLE NZAP
+a2f8 YI SYLLABLE NZUOX
+a2f9 YI SYLLABLE NZUO
+a2fa YI SYLLABLE NZOX
+a2fb YI SYLLABLE NZOP
+a2fc YI SYLLABLE NZEX
+a2fd YI SYLLABLE NZE
+a2fe YI SYLLABLE NZUX
+a2ff YI SYLLABLE NZU
+a300 YI SYLLABLE NZUP
+a301 YI SYLLABLE NZURX
+a302 YI SYLLABLE NZUR
+a303 YI SYLLABLE NZYT
+a304 YI SYLLABLE NZYX
+a305 YI SYLLABLE NZY
+a306 YI SYLLABLE NZYP
+a307 YI SYLLABLE NZYRX
+a308 YI SYLLABLE NZYR
+a309 YI SYLLABLE SIT
+a30a YI SYLLABLE SIX
+a30b YI SYLLABLE SI
+a30c YI SYLLABLE SIP
+a30d YI SYLLABLE SIEX
+a30e YI SYLLABLE SIE
+a30f YI SYLLABLE SIEP
+a310 YI SYLLABLE SAT
+a311 YI SYLLABLE SAX
+a312 YI SYLLABLE SA
+a313 YI SYLLABLE SAP
+a314 YI SYLLABLE SUOX
+a315 YI SYLLABLE SUO
+a316 YI SYLLABLE SUOP
+a317 YI SYLLABLE SOT
+a318 YI SYLLABLE SOX
+a319 YI SYLLABLE SO
+a31a YI SYLLABLE SOP
+a31b YI SYLLABLE SEX
+a31c YI SYLLABLE SE
+a31d YI SYLLABLE SEP
+a31e YI SYLLABLE SUT
+a31f YI SYLLABLE SUX
+a320 YI SYLLABLE SU
+a321 YI SYLLABLE SUP
+a322 YI SYLLABLE SURX
+a323 YI SYLLABLE SUR
+a324 YI SYLLABLE SYT
+a325 YI SYLLABLE SYX
+a326 YI SYLLABLE SY
+a327 YI SYLLABLE SYP
+a328 YI SYLLABLE SYRX
+a329 YI SYLLABLE SYR
+a32a YI SYLLABLE SSIT
+a32b YI SYLLABLE SSIX
+a32c YI SYLLABLE SSI
+a32d YI SYLLABLE SSIP
+a32e YI SYLLABLE SSIEX
+a32f YI SYLLABLE SSIE
+a330 YI SYLLABLE SSIEP
+a331 YI SYLLABLE SSAT
+a332 YI SYLLABLE SSAX
+a333 YI SYLLABLE SSA
+a334 YI SYLLABLE SSAP
+a335 YI SYLLABLE SSOT
+a336 YI SYLLABLE SSOX
+a337 YI SYLLABLE SSO
+a338 YI SYLLABLE SSOP
+a339 YI SYLLABLE SSEX
+a33a YI SYLLABLE SSE
+a33b YI SYLLABLE SSEP
+a33c YI SYLLABLE SSUT
+a33d YI SYLLABLE SSUX
+a33e YI SYLLABLE SSU
+a33f YI SYLLABLE SSUP
+a340 YI SYLLABLE SSYT
+a341 YI SYLLABLE SSYX
+a342 YI SYLLABLE SSY
+a343 YI SYLLABLE SSYP
+a344 YI SYLLABLE SSYRX
+a345 YI SYLLABLE SSYR
+a346 YI SYLLABLE ZHAT
+a347 YI SYLLABLE ZHAX
+a348 YI SYLLABLE ZHA
+a349 YI SYLLABLE ZHAP
+a34a YI SYLLABLE ZHUOX
+a34b YI SYLLABLE ZHUO
+a34c YI SYLLABLE ZHUOP
+a34d YI SYLLABLE ZHOT
+a34e YI SYLLABLE ZHOX
+a34f YI SYLLABLE ZHO
+a350 YI SYLLABLE ZHOP
+a351 YI SYLLABLE ZHET
+a352 YI SYLLABLE ZHEX
+a353 YI SYLLABLE ZHE
+a354 YI SYLLABLE ZHEP
+a355 YI SYLLABLE ZHUT
+a356 YI SYLLABLE ZHUX
+a357 YI SYLLABLE ZHU
+a358 YI SYLLABLE ZHUP
+a359 YI SYLLABLE ZHURX
+a35a YI SYLLABLE ZHUR
+a35b YI SYLLABLE ZHYT
+a35c YI SYLLABLE ZHYX
+a35d YI SYLLABLE ZHY
+a35e YI SYLLABLE ZHYP
+a35f YI SYLLABLE ZHYRX
+a360 YI SYLLABLE ZHYR
+a361 YI SYLLABLE CHAT
+a362 YI SYLLABLE CHAX
+a363 YI SYLLABLE CHA
+a364 YI SYLLABLE CHAP
+a365 YI SYLLABLE CHUOT
+a366 YI SYLLABLE CHUOX
+a367 YI SYLLABLE CHUO
+a368 YI SYLLABLE CHUOP
+a369 YI SYLLABLE CHOT
+a36a YI SYLLABLE CHOX
+a36b YI SYLLABLE CHO
+a36c YI SYLLABLE CHOP
+a36d YI SYLLABLE CHET
+a36e YI SYLLABLE CHEX
+a36f YI SYLLABLE CHE
+a370 YI SYLLABLE CHEP
+a371 YI SYLLABLE CHUX
+a372 YI SYLLABLE CHU
+a373 YI SYLLABLE CHUP
+a374 YI SYLLABLE CHURX
+a375 YI SYLLABLE CHUR
+a376 YI SYLLABLE CHYT
+a377 YI SYLLABLE CHYX
+a378 YI SYLLABLE CHY
+a379 YI SYLLABLE CHYP
+a37a YI SYLLABLE CHYRX
+a37b YI SYLLABLE CHYR
+a37c YI SYLLABLE RRAX
+a37d YI SYLLABLE RRA
+a37e YI SYLLABLE RRUOX
+a37f YI SYLLABLE RRUO
+a380 YI SYLLABLE RROT
+a381 YI SYLLABLE RROX
+a382 YI SYLLABLE RRO
+a383 YI SYLLABLE RROP
+a384 YI SYLLABLE RRET
+a385 YI SYLLABLE RREX
+a386 YI SYLLABLE RRE
+a387 YI SYLLABLE RREP
+a388 YI SYLLABLE RRUT
+a389 YI SYLLABLE RRUX
+a38a YI SYLLABLE RRU
+a38b YI SYLLABLE RRUP
+a38c YI SYLLABLE RRURX
+a38d YI SYLLABLE RRUR
+a38e YI SYLLABLE RRYT
+a38f YI SYLLABLE RRYX
+a390 YI SYLLABLE RRY
+a391 YI SYLLABLE RRYP
+a392 YI SYLLABLE RRYRX
+a393 YI SYLLABLE RRYR
+a394 YI SYLLABLE NRAT
+a395 YI SYLLABLE NRAX
+a396 YI SYLLABLE NRA
+a397 YI SYLLABLE NRAP
+a398 YI SYLLABLE NROX
+a399 YI SYLLABLE NRO
+a39a YI SYLLABLE NROP
+a39b YI SYLLABLE NRET
+a39c YI SYLLABLE NREX
+a39d YI SYLLABLE NRE
+a39e YI SYLLABLE NREP
+a39f YI SYLLABLE NRUT
+a3a0 YI SYLLABLE NRUX
+a3a1 YI SYLLABLE NRU
+a3a2 YI SYLLABLE NRUP
+a3a3 YI SYLLABLE NRURX
+a3a4 YI SYLLABLE NRUR
+a3a5 YI SYLLABLE NRYT
+a3a6 YI SYLLABLE NRYX
+a3a7 YI SYLLABLE NRY
+a3a8 YI SYLLABLE NRYP
+a3a9 YI SYLLABLE NRYRX
+a3aa YI SYLLABLE NRYR
+a3ab YI SYLLABLE SHAT
+a3ac YI SYLLABLE SHAX
+a3ad YI SYLLABLE SHA
+a3ae YI SYLLABLE SHAP
+a3af YI SYLLABLE SHUOX
+a3b0 YI SYLLABLE SHUO
+a3b1 YI SYLLABLE SHUOP
+a3b2 YI SYLLABLE SHOT
+a3b3 YI SYLLABLE SHOX
+a3b4 YI SYLLABLE SHO
+a3b5 YI SYLLABLE SHOP
+a3b6 YI SYLLABLE SHET
+a3b7 YI SYLLABLE SHEX
+a3b8 YI SYLLABLE SHE
+a3b9 YI SYLLABLE SHEP
+a3ba YI SYLLABLE SHUT
+a3bb YI SYLLABLE SHUX
+a3bc YI SYLLABLE SHU
+a3bd YI SYLLABLE SHUP
+a3be YI SYLLABLE SHURX
+a3bf YI SYLLABLE SHUR
+a3c0 YI SYLLABLE SHYT
+a3c1 YI SYLLABLE SHYX
+a3c2 YI SYLLABLE SHY
+a3c3 YI SYLLABLE SHYP
+a3c4 YI SYLLABLE SHYRX
+a3c5 YI SYLLABLE SHYR
+a3c6 YI SYLLABLE RAT
+a3c7 YI SYLLABLE RAX
+a3c8 YI SYLLABLE RA
+a3c9 YI SYLLABLE RAP
+a3ca YI SYLLABLE RUOX
+a3cb YI SYLLABLE RUO
+a3cc YI SYLLABLE RUOP
+a3cd YI SYLLABLE ROT
+a3ce YI SYLLABLE ROX
+a3cf YI SYLLABLE RO
+a3d0 YI SYLLABLE ROP
+a3d1 YI SYLLABLE REX
+a3d2 YI SYLLABLE RE
+a3d3 YI SYLLABLE REP
+a3d4 YI SYLLABLE RUT
+a3d5 YI SYLLABLE RUX
+a3d6 YI SYLLABLE RU
+a3d7 YI SYLLABLE RUP
+a3d8 YI SYLLABLE RURX
+a3d9 YI SYLLABLE RUR
+a3da YI SYLLABLE RYT
+a3db YI SYLLABLE RYX
+a3dc YI SYLLABLE RY
+a3dd YI SYLLABLE RYP
+a3de YI SYLLABLE RYRX
+a3df YI SYLLABLE RYR
+a3e0 YI SYLLABLE JIT
+a3e1 YI SYLLABLE JIX
+a3e2 YI SYLLABLE JI
+a3e3 YI SYLLABLE JIP
+a3e4 YI SYLLABLE JIET
+a3e5 YI SYLLABLE JIEX
+a3e6 YI SYLLABLE JIE
+a3e7 YI SYLLABLE JIEP
+a3e8 YI SYLLABLE JUOT
+a3e9 YI SYLLABLE JUOX
+a3ea YI SYLLABLE JUO
+a3eb YI SYLLABLE JUOP
+a3ec YI SYLLABLE JOT
+a3ed YI SYLLABLE JOX
+a3ee YI SYLLABLE JO
+a3ef YI SYLLABLE JOP
+a3f0 YI SYLLABLE JUT
+a3f1 YI SYLLABLE JUX
+a3f2 YI SYLLABLE JU
+a3f3 YI SYLLABLE JUP
+a3f4 YI SYLLABLE JURX
+a3f5 YI SYLLABLE JUR
+a3f6 YI SYLLABLE JYT
+a3f7 YI SYLLABLE JYX
+a3f8 YI SYLLABLE JY
+a3f9 YI SYLLABLE JYP
+a3fa YI SYLLABLE JYRX
+a3fb YI SYLLABLE JYR
+a3fc YI SYLLABLE QIT
+a3fd YI SYLLABLE QIX
+a3fe YI SYLLABLE QI
+a3ff YI SYLLABLE QIP
+a400 YI SYLLABLE QIET
+a401 YI SYLLABLE QIEX
+a402 YI SYLLABLE QIE
+a403 YI SYLLABLE QIEP
+a404 YI SYLLABLE QUOT
+a405 YI SYLLABLE QUOX
+a406 YI SYLLABLE QUO
+a407 YI SYLLABLE QUOP
+a408 YI SYLLABLE QOT
+a409 YI SYLLABLE QOX
+a40a YI SYLLABLE QO
+a40b YI SYLLABLE QOP
+a40c YI SYLLABLE QUT
+a40d YI SYLLABLE QUX
+a40e YI SYLLABLE QU
+a40f YI SYLLABLE QUP
+a410 YI SYLLABLE QURX
+a411 YI SYLLABLE QUR
+a412 YI SYLLABLE QYT
+a413 YI SYLLABLE QYX
+a414 YI SYLLABLE QY
+a415 YI SYLLABLE QYP
+a416 YI SYLLABLE QYRX
+a417 YI SYLLABLE QYR
+a418 YI SYLLABLE JJIT
+a419 YI SYLLABLE JJIX
+a41a YI SYLLABLE JJI
+a41b YI SYLLABLE JJIP
+a41c YI SYLLABLE JJIET
+a41d YI SYLLABLE JJIEX
+a41e YI SYLLABLE JJIE
+a41f YI SYLLABLE JJIEP
+a420 YI SYLLABLE JJUOX
+a421 YI SYLLABLE JJUO
+a422 YI SYLLABLE JJUOP
+a423 YI SYLLABLE JJOT
+a424 YI SYLLABLE JJOX
+a425 YI SYLLABLE JJO
+a426 YI SYLLABLE JJOP
+a427 YI SYLLABLE JJUT
+a428 YI SYLLABLE JJUX
+a429 YI SYLLABLE JJU
+a42a YI SYLLABLE JJUP
+a42b YI SYLLABLE JJURX
+a42c YI SYLLABLE JJUR
+a42d YI SYLLABLE JJYT
+a42e YI SYLLABLE JJYX
+a42f YI SYLLABLE JJY
+a430 YI SYLLABLE JJYP
+a431 YI SYLLABLE NJIT
+a432 YI SYLLABLE NJIX
+a433 YI SYLLABLE NJI
+a434 YI SYLLABLE NJIP
+a435 YI SYLLABLE NJIET
+a436 YI SYLLABLE NJIEX
+a437 YI SYLLABLE NJIE
+a438 YI SYLLABLE NJIEP
+a439 YI SYLLABLE NJUOX
+a43a YI SYLLABLE NJUO
+a43b YI SYLLABLE NJOT
+a43c YI SYLLABLE NJOX
+a43d YI SYLLABLE NJO
+a43e YI SYLLABLE NJOP
+a43f YI SYLLABLE NJUX
+a440 YI SYLLABLE NJU
+a441 YI SYLLABLE NJUP
+a442 YI SYLLABLE NJURX
+a443 YI SYLLABLE NJUR
+a444 YI SYLLABLE NJYT
+a445 YI SYLLABLE NJYX
+a446 YI SYLLABLE NJY
+a447 YI SYLLABLE NJYP
+a448 YI SYLLABLE NJYRX
+a449 YI SYLLABLE NJYR
+a44a YI SYLLABLE NYIT
+a44b YI SYLLABLE NYIX
+a44c YI SYLLABLE NYI
+a44d YI SYLLABLE NYIP
+a44e YI SYLLABLE NYIET
+a44f YI SYLLABLE NYIEX
+a450 YI SYLLABLE NYIE
+a451 YI SYLLABLE NYIEP
+a452 YI SYLLABLE NYUOX
+a453 YI SYLLABLE NYUO
+a454 YI SYLLABLE NYUOP
+a455 YI SYLLABLE NYOT
+a456 YI SYLLABLE NYOX
+a457 YI SYLLABLE NYO
+a458 YI SYLLABLE NYOP
+a459 YI SYLLABLE NYUT
+a45a YI SYLLABLE NYUX
+a45b YI SYLLABLE NYU
+a45c YI SYLLABLE NYUP
+a45d YI SYLLABLE XIT
+a45e YI SYLLABLE XIX
+a45f YI SYLLABLE XI
+a460 YI SYLLABLE XIP
+a461 YI SYLLABLE XIET
+a462 YI SYLLABLE XIEX
+a463 YI SYLLABLE XIE
+a464 YI SYLLABLE XIEP
+a465 YI SYLLABLE XUOX
+a466 YI SYLLABLE XUO
+a467 YI SYLLABLE XOT
+a468 YI SYLLABLE XOX
+a469 YI SYLLABLE XO
+a46a YI SYLLABLE XOP
+a46b YI SYLLABLE XYT
+a46c YI SYLLABLE XYX
+a46d YI SYLLABLE XY
+a46e YI SYLLABLE XYP
+a46f YI SYLLABLE XYRX
+a470 YI SYLLABLE XYR
+a471 YI SYLLABLE YIT
+a472 YI SYLLABLE YIX
+a473 YI SYLLABLE YI
+a474 YI SYLLABLE YIP
+a475 YI SYLLABLE YIET
+a476 YI SYLLABLE YIEX
+a477 YI SYLLABLE YIE
+a478 YI SYLLABLE YIEP
+a479 YI SYLLABLE YUOT
+a47a YI SYLLABLE YUOX
+a47b YI SYLLABLE YUO
+a47c YI SYLLABLE YUOP
+a47d YI SYLLABLE YOT
+a47e YI SYLLABLE YOX
+a47f YI SYLLABLE YO
+a480 YI SYLLABLE YOP
+a481 YI SYLLABLE YUT
+a482 YI SYLLABLE YUX
+a483 YI SYLLABLE YU
+a484 YI SYLLABLE YUP
+a485 YI SYLLABLE YURX
+a486 YI SYLLABLE YUR
+a487 YI SYLLABLE YYT
+a488 YI SYLLABLE YYX
+a489 YI SYLLABLE YY
+a48a YI SYLLABLE YYP
+a48b YI SYLLABLE YYRX
+a48c YI SYLLABLE YYR
+a490 YI RADICAL QOT
+a491 YI RADICAL LI
+a492 YI RADICAL KIT
+a493 YI RADICAL NYIP
+a494 YI RADICAL CYP
+a495 YI RADICAL SSI
+a496 YI RADICAL GGOP
+a497 YI RADICAL GEP
+a498 YI RADICAL MI
+a499 YI RADICAL HXIT
+a49a YI RADICAL LYR
+a49b YI RADICAL BBUT
+a49c YI RADICAL MOP
+a49d YI RADICAL YO
+a49e YI RADICAL PUT
+a49f YI RADICAL HXUO
+a4a0 YI RADICAL TAT
+a4a1 YI RADICAL GA
+a4a4 YI RADICAL DDUR
+a4a5 YI RADICAL BUR
+a4a6 YI RADICAL GGUO
+a4a7 YI RADICAL NYOP
+a4a8 YI RADICAL TU
+a4a9 YI RADICAL OP
+a4aa YI RADICAL JJUT
+a4ab YI RADICAL ZOT
+a4ac YI RADICAL PYT
+a4ad YI RADICAL HMO
+a4ae YI RADICAL YIT
+a4af YI RADICAL VUR
+a4b0 YI RADICAL SHY
+a4b1 YI RADICAL VEP
+a4b2 YI RADICAL ZA
+a4b3 YI RADICAL JO
+a4b5 YI RADICAL JJY
+a4b6 YI RADICAL GOT
+a4b7 YI RADICAL JJIE
+a4b8 YI RADICAL WO
+a4b9 YI RADICAL DU
+a4ba YI RADICAL SHUR
+a4bb YI RADICAL LIE
+a4bc YI RADICAL CY
+a4bd YI RADICAL CUOP
+a4be YI RADICAL CIP
+a4bf YI RADICAL HXOP
+a4c0 YI RADICAL SHAT
+a4c2 YI RADICAL SHOP
+a4c3 YI RADICAL CHE
+a4c4 YI RADICAL ZZIET
+a4c6 YI RADICAL KE
+ac00 d7a3 <Hangul Syllable, First>
+d800 db7f <Non Private Use High Surrogate, First>
+db80 dbff <Private Use High Surrogate, First>
+dc00 dfff <Low Surrogate, First>
+e000 f8ff <Private Use, First>
+f900 CJK COMPATIBILITY IDEOGRAPH-F900
+f901 CJK COMPATIBILITY IDEOGRAPH-F901
+f902 CJK COMPATIBILITY IDEOGRAPH-F902
+f903 CJK COMPATIBILITY IDEOGRAPH-F903
+f904 CJK COMPATIBILITY IDEOGRAPH-F904
+f905 CJK COMPATIBILITY IDEOGRAPH-F905
+f906 CJK COMPATIBILITY IDEOGRAPH-F906
+f907 CJK COMPATIBILITY IDEOGRAPH-F907
+f908 CJK COMPATIBILITY IDEOGRAPH-F908
+f909 CJK COMPATIBILITY IDEOGRAPH-F909
+f90a CJK COMPATIBILITY IDEOGRAPH-F90A
+f90b CJK COMPATIBILITY IDEOGRAPH-F90B
+f90c CJK COMPATIBILITY IDEOGRAPH-F90C
+f90d CJK COMPATIBILITY IDEOGRAPH-F90D
+f90e CJK COMPATIBILITY IDEOGRAPH-F90E
+f90f CJK COMPATIBILITY IDEOGRAPH-F90F
+f910 CJK COMPATIBILITY IDEOGRAPH-F910
+f911 CJK COMPATIBILITY IDEOGRAPH-F911
+f912 CJK COMPATIBILITY IDEOGRAPH-F912
+f913 CJK COMPATIBILITY IDEOGRAPH-F913
+f914 CJK COMPATIBILITY IDEOGRAPH-F914
+f915 CJK COMPATIBILITY IDEOGRAPH-F915
+f916 CJK COMPATIBILITY IDEOGRAPH-F916
+f917 CJK COMPATIBILITY IDEOGRAPH-F917
+f918 CJK COMPATIBILITY IDEOGRAPH-F918
+f919 CJK COMPATIBILITY IDEOGRAPH-F919
+f91a CJK COMPATIBILITY IDEOGRAPH-F91A
+f91b CJK COMPATIBILITY IDEOGRAPH-F91B
+f91c CJK COMPATIBILITY IDEOGRAPH-F91C
+f91d CJK COMPATIBILITY IDEOGRAPH-F91D
+f91e CJK COMPATIBILITY IDEOGRAPH-F91E
+f91f CJK COMPATIBILITY IDEOGRAPH-F91F
+f920 CJK COMPATIBILITY IDEOGRAPH-F920
+f921 CJK COMPATIBILITY IDEOGRAPH-F921
+f922 CJK COMPATIBILITY IDEOGRAPH-F922
+f923 CJK COMPATIBILITY IDEOGRAPH-F923
+f924 CJK COMPATIBILITY IDEOGRAPH-F924
+f925 CJK COMPATIBILITY IDEOGRAPH-F925
+f926 CJK COMPATIBILITY IDEOGRAPH-F926
+f927 CJK COMPATIBILITY IDEOGRAPH-F927
+f928 CJK COMPATIBILITY IDEOGRAPH-F928
+f929 CJK COMPATIBILITY IDEOGRAPH-F929
+f92a CJK COMPATIBILITY IDEOGRAPH-F92A
+f92b CJK COMPATIBILITY IDEOGRAPH-F92B
+f92c CJK COMPATIBILITY IDEOGRAPH-F92C
+f92d CJK COMPATIBILITY IDEOGRAPH-F92D
+f92e CJK COMPATIBILITY IDEOGRAPH-F92E
+f92f CJK COMPATIBILITY IDEOGRAPH-F92F
+f930 CJK COMPATIBILITY IDEOGRAPH-F930
+f931 CJK COMPATIBILITY IDEOGRAPH-F931
+f932 CJK COMPATIBILITY IDEOGRAPH-F932
+f933 CJK COMPATIBILITY IDEOGRAPH-F933
+f934 CJK COMPATIBILITY IDEOGRAPH-F934
+f935 CJK COMPATIBILITY IDEOGRAPH-F935
+f936 CJK COMPATIBILITY IDEOGRAPH-F936
+f937 CJK COMPATIBILITY IDEOGRAPH-F937
+f938 CJK COMPATIBILITY IDEOGRAPH-F938
+f939 CJK COMPATIBILITY IDEOGRAPH-F939
+f93a CJK COMPATIBILITY IDEOGRAPH-F93A
+f93b CJK COMPATIBILITY IDEOGRAPH-F93B
+f93c CJK COMPATIBILITY IDEOGRAPH-F93C
+f93d CJK COMPATIBILITY IDEOGRAPH-F93D
+f93e CJK COMPATIBILITY IDEOGRAPH-F93E
+f93f CJK COMPATIBILITY IDEOGRAPH-F93F
+f940 CJK COMPATIBILITY IDEOGRAPH-F940
+f941 CJK COMPATIBILITY IDEOGRAPH-F941
+f942 CJK COMPATIBILITY IDEOGRAPH-F942
+f943 CJK COMPATIBILITY IDEOGRAPH-F943
+f944 CJK COMPATIBILITY IDEOGRAPH-F944
+f945 CJK COMPATIBILITY IDEOGRAPH-F945
+f946 CJK COMPATIBILITY IDEOGRAPH-F946
+f947 CJK COMPATIBILITY IDEOGRAPH-F947
+f948 CJK COMPATIBILITY IDEOGRAPH-F948
+f949 CJK COMPATIBILITY IDEOGRAPH-F949
+f94a CJK COMPATIBILITY IDEOGRAPH-F94A
+f94b CJK COMPATIBILITY IDEOGRAPH-F94B
+f94c CJK COMPATIBILITY IDEOGRAPH-F94C
+f94d CJK COMPATIBILITY IDEOGRAPH-F94D
+f94e CJK COMPATIBILITY IDEOGRAPH-F94E
+f94f CJK COMPATIBILITY IDEOGRAPH-F94F
+f950 CJK COMPATIBILITY IDEOGRAPH-F950
+f951 CJK COMPATIBILITY IDEOGRAPH-F951
+f952 CJK COMPATIBILITY IDEOGRAPH-F952
+f953 CJK COMPATIBILITY IDEOGRAPH-F953
+f954 CJK COMPATIBILITY IDEOGRAPH-F954
+f955 CJK COMPATIBILITY IDEOGRAPH-F955
+f956 CJK COMPATIBILITY IDEOGRAPH-F956
+f957 CJK COMPATIBILITY IDEOGRAPH-F957
+f958 CJK COMPATIBILITY IDEOGRAPH-F958
+f959 CJK COMPATIBILITY IDEOGRAPH-F959
+f95a CJK COMPATIBILITY IDEOGRAPH-F95A
+f95b CJK COMPATIBILITY IDEOGRAPH-F95B
+f95c CJK COMPATIBILITY IDEOGRAPH-F95C
+f95d CJK COMPATIBILITY IDEOGRAPH-F95D
+f95e CJK COMPATIBILITY IDEOGRAPH-F95E
+f95f CJK COMPATIBILITY IDEOGRAPH-F95F
+f960 CJK COMPATIBILITY IDEOGRAPH-F960
+f961 CJK COMPATIBILITY IDEOGRAPH-F961
+f962 CJK COMPATIBILITY IDEOGRAPH-F962
+f963 CJK COMPATIBILITY IDEOGRAPH-F963
+f964 CJK COMPATIBILITY IDEOGRAPH-F964
+f965 CJK COMPATIBILITY IDEOGRAPH-F965
+f966 CJK COMPATIBILITY IDEOGRAPH-F966
+f967 CJK COMPATIBILITY IDEOGRAPH-F967
+f968 CJK COMPATIBILITY IDEOGRAPH-F968
+f969 CJK COMPATIBILITY IDEOGRAPH-F969
+f96a CJK COMPATIBILITY IDEOGRAPH-F96A
+f96b CJK COMPATIBILITY IDEOGRAPH-F96B
+f96c CJK COMPATIBILITY IDEOGRAPH-F96C
+f96d CJK COMPATIBILITY IDEOGRAPH-F96D
+f96e CJK COMPATIBILITY IDEOGRAPH-F96E
+f96f CJK COMPATIBILITY IDEOGRAPH-F96F
+f970 CJK COMPATIBILITY IDEOGRAPH-F970
+f971 CJK COMPATIBILITY IDEOGRAPH-F971
+f972 CJK COMPATIBILITY IDEOGRAPH-F972
+f973 CJK COMPATIBILITY IDEOGRAPH-F973
+f974 CJK COMPATIBILITY IDEOGRAPH-F974
+f975 CJK COMPATIBILITY IDEOGRAPH-F975
+f976 CJK COMPATIBILITY IDEOGRAPH-F976
+f977 CJK COMPATIBILITY IDEOGRAPH-F977
+f978 CJK COMPATIBILITY IDEOGRAPH-F978
+f979 CJK COMPATIBILITY IDEOGRAPH-F979
+f97a CJK COMPATIBILITY IDEOGRAPH-F97A
+f97b CJK COMPATIBILITY IDEOGRAPH-F97B
+f97c CJK COMPATIBILITY IDEOGRAPH-F97C
+f97d CJK COMPATIBILITY IDEOGRAPH-F97D
+f97e CJK COMPATIBILITY IDEOGRAPH-F97E
+f97f CJK COMPATIBILITY IDEOGRAPH-F97F
+f980 CJK COMPATIBILITY IDEOGRAPH-F980
+f981 CJK COMPATIBILITY IDEOGRAPH-F981
+f982 CJK COMPATIBILITY IDEOGRAPH-F982
+f983 CJK COMPATIBILITY IDEOGRAPH-F983
+f984 CJK COMPATIBILITY IDEOGRAPH-F984
+f985 CJK COMPATIBILITY IDEOGRAPH-F985
+f986 CJK COMPATIBILITY IDEOGRAPH-F986
+f987 CJK COMPATIBILITY IDEOGRAPH-F987
+f988 CJK COMPATIBILITY IDEOGRAPH-F988
+f989 CJK COMPATIBILITY IDEOGRAPH-F989
+f98a CJK COMPATIBILITY IDEOGRAPH-F98A
+f98b CJK COMPATIBILITY IDEOGRAPH-F98B
+f98c CJK COMPATIBILITY IDEOGRAPH-F98C
+f98d CJK COMPATIBILITY IDEOGRAPH-F98D
+f98e CJK COMPATIBILITY IDEOGRAPH-F98E
+f98f CJK COMPATIBILITY IDEOGRAPH-F98F
+f990 CJK COMPATIBILITY IDEOGRAPH-F990
+f991 CJK COMPATIBILITY IDEOGRAPH-F991
+f992 CJK COMPATIBILITY IDEOGRAPH-F992
+f993 CJK COMPATIBILITY IDEOGRAPH-F993
+f994 CJK COMPATIBILITY IDEOGRAPH-F994
+f995 CJK COMPATIBILITY IDEOGRAPH-F995
+f996 CJK COMPATIBILITY IDEOGRAPH-F996
+f997 CJK COMPATIBILITY IDEOGRAPH-F997
+f998 CJK COMPATIBILITY IDEOGRAPH-F998
+f999 CJK COMPATIBILITY IDEOGRAPH-F999
+f99a CJK COMPATIBILITY IDEOGRAPH-F99A
+f99b CJK COMPATIBILITY IDEOGRAPH-F99B
+f99c CJK COMPATIBILITY IDEOGRAPH-F99C
+f99d CJK COMPATIBILITY IDEOGRAPH-F99D
+f99e CJK COMPATIBILITY IDEOGRAPH-F99E
+f99f CJK COMPATIBILITY IDEOGRAPH-F99F
+f9a0 CJK COMPATIBILITY IDEOGRAPH-F9A0
+f9a1 CJK COMPATIBILITY IDEOGRAPH-F9A1
+f9a2 CJK COMPATIBILITY IDEOGRAPH-F9A2
+f9a3 CJK COMPATIBILITY IDEOGRAPH-F9A3
+f9a4 CJK COMPATIBILITY IDEOGRAPH-F9A4
+f9a5 CJK COMPATIBILITY IDEOGRAPH-F9A5
+f9a6 CJK COMPATIBILITY IDEOGRAPH-F9A6
+f9a7 CJK COMPATIBILITY IDEOGRAPH-F9A7
+f9a8 CJK COMPATIBILITY IDEOGRAPH-F9A8
+f9a9 CJK COMPATIBILITY IDEOGRAPH-F9A9
+f9aa CJK COMPATIBILITY IDEOGRAPH-F9AA
+f9ab CJK COMPATIBILITY IDEOGRAPH-F9AB
+f9ac CJK COMPATIBILITY IDEOGRAPH-F9AC
+f9ad CJK COMPATIBILITY IDEOGRAPH-F9AD
+f9ae CJK COMPATIBILITY IDEOGRAPH-F9AE
+f9af CJK COMPATIBILITY IDEOGRAPH-F9AF
+f9b0 CJK COMPATIBILITY IDEOGRAPH-F9B0
+f9b1 CJK COMPATIBILITY IDEOGRAPH-F9B1
+f9b2 CJK COMPATIBILITY IDEOGRAPH-F9B2
+f9b3 CJK COMPATIBILITY IDEOGRAPH-F9B3
+f9b4 CJK COMPATIBILITY IDEOGRAPH-F9B4
+f9b5 CJK COMPATIBILITY IDEOGRAPH-F9B5
+f9b6 CJK COMPATIBILITY IDEOGRAPH-F9B6
+f9b7 CJK COMPATIBILITY IDEOGRAPH-F9B7
+f9b8 CJK COMPATIBILITY IDEOGRAPH-F9B8
+f9b9 CJK COMPATIBILITY IDEOGRAPH-F9B9
+f9ba CJK COMPATIBILITY IDEOGRAPH-F9BA
+f9bb CJK COMPATIBILITY IDEOGRAPH-F9BB
+f9bc CJK COMPATIBILITY IDEOGRAPH-F9BC
+f9bd CJK COMPATIBILITY IDEOGRAPH-F9BD
+f9be CJK COMPATIBILITY IDEOGRAPH-F9BE
+f9bf CJK COMPATIBILITY IDEOGRAPH-F9BF
+f9c0 CJK COMPATIBILITY IDEOGRAPH-F9C0
+f9c1 CJK COMPATIBILITY IDEOGRAPH-F9C1
+f9c2 CJK COMPATIBILITY IDEOGRAPH-F9C2
+f9c3 CJK COMPATIBILITY IDEOGRAPH-F9C3
+f9c4 CJK COMPATIBILITY IDEOGRAPH-F9C4
+f9c5 CJK COMPATIBILITY IDEOGRAPH-F9C5
+f9c6 CJK COMPATIBILITY IDEOGRAPH-F9C6
+f9c7 CJK COMPATIBILITY IDEOGRAPH-F9C7
+f9c8 CJK COMPATIBILITY IDEOGRAPH-F9C8
+f9c9 CJK COMPATIBILITY IDEOGRAPH-F9C9
+f9ca CJK COMPATIBILITY IDEOGRAPH-F9CA
+f9cb CJK COMPATIBILITY IDEOGRAPH-F9CB
+f9cc CJK COMPATIBILITY IDEOGRAPH-F9CC
+f9cd CJK COMPATIBILITY IDEOGRAPH-F9CD
+f9ce CJK COMPATIBILITY IDEOGRAPH-F9CE
+f9cf CJK COMPATIBILITY IDEOGRAPH-F9CF
+f9d0 CJK COMPATIBILITY IDEOGRAPH-F9D0
+f9d1 CJK COMPATIBILITY IDEOGRAPH-F9D1
+f9d2 CJK COMPATIBILITY IDEOGRAPH-F9D2
+f9d3 CJK COMPATIBILITY IDEOGRAPH-F9D3
+f9d4 CJK COMPATIBILITY IDEOGRAPH-F9D4
+f9d5 CJK COMPATIBILITY IDEOGRAPH-F9D5
+f9d6 CJK COMPATIBILITY IDEOGRAPH-F9D6
+f9d7 CJK COMPATIBILITY IDEOGRAPH-F9D7
+f9d8 CJK COMPATIBILITY IDEOGRAPH-F9D8
+f9d9 CJK COMPATIBILITY IDEOGRAPH-F9D9
+f9da CJK COMPATIBILITY IDEOGRAPH-F9DA
+f9db CJK COMPATIBILITY IDEOGRAPH-F9DB
+f9dc CJK COMPATIBILITY IDEOGRAPH-F9DC
+f9dd CJK COMPATIBILITY IDEOGRAPH-F9DD
+f9de CJK COMPATIBILITY IDEOGRAPH-F9DE
+f9df CJK COMPATIBILITY IDEOGRAPH-F9DF
+f9e0 CJK COMPATIBILITY IDEOGRAPH-F9E0
+f9e1 CJK COMPATIBILITY IDEOGRAPH-F9E1
+f9e2 CJK COMPATIBILITY IDEOGRAPH-F9E2
+f9e3 CJK COMPATIBILITY IDEOGRAPH-F9E3
+f9e4 CJK COMPATIBILITY IDEOGRAPH-F9E4
+f9e5 CJK COMPATIBILITY IDEOGRAPH-F9E5
+f9e6 CJK COMPATIBILITY IDEOGRAPH-F9E6
+f9e7 CJK COMPATIBILITY IDEOGRAPH-F9E7
+f9e8 CJK COMPATIBILITY IDEOGRAPH-F9E8
+f9e9 CJK COMPATIBILITY IDEOGRAPH-F9E9
+f9ea CJK COMPATIBILITY IDEOGRAPH-F9EA
+f9eb CJK COMPATIBILITY IDEOGRAPH-F9EB
+f9ec CJK COMPATIBILITY IDEOGRAPH-F9EC
+f9ed CJK COMPATIBILITY IDEOGRAPH-F9ED
+f9ee CJK COMPATIBILITY IDEOGRAPH-F9EE
+f9ef CJK COMPATIBILITY IDEOGRAPH-F9EF
+f9f0 CJK COMPATIBILITY IDEOGRAPH-F9F0
+f9f1 CJK COMPATIBILITY IDEOGRAPH-F9F1
+f9f2 CJK COMPATIBILITY IDEOGRAPH-F9F2
+f9f3 CJK COMPATIBILITY IDEOGRAPH-F9F3
+f9f4 CJK COMPATIBILITY IDEOGRAPH-F9F4
+f9f5 CJK COMPATIBILITY IDEOGRAPH-F9F5
+f9f6 CJK COMPATIBILITY IDEOGRAPH-F9F6
+f9f7 CJK COMPATIBILITY IDEOGRAPH-F9F7
+f9f8 CJK COMPATIBILITY IDEOGRAPH-F9F8
+f9f9 CJK COMPATIBILITY IDEOGRAPH-F9F9
+f9fa CJK COMPATIBILITY IDEOGRAPH-F9FA
+f9fb CJK COMPATIBILITY IDEOGRAPH-F9FB
+f9fc CJK COMPATIBILITY IDEOGRAPH-F9FC
+f9fd CJK COMPATIBILITY IDEOGRAPH-F9FD
+f9fe CJK COMPATIBILITY IDEOGRAPH-F9FE
+f9ff CJK COMPATIBILITY IDEOGRAPH-F9FF
+fa00 CJK COMPATIBILITY IDEOGRAPH-FA00
+fa01 CJK COMPATIBILITY IDEOGRAPH-FA01
+fa02 CJK COMPATIBILITY IDEOGRAPH-FA02
+fa03 CJK COMPATIBILITY IDEOGRAPH-FA03
+fa04 CJK COMPATIBILITY IDEOGRAPH-FA04
+fa05 CJK COMPATIBILITY IDEOGRAPH-FA05
+fa06 CJK COMPATIBILITY IDEOGRAPH-FA06
+fa07 CJK COMPATIBILITY IDEOGRAPH-FA07
+fa08 CJK COMPATIBILITY IDEOGRAPH-FA08
+fa09 CJK COMPATIBILITY IDEOGRAPH-FA09
+fa0a CJK COMPATIBILITY IDEOGRAPH-FA0A
+fa0b CJK COMPATIBILITY IDEOGRAPH-FA0B
+fa0c CJK COMPATIBILITY IDEOGRAPH-FA0C
+fa0d CJK COMPATIBILITY IDEOGRAPH-FA0D
+fa0e CJK COMPATIBILITY IDEOGRAPH-FA0E
+fa0f CJK COMPATIBILITY IDEOGRAPH-FA0F
+fa10 CJK COMPATIBILITY IDEOGRAPH-FA10
+fa11 CJK COMPATIBILITY IDEOGRAPH-FA11
+fa12 CJK COMPATIBILITY IDEOGRAPH-FA12
+fa13 CJK COMPATIBILITY IDEOGRAPH-FA13
+fa14 CJK COMPATIBILITY IDEOGRAPH-FA14
+fa15 CJK COMPATIBILITY IDEOGRAPH-FA15
+fa16 CJK COMPATIBILITY IDEOGRAPH-FA16
+fa17 CJK COMPATIBILITY IDEOGRAPH-FA17
+fa18 CJK COMPATIBILITY IDEOGRAPH-FA18
+fa19 CJK COMPATIBILITY IDEOGRAPH-FA19
+fa1a CJK COMPATIBILITY IDEOGRAPH-FA1A
+fa1b CJK COMPATIBILITY IDEOGRAPH-FA1B
+fa1c CJK COMPATIBILITY IDEOGRAPH-FA1C
+fa1d CJK COMPATIBILITY IDEOGRAPH-FA1D
+fa1e CJK COMPATIBILITY IDEOGRAPH-FA1E
+fa1f CJK COMPATIBILITY IDEOGRAPH-FA1F
+fa20 CJK COMPATIBILITY IDEOGRAPH-FA20
+fa21 CJK COMPATIBILITY IDEOGRAPH-FA21
+fa22 CJK COMPATIBILITY IDEOGRAPH-FA22
+fa23 CJK COMPATIBILITY IDEOGRAPH-FA23
+fa24 CJK COMPATIBILITY IDEOGRAPH-FA24
+fa25 CJK COMPATIBILITY IDEOGRAPH-FA25
+fa26 CJK COMPATIBILITY IDEOGRAPH-FA26
+fa27 CJK COMPATIBILITY IDEOGRAPH-FA27
+fa28 CJK COMPATIBILITY IDEOGRAPH-FA28
+fa29 CJK COMPATIBILITY IDEOGRAPH-FA29
+fa2a CJK COMPATIBILITY IDEOGRAPH-FA2A
+fa2b CJK COMPATIBILITY IDEOGRAPH-FA2B
+fa2c CJK COMPATIBILITY IDEOGRAPH-FA2C
+fa2d CJK COMPATIBILITY IDEOGRAPH-FA2D
+fb00 LATIN SMALL LIGATURE FF
+fb01 LATIN SMALL LIGATURE FI
+fb02 LATIN SMALL LIGATURE FL
+fb03 LATIN SMALL LIGATURE FFI
+fb04 LATIN SMALL LIGATURE FFL
+fb05 LATIN SMALL LIGATURE LONG S T
+fb06 LATIN SMALL LIGATURE ST
+fb13 ARMENIAN SMALL LIGATURE MEN NOW
+fb14 ARMENIAN SMALL LIGATURE MEN ECH
+fb15 ARMENIAN SMALL LIGATURE MEN INI
+fb16 ARMENIAN SMALL LIGATURE VEW NOW
+fb17 ARMENIAN SMALL LIGATURE MEN XEH
+fb1d HEBREW LETTER YOD WITH HIRIQ
+fb1e HEBREW POINT JUDEO-SPANISH VARIKA
+fb1f HEBREW LIGATURE YIDDISH YOD YOD PATAH
+fb20 HEBREW LETTER ALTERNATIVE AYIN
+fb21 HEBREW LETTER WIDE ALEF
+fb22 HEBREW LETTER WIDE DALET
+fb23 HEBREW LETTER WIDE HE
+fb24 HEBREW LETTER WIDE KAF
+fb25 HEBREW LETTER WIDE LAMED
+fb26 HEBREW LETTER WIDE FINAL MEM
+fb27 HEBREW LETTER WIDE RESH
+fb28 HEBREW LETTER WIDE TAV
+fb29 HEBREW LETTER ALTERNATIVE PLUS SIGN
+fb2a HEBREW LETTER SHIN WITH SHIN DOT
+fb2b HEBREW LETTER SHIN WITH SIN DOT
+fb2c HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+fb2d HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+fb2e HEBREW LETTER ALEF WITH PATAH
+fb2f HEBREW LETTER ALEF WITH QAMATS
+fb30 HEBREW LETTER ALEF WITH MAPIQ
+fb31 HEBREW LETTER BET WITH DAGESH
+fb32 HEBREW LETTER GIMEL WITH DAGESH
+fb33 HEBREW LETTER DALET WITH DAGESH
+fb34 HEBREW LETTER HE WITH MAPIQ
+fb35 HEBREW LETTER VAV WITH DAGESH
+fb36 HEBREW LETTER ZAYIN WITH DAGESH
+fb38 HEBREW LETTER TET WITH DAGESH
+fb39 HEBREW LETTER YOD WITH DAGESH
+fb3a HEBREW LETTER FINAL KAF WITH DAGESH
+fb3b HEBREW LETTER KAF WITH DAGESH
+fb3c HEBREW LETTER LAMED WITH DAGESH
+fb3e HEBREW LETTER MEM WITH DAGESH
+fb40 HEBREW LETTER NUN WITH DAGESH
+fb41 HEBREW LETTER SAMEKH WITH DAGESH
+fb43 HEBREW LETTER FINAL PE WITH DAGESH
+fb44 HEBREW LETTER PE WITH DAGESH
+fb46 HEBREW LETTER TSADI WITH DAGESH
+fb47 HEBREW LETTER QOF WITH DAGESH
+fb48 HEBREW LETTER RESH WITH DAGESH
+fb49 HEBREW LETTER SHIN WITH DAGESH
+fb4a HEBREW LETTER TAV WITH DAGESH
+fb4b HEBREW LETTER VAV WITH HOLAM
+fb4c HEBREW LETTER BET WITH RAFE
+fb4d HEBREW LETTER KAF WITH RAFE
+fb4e HEBREW LETTER PE WITH RAFE
+fb4f HEBREW LIGATURE ALEF LAMED
+fb50 ARABIC LETTER ALEF WASLA ISOLATED FORM
+fb51 ARABIC LETTER ALEF WASLA FINAL FORM
+fb52 ARABIC LETTER BEEH ISOLATED FORM
+fb53 ARABIC LETTER BEEH FINAL FORM
+fb54 ARABIC LETTER BEEH INITIAL FORM
+fb55 ARABIC LETTER BEEH MEDIAL FORM
+fb56 ARABIC LETTER PEH ISOLATED FORM
+fb57 ARABIC LETTER PEH FINAL FORM
+fb58 ARABIC LETTER PEH INITIAL FORM
+fb59 ARABIC LETTER PEH MEDIAL FORM
+fb5a ARABIC LETTER BEHEH ISOLATED FORM
+fb5b ARABIC LETTER BEHEH FINAL FORM
+fb5c ARABIC LETTER BEHEH INITIAL FORM
+fb5d ARABIC LETTER BEHEH MEDIAL FORM
+fb5e ARABIC LETTER TTEHEH ISOLATED FORM
+fb5f ARABIC LETTER TTEHEH FINAL FORM
+fb60 ARABIC LETTER TTEHEH INITIAL FORM
+fb61 ARABIC LETTER TTEHEH MEDIAL FORM
+fb62 ARABIC LETTER TEHEH ISOLATED FORM
+fb63 ARABIC LETTER TEHEH FINAL FORM
+fb64 ARABIC LETTER TEHEH INITIAL FORM
+fb65 ARABIC LETTER TEHEH MEDIAL FORM
+fb66 ARABIC LETTER TTEH ISOLATED FORM
+fb67 ARABIC LETTER TTEH FINAL FORM
+fb68 ARABIC LETTER TTEH INITIAL FORM
+fb69 ARABIC LETTER TTEH MEDIAL FORM
+fb6a ARABIC LETTER VEH ISOLATED FORM
+fb6b ARABIC LETTER VEH FINAL FORM
+fb6c ARABIC LETTER VEH INITIAL FORM
+fb6d ARABIC LETTER VEH MEDIAL FORM
+fb6e ARABIC LETTER PEHEH ISOLATED FORM
+fb6f ARABIC LETTER PEHEH FINAL FORM
+fb70 ARABIC LETTER PEHEH INITIAL FORM
+fb71 ARABIC LETTER PEHEH MEDIAL FORM
+fb72 ARABIC LETTER DYEH ISOLATED FORM
+fb73 ARABIC LETTER DYEH FINAL FORM
+fb74 ARABIC LETTER DYEH INITIAL FORM
+fb75 ARABIC LETTER DYEH MEDIAL FORM
+fb76 ARABIC LETTER NYEH ISOLATED FORM
+fb77 ARABIC LETTER NYEH FINAL FORM
+fb78 ARABIC LETTER NYEH INITIAL FORM
+fb79 ARABIC LETTER NYEH MEDIAL FORM
+fb7a ARABIC LETTER TCHEH ISOLATED FORM
+fb7b ARABIC LETTER TCHEH FINAL FORM
+fb7c ARABIC LETTER TCHEH INITIAL FORM
+fb7d ARABIC LETTER TCHEH MEDIAL FORM
+fb7e ARABIC LETTER TCHEHEH ISOLATED FORM
+fb7f ARABIC LETTER TCHEHEH FINAL FORM
+fb80 ARABIC LETTER TCHEHEH INITIAL FORM
+fb81 ARABIC LETTER TCHEHEH MEDIAL FORM
+fb82 ARABIC LETTER DDAHAL ISOLATED FORM
+fb83 ARABIC LETTER DDAHAL FINAL FORM
+fb84 ARABIC LETTER DAHAL ISOLATED FORM
+fb85 ARABIC LETTER DAHAL FINAL FORM
+fb86 ARABIC LETTER DUL ISOLATED FORM
+fb87 ARABIC LETTER DUL FINAL FORM
+fb88 ARABIC LETTER DDAL ISOLATED FORM
+fb89 ARABIC LETTER DDAL FINAL FORM
+fb8a ARABIC LETTER JEH ISOLATED FORM
+fb8b ARABIC LETTER JEH FINAL FORM
+fb8c ARABIC LETTER RREH ISOLATED FORM
+fb8d ARABIC LETTER RREH FINAL FORM
+fb8e ARABIC LETTER KEHEH ISOLATED FORM
+fb8f ARABIC LETTER KEHEH FINAL FORM
+fb90 ARABIC LETTER KEHEH INITIAL FORM
+fb91 ARABIC LETTER KEHEH MEDIAL FORM
+fb92 ARABIC LETTER GAF ISOLATED FORM
+fb93 ARABIC LETTER GAF FINAL FORM
+fb94 ARABIC LETTER GAF INITIAL FORM
+fb95 ARABIC LETTER GAF MEDIAL FORM
+fb96 ARABIC LETTER GUEH ISOLATED FORM
+fb97 ARABIC LETTER GUEH FINAL FORM
+fb98 ARABIC LETTER GUEH INITIAL FORM
+fb99 ARABIC LETTER GUEH MEDIAL FORM
+fb9a ARABIC LETTER NGOEH ISOLATED FORM
+fb9b ARABIC LETTER NGOEH FINAL FORM
+fb9c ARABIC LETTER NGOEH INITIAL FORM
+fb9d ARABIC LETTER NGOEH MEDIAL FORM
+fb9e ARABIC LETTER NOON GHUNNA ISOLATED FORM
+fb9f ARABIC LETTER NOON GHUNNA FINAL FORM
+fba0 ARABIC LETTER RNOON ISOLATED FORM
+fba1 ARABIC LETTER RNOON FINAL FORM
+fba2 ARABIC LETTER RNOON INITIAL FORM
+fba3 ARABIC LETTER RNOON MEDIAL FORM
+fba4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+fba5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+fba6 ARABIC LETTER HEH GOAL ISOLATED FORM
+fba7 ARABIC LETTER HEH GOAL FINAL FORM
+fba8 ARABIC LETTER HEH GOAL INITIAL FORM
+fba9 ARABIC LETTER HEH GOAL MEDIAL FORM
+fbaa ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+fbab ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+fbac ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+fbad ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+fbae ARABIC LETTER YEH BARREE ISOLATED FORM
+fbaf ARABIC LETTER YEH BARREE FINAL FORM
+fbb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+fbb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+fbd3 ARABIC LETTER NG ISOLATED FORM
+fbd4 ARABIC LETTER NG FINAL FORM
+fbd5 ARABIC LETTER NG INITIAL FORM
+fbd6 ARABIC LETTER NG MEDIAL FORM
+fbd7 ARABIC LETTER U ISOLATED FORM
+fbd8 ARABIC LETTER U FINAL FORM
+fbd9 ARABIC LETTER OE ISOLATED FORM
+fbda ARABIC LETTER OE FINAL FORM
+fbdb ARABIC LETTER YU ISOLATED FORM
+fbdc ARABIC LETTER YU FINAL FORM
+fbdd ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+fbde ARABIC LETTER VE ISOLATED FORM
+fbdf ARABIC LETTER VE FINAL FORM
+fbe0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+fbe1 ARABIC LETTER KIRGHIZ OE FINAL FORM
+fbe2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+fbe3 ARABIC LETTER KIRGHIZ YU FINAL FORM
+fbe4 ARABIC LETTER E ISOLATED FORM
+fbe5 ARABIC LETTER E FINAL FORM
+fbe6 ARABIC LETTER E INITIAL FORM
+fbe7 ARABIC LETTER E MEDIAL FORM
+fbe8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+fbe9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+fbea ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+fbeb ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+fbec ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+fbed ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+fbee ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+fbef ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+fbf0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+fbf1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+fbf2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+fbf3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+fbf4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+fbf5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+fbf6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+fbf7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+fbf8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+fbf9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+fbfa ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+fbfb ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+fbfc ARABIC LETTER FARSI YEH ISOLATED FORM
+fbfd ARABIC LETTER FARSI YEH FINAL FORM
+fbfe ARABIC LETTER FARSI YEH INITIAL FORM
+fbff ARABIC LETTER FARSI YEH MEDIAL FORM
+fc00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+fc01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+fc02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+fc03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+fc04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+fc05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+fc06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+fc07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+fc08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+fc09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+fc0a ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+fc0b ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+fc0c ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+fc0d ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+fc0e ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+fc0f ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+fc10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+fc11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+fc12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+fc13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+fc14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+fc15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+fc16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+fc17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+fc18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+fc19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+fc1a ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+fc1b ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+fc1c ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+fc1d ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+fc1e ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+fc1f ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+fc20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+fc21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+fc22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+fc23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+fc24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+fc25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+fc26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+fc27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+fc28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+fc29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+fc2a ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+fc2b ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+fc2c ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+fc2d ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+fc2e ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+fc2f ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+fc30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+fc31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+fc32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+fc33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+fc34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+fc35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+fc36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+fc37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+fc38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+fc39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+fc3a ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+fc3b ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+fc3c ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+fc3d ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+fc3e ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+fc3f ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+fc40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+fc41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+fc42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+fc43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+fc44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+fc45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+fc46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+fc47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+fc48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+fc49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+fc4a ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+fc4b ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+fc4c ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+fc4d ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+fc4e ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+fc4f ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+fc50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+fc51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+fc52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+fc53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+fc54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+fc55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+fc56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+fc57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+fc58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+fc59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+fc5a ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+fc5b ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+fc5c ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+fc5d ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+fc5e ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+fc5f ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+fc60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+fc61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+fc62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+fc63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+fc64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+fc65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+fc66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+fc67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+fc68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+fc69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+fc6a ARABIC LIGATURE BEH WITH REH FINAL FORM
+fc6b ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+fc6c ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+fc6d ARABIC LIGATURE BEH WITH NOON FINAL FORM
+fc6e ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+fc6f ARABIC LIGATURE BEH WITH YEH FINAL FORM
+fc70 ARABIC LIGATURE TEH WITH REH FINAL FORM
+fc71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+fc72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+fc73 ARABIC LIGATURE TEH WITH NOON FINAL FORM
+fc74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+fc75 ARABIC LIGATURE TEH WITH YEH FINAL FORM
+fc76 ARABIC LIGATURE THEH WITH REH FINAL FORM
+fc77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+fc78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+fc79 ARABIC LIGATURE THEH WITH NOON FINAL FORM
+fc7a ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+fc7b ARABIC LIGATURE THEH WITH YEH FINAL FORM
+fc7c ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+fc7d ARABIC LIGATURE FEH WITH YEH FINAL FORM
+fc7e ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+fc7f ARABIC LIGATURE QAF WITH YEH FINAL FORM
+fc80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+fc81 ARABIC LIGATURE KAF WITH LAM FINAL FORM
+fc82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+fc83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+fc84 ARABIC LIGATURE KAF WITH YEH FINAL FORM
+fc85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+fc86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+fc87 ARABIC LIGATURE LAM WITH YEH FINAL FORM
+fc88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+fc89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+fc8a ARABIC LIGATURE NOON WITH REH FINAL FORM
+fc8b ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+fc8c ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+fc8d ARABIC LIGATURE NOON WITH NOON FINAL FORM
+fc8e ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+fc8f ARABIC LIGATURE NOON WITH YEH FINAL FORM
+fc90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+fc91 ARABIC LIGATURE YEH WITH REH FINAL FORM
+fc92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+fc93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+fc94 ARABIC LIGATURE YEH WITH NOON FINAL FORM
+fc95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+fc96 ARABIC LIGATURE YEH WITH YEH FINAL FORM
+fc97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+fc98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+fc99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+fc9a ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+fc9b ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+fc9c ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+fc9d ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+fc9e ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+fc9f ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+fca0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+fca1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+fca2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+fca3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+fca4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+fca5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+fca6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+fca7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+fca8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+fca9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+fcaa ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+fcab ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+fcac ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+fcad ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+fcae ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+fcaf ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+fcb0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+fcb1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+fcb2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+fcb3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+fcb4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+fcb5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+fcb6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+fcb7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+fcb8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+fcb9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+fcba ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+fcbb ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+fcbc ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+fcbd ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+fcbe ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+fcbf ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+fcc0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+fcc1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+fcc2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+fcc3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+fcc4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+fcc5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+fcc6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+fcc7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+fcc8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+fcc9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+fcca ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+fccb ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+fccc ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+fccd ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+fcce ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+fccf ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+fcd0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+fcd1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+fcd2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+fcd3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+fcd4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+fcd5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+fcd6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+fcd7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+fcd8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+fcd9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+fcda ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+fcdb ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+fcdc ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+fcdd ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+fcde ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+fcdf ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+fce0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+fce1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+fce2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+fce3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+fce4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+fce5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+fce6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+fce7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+fce8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+fce9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+fcea ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+fceb ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+fcec ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+fced ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+fcee ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+fcef ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+fcf0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+fcf1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+fcf2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+fcf3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+fcf4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+fcf5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+fcf6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+fcf7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+fcf8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+fcf9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+fcfa ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+fcfb ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+fcfc ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+fcfd ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+fcfe ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+fcff ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+fd00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+fd01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+fd02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+fd03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+fd04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+fd05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+fd06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+fd07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+fd08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+fd09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+fd0a ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+fd0b ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+fd0c ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+fd0d ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+fd0e ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+fd0f ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+fd10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+fd11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+fd12 ARABIC LIGATURE TAH WITH YEH FINAL FORM
+fd13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+fd14 ARABIC LIGATURE AIN WITH YEH FINAL FORM
+fd15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+fd16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+fd17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+fd18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+fd19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+fd1a ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+fd1b ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+fd1c ARABIC LIGATURE HAH WITH YEH FINAL FORM
+fd1d ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+fd1e ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+fd1f ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+fd20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+fd21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+fd22 ARABIC LIGATURE SAD WITH YEH FINAL FORM
+fd23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+fd24 ARABIC LIGATURE DAD WITH YEH FINAL FORM
+fd25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+fd26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+fd27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+fd28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+fd29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+fd2a ARABIC LIGATURE SEEN WITH REH FINAL FORM
+fd2b ARABIC LIGATURE SAD WITH REH FINAL FORM
+fd2c ARABIC LIGATURE DAD WITH REH FINAL FORM
+fd2d ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+fd2e ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+fd2f ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+fd30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+fd31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+fd32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+fd33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+fd34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+fd35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+fd36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+fd37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+fd38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+fd39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+fd3a ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+fd3b ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+fd3c ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+fd3d ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+fd3e ORNATE LEFT PARENTHESIS
+fd3f ORNATE RIGHT PARENTHESIS
+fd50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+fd51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+fd52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+fd53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+fd54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+fd55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+fd56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+fd57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+fd58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+fd59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+fd5a ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+fd5b ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fd5c ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+fd5d ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+fd5e ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+fd5f ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+fd60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+fd61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+fd62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+fd63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+fd64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+fd65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+fd66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+fd67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+fd68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+fd69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+fd6a ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+fd6b ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+fd6c ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+fd6d ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+fd6e ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+fd6f ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+fd70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+fd71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+fd72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+fd73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+fd74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+fd75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+fd76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+fd77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+fd78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fd79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+fd7a ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+fd7b ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fd7c ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+fd7d ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+fd7e ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+fd7f ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+fd80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+fd81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+fd82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+fd83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+fd84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+fd85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+fd86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+fd87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+fd88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+fd89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+fd8a ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+fd8b ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+fd8c ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+fd8d ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+fd8e ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+fd8f ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+fd92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+fd93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+fd94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+fd95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+fd96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+fd97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+fd98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+fd99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+fd9a ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+fd9b ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fd9c ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+fd9d ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+fd9e ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+fd9f ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+fda0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+fda1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+fda2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+fda3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+fda4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fda5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+fda6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+fda7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+fda8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+fda9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+fdaa ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+fdab ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+fdac ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+fdad ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+fdae ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+fdaf ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+fdb0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+fdb1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+fdb2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+fdb3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+fdb4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+fdb5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+fdb6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+fdb7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+fdb8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+fdb9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+fdba ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+fdbb ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+fdbc ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+fdbd ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+fdbe ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+fdbf ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+fdc0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+fdc1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+fdc2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+fdc3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+fdc4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+fdc5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+fdc6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+fdc7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+fdf0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+fdf1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+fdf2 ARABIC LIGATURE ALLAH ISOLATED FORM
+fdf3 ARABIC LIGATURE AKBAR ISOLATED FORM
+fdf4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+fdf5 ARABIC LIGATURE SALAM ISOLATED FORM
+fdf6 ARABIC LIGATURE RASOUL ISOLATED FORM
+fdf7 ARABIC LIGATURE ALAYHE ISOLATED FORM
+fdf8 ARABIC LIGATURE WASALLAM ISOLATED FORM
+fdf9 ARABIC LIGATURE SALLA ISOLATED FORM
+fdfa ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+fdfb ARABIC LIGATURE JALLAJALALOUHOU
+fe20 COMBINING LIGATURE LEFT HALF
+fe21 COMBINING LIGATURE RIGHT HALF
+fe22 COMBINING DOUBLE TILDE LEFT HALF
+fe23 COMBINING DOUBLE TILDE RIGHT HALF
+fe30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+fe31 PRESENTATION FORM FOR VERTICAL EM DASH
+fe32 PRESENTATION FORM FOR VERTICAL EN DASH
+fe33 PRESENTATION FORM FOR VERTICAL LOW LINE
+fe34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+fe35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+fe36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+fe37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+fe38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+fe39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+fe3a PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+fe3b PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+fe3c PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+fe3d PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+fe3e PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+fe3f PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+fe40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+fe41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+fe42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+fe43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+fe44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+fe49 DASHED OVERLINE
+fe4a CENTRELINE OVERLINE
+fe4b WAVY OVERLINE
+fe4c DOUBLE WAVY OVERLINE
+fe4d DASHED LOW LINE
+fe4e CENTRELINE LOW LINE
+fe4f WAVY LOW LINE
+fe50 SMALL COMMA
+fe51 SMALL IDEOGRAPHIC COMMA
+fe52 SMALL FULL STOP
+fe54 SMALL SEMICOLON
+fe55 SMALL COLON
+fe56 SMALL QUESTION MARK
+fe57 SMALL EXCLAMATION MARK
+fe58 SMALL EM DASH
+fe59 SMALL LEFT PARENTHESIS
+fe5a SMALL RIGHT PARENTHESIS
+fe5b SMALL LEFT CURLY BRACKET
+fe5c SMALL RIGHT CURLY BRACKET
+fe5d SMALL LEFT TORTOISE SHELL BRACKET
+fe5e SMALL RIGHT TORTOISE SHELL BRACKET
+fe5f SMALL NUMBER SIGN
+fe60 SMALL AMPERSAND
+fe61 SMALL ASTERISK
+fe62 SMALL PLUS SIGN
+fe63 SMALL HYPHEN-MINUS
+fe64 SMALL LESS-THAN SIGN
+fe65 SMALL GREATER-THAN SIGN
+fe66 SMALL EQUALS SIGN
+fe68 SMALL REVERSE SOLIDUS
+fe69 SMALL DOLLAR SIGN
+fe6a SMALL PERCENT SIGN
+fe6b SMALL COMMERCIAL AT
+fe70 ARABIC FATHATAN ISOLATED FORM
+fe71 ARABIC TATWEEL WITH FATHATAN ABOVE
+fe72 ARABIC DAMMATAN ISOLATED FORM
+fe74 ARABIC KASRATAN ISOLATED FORM
+fe76 ARABIC FATHA ISOLATED FORM
+fe77 ARABIC FATHA MEDIAL FORM
+fe78 ARABIC DAMMA ISOLATED FORM
+fe79 ARABIC DAMMA MEDIAL FORM
+fe7a ARABIC KASRA ISOLATED FORM
+fe7b ARABIC KASRA MEDIAL FORM
+fe7c ARABIC SHADDA ISOLATED FORM
+fe7d ARABIC SHADDA MEDIAL FORM
+fe7e ARABIC SUKUN ISOLATED FORM
+fe7f ARABIC SUKUN MEDIAL FORM
+fe80 ARABIC LETTER HAMZA ISOLATED FORM
+fe81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+fe82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+fe83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+fe84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+fe85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+fe86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+fe87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+fe88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+fe89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+fe8a ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+fe8b ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+fe8c ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+fe8d ARABIC LETTER ALEF ISOLATED FORM
+fe8e ARABIC LETTER ALEF FINAL FORM
+fe8f ARABIC LETTER BEH ISOLATED FORM
+fe90 ARABIC LETTER BEH FINAL FORM
+fe91 ARABIC LETTER BEH INITIAL FORM
+fe92 ARABIC LETTER BEH MEDIAL FORM
+fe93 ARABIC LETTER TEH MARBUTA ISOLATED FORM
+fe94 ARABIC LETTER TEH MARBUTA FINAL FORM
+fe95 ARABIC LETTER TEH ISOLATED FORM
+fe96 ARABIC LETTER TEH FINAL FORM
+fe97 ARABIC LETTER TEH INITIAL FORM
+fe98 ARABIC LETTER TEH MEDIAL FORM
+fe99 ARABIC LETTER THEH ISOLATED FORM
+fe9a ARABIC LETTER THEH FINAL FORM
+fe9b ARABIC LETTER THEH INITIAL FORM
+fe9c ARABIC LETTER THEH MEDIAL FORM
+fe9d ARABIC LETTER JEEM ISOLATED FORM
+fe9e ARABIC LETTER JEEM FINAL FORM
+fe9f ARABIC LETTER JEEM INITIAL FORM
+fea0 ARABIC LETTER JEEM MEDIAL FORM
+fea1 ARABIC LETTER HAH ISOLATED FORM
+fea2 ARABIC LETTER HAH FINAL FORM
+fea3 ARABIC LETTER HAH INITIAL FORM
+fea4 ARABIC LETTER HAH MEDIAL FORM
+fea5 ARABIC LETTER KHAH ISOLATED FORM
+fea6 ARABIC LETTER KHAH FINAL FORM
+fea7 ARABIC LETTER KHAH INITIAL FORM
+fea8 ARABIC LETTER KHAH MEDIAL FORM
+fea9 ARABIC LETTER DAL ISOLATED FORM
+feaa ARABIC LETTER DAL FINAL FORM
+feab ARABIC LETTER THAL ISOLATED FORM
+feac ARABIC LETTER THAL FINAL FORM
+fead ARABIC LETTER REH ISOLATED FORM
+feae ARABIC LETTER REH FINAL FORM
+feaf ARABIC LETTER ZAIN ISOLATED FORM
+feb0 ARABIC LETTER ZAIN FINAL FORM
+feb1 ARABIC LETTER SEEN ISOLATED FORM
+feb2 ARABIC LETTER SEEN FINAL FORM
+feb3 ARABIC LETTER SEEN INITIAL FORM
+feb4 ARABIC LETTER SEEN MEDIAL FORM
+feb5 ARABIC LETTER SHEEN ISOLATED FORM
+feb6 ARABIC LETTER SHEEN FINAL FORM
+feb7 ARABIC LETTER SHEEN INITIAL FORM
+feb8 ARABIC LETTER SHEEN MEDIAL FORM
+feb9 ARABIC LETTER SAD ISOLATED FORM
+feba ARABIC LETTER SAD FINAL FORM
+febb ARABIC LETTER SAD INITIAL FORM
+febc ARABIC LETTER SAD MEDIAL FORM
+febd ARABIC LETTER DAD ISOLATED FORM
+febe ARABIC LETTER DAD FINAL FORM
+febf ARABIC LETTER DAD INITIAL FORM
+fec0 ARABIC LETTER DAD MEDIAL FORM
+fec1 ARABIC LETTER TAH ISOLATED FORM
+fec2 ARABIC LETTER TAH FINAL FORM
+fec3 ARABIC LETTER TAH INITIAL FORM
+fec4 ARABIC LETTER TAH MEDIAL FORM
+fec5 ARABIC LETTER ZAH ISOLATED FORM
+fec6 ARABIC LETTER ZAH FINAL FORM
+fec7 ARABIC LETTER ZAH INITIAL FORM
+fec8 ARABIC LETTER ZAH MEDIAL FORM
+fec9 ARABIC LETTER AIN ISOLATED FORM
+feca ARABIC LETTER AIN FINAL FORM
+fecb ARABIC LETTER AIN INITIAL FORM
+fecc ARABIC LETTER AIN MEDIAL FORM
+fecd ARABIC LETTER GHAIN ISOLATED FORM
+fece ARABIC LETTER GHAIN FINAL FORM
+fecf ARABIC LETTER GHAIN INITIAL FORM
+fed0 ARABIC LETTER GHAIN MEDIAL FORM
+fed1 ARABIC LETTER FEH ISOLATED FORM
+fed2 ARABIC LETTER FEH FINAL FORM
+fed3 ARABIC LETTER FEH INITIAL FORM
+fed4 ARABIC LETTER FEH MEDIAL FORM
+fed5 ARABIC LETTER QAF ISOLATED FORM
+fed6 ARABIC LETTER QAF FINAL FORM
+fed7 ARABIC LETTER QAF INITIAL FORM
+fed8 ARABIC LETTER QAF MEDIAL FORM
+fed9 ARABIC LETTER KAF ISOLATED FORM
+feda ARABIC LETTER KAF FINAL FORM
+fedb ARABIC LETTER KAF INITIAL FORM
+fedc ARABIC LETTER KAF MEDIAL FORM
+fedd ARABIC LETTER LAM ISOLATED FORM
+fede ARABIC LETTER LAM FINAL FORM
+fedf ARABIC LETTER LAM INITIAL FORM
+fee0 ARABIC LETTER LAM MEDIAL FORM
+fee1 ARABIC LETTER MEEM ISOLATED FORM
+fee2 ARABIC LETTER MEEM FINAL FORM
+fee3 ARABIC LETTER MEEM INITIAL FORM
+fee4 ARABIC LETTER MEEM MEDIAL FORM
+fee5 ARABIC LETTER NOON ISOLATED FORM
+fee6 ARABIC LETTER NOON FINAL FORM
+fee7 ARABIC LETTER NOON INITIAL FORM
+fee8 ARABIC LETTER NOON MEDIAL FORM
+fee9 ARABIC LETTER HEH ISOLATED FORM
+feea ARABIC LETTER HEH FINAL FORM
+feeb ARABIC LETTER HEH INITIAL FORM
+feec ARABIC LETTER HEH MEDIAL FORM
+feed ARABIC LETTER WAW ISOLATED FORM
+feee ARABIC LETTER WAW FINAL FORM
+feef ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+fef0 ARABIC LETTER ALEF MAKSURA FINAL FORM
+fef1 ARABIC LETTER YEH ISOLATED FORM
+fef2 ARABIC LETTER YEH FINAL FORM
+fef3 ARABIC LETTER YEH INITIAL FORM
+fef4 ARABIC LETTER YEH MEDIAL FORM
+fef5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+fef6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+fef7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+fef8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+fef9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+fefa ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+fefb ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+fefc ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+feff ZERO WIDTH NO-BREAK SPACE
+ff01 FULLWIDTH EXCLAMATION MARK
+ff02 FULLWIDTH QUOTATION MARK
+ff03 FULLWIDTH NUMBER SIGN
+ff04 FULLWIDTH DOLLAR SIGN
+ff05 FULLWIDTH PERCENT SIGN
+ff06 FULLWIDTH AMPERSAND
+ff07 FULLWIDTH APOSTROPHE
+ff08 FULLWIDTH LEFT PARENTHESIS
+ff09 FULLWIDTH RIGHT PARENTHESIS
+ff0a FULLWIDTH ASTERISK
+ff0b FULLWIDTH PLUS SIGN
+ff0c FULLWIDTH COMMA
+ff0d FULLWIDTH HYPHEN-MINUS
+ff0e FULLWIDTH FULL STOP
+ff0f FULLWIDTH SOLIDUS
+ff10 FULLWIDTH DIGIT ZERO
+ff11 FULLWIDTH DIGIT ONE
+ff12 FULLWIDTH DIGIT TWO
+ff13 FULLWIDTH DIGIT THREE
+ff14 FULLWIDTH DIGIT FOUR
+ff15 FULLWIDTH DIGIT FIVE
+ff16 FULLWIDTH DIGIT SIX
+ff17 FULLWIDTH DIGIT SEVEN
+ff18 FULLWIDTH DIGIT EIGHT
+ff19 FULLWIDTH DIGIT NINE
+ff1a FULLWIDTH COLON
+ff1b FULLWIDTH SEMICOLON
+ff1c FULLWIDTH LESS-THAN SIGN
+ff1d FULLWIDTH EQUALS SIGN
+ff1e FULLWIDTH GREATER-THAN SIGN
+ff1f FULLWIDTH QUESTION MARK
+ff20 FULLWIDTH COMMERCIAL AT
+ff21 FULLWIDTH LATIN CAPITAL LETTER A
+ff22 FULLWIDTH LATIN CAPITAL LETTER B
+ff23 FULLWIDTH LATIN CAPITAL LETTER C
+ff24 FULLWIDTH LATIN CAPITAL LETTER D
+ff25 FULLWIDTH LATIN CAPITAL LETTER E
+ff26 FULLWIDTH LATIN CAPITAL LETTER F
+ff27 FULLWIDTH LATIN CAPITAL LETTER G
+ff28 FULLWIDTH LATIN CAPITAL LETTER H
+ff29 FULLWIDTH LATIN CAPITAL LETTER I
+ff2a FULLWIDTH LATIN CAPITAL LETTER J
+ff2b FULLWIDTH LATIN CAPITAL LETTER K
+ff2c FULLWIDTH LATIN CAPITAL LETTER L
+ff2d FULLWIDTH LATIN CAPITAL LETTER M
+ff2e FULLWIDTH LATIN CAPITAL LETTER N
+ff2f FULLWIDTH LATIN CAPITAL LETTER O
+ff30 FULLWIDTH LATIN CAPITAL LETTER P
+ff31 FULLWIDTH LATIN CAPITAL LETTER Q
+ff32 FULLWIDTH LATIN CAPITAL LETTER R
+ff33 FULLWIDTH LATIN CAPITAL LETTER S
+ff34 FULLWIDTH LATIN CAPITAL LETTER T
+ff35 FULLWIDTH LATIN CAPITAL LETTER U
+ff36 FULLWIDTH LATIN CAPITAL LETTER V
+ff37 FULLWIDTH LATIN CAPITAL LETTER W
+ff38 FULLWIDTH LATIN CAPITAL LETTER X
+ff39 FULLWIDTH LATIN CAPITAL LETTER Y
+ff3a FULLWIDTH LATIN CAPITAL LETTER Z
+ff3b FULLWIDTH LEFT SQUARE BRACKET
+ff3c FULLWIDTH REVERSE SOLIDUS
+ff3d FULLWIDTH RIGHT SQUARE BRACKET
+ff3e FULLWIDTH CIRCUMFLEX ACCENT
+ff3f FULLWIDTH LOW LINE
+ff40 FULLWIDTH GRAVE ACCENT
+ff41 FULLWIDTH LATIN SMALL LETTER A
+ff42 FULLWIDTH LATIN SMALL LETTER B
+ff43 FULLWIDTH LATIN SMALL LETTER C
+ff44 FULLWIDTH LATIN SMALL LETTER D
+ff45 FULLWIDTH LATIN SMALL LETTER E
+ff46 FULLWIDTH LATIN SMALL LETTER F
+ff47 FULLWIDTH LATIN SMALL LETTER G
+ff48 FULLWIDTH LATIN SMALL LETTER H
+ff49 FULLWIDTH LATIN SMALL LETTER I
+ff4a FULLWIDTH LATIN SMALL LETTER J
+ff4b FULLWIDTH LATIN SMALL LETTER K
+ff4c FULLWIDTH LATIN SMALL LETTER L
+ff4d FULLWIDTH LATIN SMALL LETTER M
+ff4e FULLWIDTH LATIN SMALL LETTER N
+ff4f FULLWIDTH LATIN SMALL LETTER O
+ff50 FULLWIDTH LATIN SMALL LETTER P
+ff51 FULLWIDTH LATIN SMALL LETTER Q
+ff52 FULLWIDTH LATIN SMALL LETTER R
+ff53 FULLWIDTH LATIN SMALL LETTER S
+ff54 FULLWIDTH LATIN SMALL LETTER T
+ff55 FULLWIDTH LATIN SMALL LETTER U
+ff56 FULLWIDTH LATIN SMALL LETTER V
+ff57 FULLWIDTH LATIN SMALL LETTER W
+ff58 FULLWIDTH LATIN SMALL LETTER X
+ff59 FULLWIDTH LATIN SMALL LETTER Y
+ff5a FULLWIDTH LATIN SMALL LETTER Z
+ff5b FULLWIDTH LEFT CURLY BRACKET
+ff5c FULLWIDTH VERTICAL LINE
+ff5d FULLWIDTH RIGHT CURLY BRACKET
+ff5e FULLWIDTH TILDE
+ff61 HALFWIDTH IDEOGRAPHIC FULL STOP
+ff62 HALFWIDTH LEFT CORNER BRACKET
+ff63 HALFWIDTH RIGHT CORNER BRACKET
+ff64 HALFWIDTH IDEOGRAPHIC COMMA
+ff65 HALFWIDTH KATAKANA MIDDLE DOT
+ff66 HALFWIDTH KATAKANA LETTER WO
+ff67 HALFWIDTH KATAKANA LETTER SMALL A
+ff68 HALFWIDTH KATAKANA LETTER SMALL I
+ff69 HALFWIDTH KATAKANA LETTER SMALL U
+ff6a HALFWIDTH KATAKANA LETTER SMALL E
+ff6b HALFWIDTH KATAKANA LETTER SMALL O
+ff6c HALFWIDTH KATAKANA LETTER SMALL YA
+ff6d HALFWIDTH KATAKANA LETTER SMALL YU
+ff6e HALFWIDTH KATAKANA LETTER SMALL YO
+ff6f HALFWIDTH KATAKANA LETTER SMALL TU
+ff70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ff71 HALFWIDTH KATAKANA LETTER A
+ff72 HALFWIDTH KATAKANA LETTER I
+ff73 HALFWIDTH KATAKANA LETTER U
+ff74 HALFWIDTH KATAKANA LETTER E
+ff75 HALFWIDTH KATAKANA LETTER O
+ff76 HALFWIDTH KATAKANA LETTER KA
+ff77 HALFWIDTH KATAKANA LETTER KI
+ff78 HALFWIDTH KATAKANA LETTER KU
+ff79 HALFWIDTH KATAKANA LETTER KE
+ff7a HALFWIDTH KATAKANA LETTER KO
+ff7b HALFWIDTH KATAKANA LETTER SA
+ff7c HALFWIDTH KATAKANA LETTER SI
+ff7d HALFWIDTH KATAKANA LETTER SU
+ff7e HALFWIDTH KATAKANA LETTER SE
+ff7f HALFWIDTH KATAKANA LETTER SO
+ff80 HALFWIDTH KATAKANA LETTER TA
+ff81 HALFWIDTH KATAKANA LETTER TI
+ff82 HALFWIDTH KATAKANA LETTER TU
+ff83 HALFWIDTH KATAKANA LETTER TE
+ff84 HALFWIDTH KATAKANA LETTER TO
+ff85 HALFWIDTH KATAKANA LETTER NA
+ff86 HALFWIDTH KATAKANA LETTER NI
+ff87 HALFWIDTH KATAKANA LETTER NU
+ff88 HALFWIDTH KATAKANA LETTER NE
+ff89 HALFWIDTH KATAKANA LETTER NO
+ff8a HALFWIDTH KATAKANA LETTER HA
+ff8b HALFWIDTH KATAKANA LETTER HI
+ff8c HALFWIDTH KATAKANA LETTER HU
+ff8d HALFWIDTH KATAKANA LETTER HE
+ff8e HALFWIDTH KATAKANA LETTER HO
+ff8f HALFWIDTH KATAKANA LETTER MA
+ff90 HALFWIDTH KATAKANA LETTER MI
+ff91 HALFWIDTH KATAKANA LETTER MU
+ff92 HALFWIDTH KATAKANA LETTER ME
+ff93 HALFWIDTH KATAKANA LETTER MO
+ff94 HALFWIDTH KATAKANA LETTER YA
+ff95 HALFWIDTH KATAKANA LETTER YU
+ff96 HALFWIDTH KATAKANA LETTER YO
+ff97 HALFWIDTH KATAKANA LETTER RA
+ff98 HALFWIDTH KATAKANA LETTER RI
+ff99 HALFWIDTH KATAKANA LETTER RU
+ff9a HALFWIDTH KATAKANA LETTER RE
+ff9b HALFWIDTH KATAKANA LETTER RO
+ff9c HALFWIDTH KATAKANA LETTER WA
+ff9d HALFWIDTH KATAKANA LETTER N
+ff9e HALFWIDTH KATAKANA VOICED SOUND MARK
+ff9f HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ffa0 HALFWIDTH HANGUL FILLER
+ffa1 HALFWIDTH HANGUL LETTER KIYEOK
+ffa2 HALFWIDTH HANGUL LETTER SSANGKIYEOK
+ffa3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+ffa4 HALFWIDTH HANGUL LETTER NIEUN
+ffa5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+ffa6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+ffa7 HALFWIDTH HANGUL LETTER TIKEUT
+ffa8 HALFWIDTH HANGUL LETTER SSANGTIKEUT
+ffa9 HALFWIDTH HANGUL LETTER RIEUL
+ffaa HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+ffab HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+ffac HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+ffad HALFWIDTH HANGUL LETTER RIEUL-SIOS
+ffae HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+ffaf HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+ffb0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+ffb1 HALFWIDTH HANGUL LETTER MIEUM
+ffb2 HALFWIDTH HANGUL LETTER PIEUP
+ffb3 HALFWIDTH HANGUL LETTER SSANGPIEUP
+ffb4 HALFWIDTH HANGUL LETTER PIEUP-SIOS
+ffb5 HALFWIDTH HANGUL LETTER SIOS
+ffb6 HALFWIDTH HANGUL LETTER SSANGSIOS
+ffb7 HALFWIDTH HANGUL LETTER IEUNG
+ffb8 HALFWIDTH HANGUL LETTER CIEUC
+ffb9 HALFWIDTH HANGUL LETTER SSANGCIEUC
+ffba HALFWIDTH HANGUL LETTER CHIEUCH
+ffbb HALFWIDTH HANGUL LETTER KHIEUKH
+ffbc HALFWIDTH HANGUL LETTER THIEUTH
+ffbd HALFWIDTH HANGUL LETTER PHIEUPH
+ffbe HALFWIDTH HANGUL LETTER HIEUH
+ffc2 HALFWIDTH HANGUL LETTER A
+ffc3 HALFWIDTH HANGUL LETTER AE
+ffc4 HALFWIDTH HANGUL LETTER YA
+ffc5 HALFWIDTH HANGUL LETTER YAE
+ffc6 HALFWIDTH HANGUL LETTER EO
+ffc7 HALFWIDTH HANGUL LETTER E
+ffca HALFWIDTH HANGUL LETTER YEO
+ffcb HALFWIDTH HANGUL LETTER YE
+ffcc HALFWIDTH HANGUL LETTER O
+ffcd HALFWIDTH HANGUL LETTER WA
+ffce HALFWIDTH HANGUL LETTER WAE
+ffcf HALFWIDTH HANGUL LETTER OE
+ffd2 HALFWIDTH HANGUL LETTER YO
+ffd3 HALFWIDTH HANGUL LETTER U
+ffd4 HALFWIDTH HANGUL LETTER WEO
+ffd5 HALFWIDTH HANGUL LETTER WE
+ffd6 HALFWIDTH HANGUL LETTER WI
+ffd7 HALFWIDTH HANGUL LETTER YU
+ffda HALFWIDTH HANGUL LETTER EU
+ffdb HALFWIDTH HANGUL LETTER YI
+ffdc HALFWIDTH HANGUL LETTER I
+ffe0 FULLWIDTH CENT SIGN
+ffe1 FULLWIDTH POUND SIGN
+ffe2 FULLWIDTH NOT SIGN
+ffe3 FULLWIDTH MACRON
+ffe4 FULLWIDTH BROKEN BAR
+ffe5 FULLWIDTH YEN SIGN
+ffe6 FULLWIDTH WON SIGN
+ffe8 HALFWIDTH FORMS LIGHT VERTICAL
+ffe9 HALFWIDTH LEFTWARDS ARROW
+ffea HALFWIDTH UPWARDS ARROW
+ffeb HALFWIDTH RIGHTWARDS ARROW
+ffec HALFWIDTH DOWNWARDS ARROW
+ffed HALFWIDTH BLACK SQUARE
+ffee HALFWIDTH WHITE CIRCLE
+fff9 INTERLINEAR ANNOTATION ANCHOR
+fffa INTERLINEAR ANNOTATION SEPARATOR
+fffb INTERLINEAR ANNOTATION TERMINATOR
+fffc OBJECT REPLACEMENT CHARACTER
+fffd REPLACEMENT CHARACTER
+END
diff --git a/contrib/perl5/lib/unicode/Names.txt b/contrib/perl5/lib/unicode/Names.txt
new file mode 100644
index 0000000..aa3dce0
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Names.txt
@@ -0,0 +1,17271 @@
+@@@ The Unicode Standard 3.0
+@@@+ Final Draft UC3M990825.lst
+ More annotation fixes for Tibetan.
+ Annotation added for 2231..2233.
+@@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F
+@ C0 controls
+@+ Alias names are those for ISO 6429.
+0000 <control>
+ = NULL
+0001 <control>
+ = START OF HEADING
+0002 <control>
+ = START OF TEXT
+0003 <control>
+ = END OF TEXT
+0004 <control>
+ = END OF TRANSMISSION
+0005 <control>
+ = ENQUIRY
+0006 <control>
+ = ACKNOWLEDGE
+0007 <control>
+ = BELL
+0008 <control>
+ = BACKSPACE
+0009 <control>
+ = HORIZONTAL TABULATION
+000A <control>
+ = LINE FEED
+000B <control>
+ = VERTICAL TABULATION
+000C <control>
+ = FORM FEED
+000D <control>
+ = CARRIAGE RETURN
+000E <control>
+ = SHIFT OUT
+000F <control>
+ = SHIFT IN
+0010 <control>
+ = DATA LINK ESCAPE
+0011 <control>
+ = DEVICE CONTROL ONE
+0012 <control>
+ = DEVICE CONTROL TWO
+0013 <control>
+ = DEVICE CONTROL THREE
+0014 <control>
+ = DEVICE CONTROL FOUR
+0015 <control>
+ = NEGATIVE ACKNOWLEDGE
+0016 <control>
+ = SYNCHRONOUS IDLE
+0017 <control>
+ = END OF TRANSMISSION BLOCK
+0018 <control>
+ = CANCEL
+0019 <control>
+ = END OF MEDIUM
+001A <control>
+ = SUBSTITUTE
+ x (replacement character - FFFD)
+001B <control>
+ = ESCAPE
+001C <control>
+ = FILE SEPARATOR
+001D <control>
+ = GROUP SEPARATOR
+001E <control>
+ = RECORD SEPARATOR
+001F <control>
+ = UNIT SEPARATOR
+@ ASCII
+0020 SPACE
+ * sometimes considered a control code
+ * other space characters: 2000-200A
+ x (no-break space - 00A0)
+ x (zero width space - 200B)
+ x (ideographic space - 3000)
+ x (zero width no-break space - FEFF)
+0021 EXCLAMATION MARK
+ = factorial
+ = bang
+ x (inverted exclamation mark - 00A1)
+ x (latin letter retroflex click - 01C3)
+ x (double exclamation mark - 203C)
+ x (interrobang - 203D)
+ x (heavy exclamation mark ornament - 2762)
+0022 QUOTATION MARK
+ = APL quote
+ * neutral (vertical), used as opening or closing quotation mark
+ * preferred characters in English for paired quotation marks are 201C & 201D
+ x (modifier letter double prime - 02BA)
+ x (combining double acute accent - 030B)
+ x (combining double vertical line above - 030E)
+ x (double prime - 2033)
+ x (ditto mark - 3003)
+0023 NUMBER SIGN
+ = pound sign, hash, crosshatch, octothorpe
+0024 DOLLAR SIGN
+ = milreis, escudo
+ * glyph may have one or two vertical bars
+ * other currency symbol characters: 20A0-20AF
+ x (currency sign - 00A4)
+0025 PERCENT SIGN
+ x (arabic percent sign - 066A)
+ x (per mille sign - 2030)
+ x (per ten thousand sign - 2031)
+0026 AMPERSAND
+0027 APOSTROPHE
+ = APOSTROPHE-QUOTE
+ * neutral (vertical) glyph having mixed usage
+ * preferred character for apostrophe is 2019
+ * preferred characters in English for paired quotation marks are 2018 & 2019
+ x (modifier letter prime - 02B9)
+ x (modifier letter apostrophe - 02BC)
+ x (modifier letter vertical line - 02C8)
+ x (combining acute accent - 0301)
+ x (prime - 2032)
+0028 LEFT PARENTHESIS
+ = OPENING PARENTHESIS
+0029 RIGHT PARENTHESIS
+ = CLOSING PARENTHESIS
+ * see discussion on semantics of paired bracketing characters
+002A ASTERISK
+ = star (on phone keypads)
+ x (arabic five pointed star - 066D)
+ x (asterisk operator - 2217)
+ x (heavy asterisk - 2731)
+002B PLUS SIGN
+002C COMMA
+ = decimal separator
+ x (arabic comma - 060C)
+ x (single low-9 quotation mark - 201A)
+ x (ideographic comma - 3001)
+002D HYPHEN-MINUS
+ = hyphen or minus sign
+ * used for either hyphen or minus sign
+ x (hyphen - 2010)
+ x (non-breaking hyphen - 2011)
+ x (figure dash - 2012)
+ x (en dash - 2013)
+ x (minus sign - 2212)
+002E FULL STOP
+ = PERIOD
+ = dot, decimal point
+ * may be rendered as a raised decimal point in old style numbers
+ x (arabic full stop - 06D4)
+ x (ideographic full stop - 3002)
+002F SOLIDUS
+ = SLASH
+ = virgule, shilling (British)
+ x (latin letter dental click - 01C0)
+ x (combining long solidus overlay - 0338)
+ x (fraction slash - 2044)
+ x (division slash - 2215)
+0030 DIGIT ZERO
+0031 DIGIT ONE
+0032 DIGIT TWO
+0033 DIGIT THREE
+0034 DIGIT FOUR
+0035 DIGIT FIVE
+0036 DIGIT SIX
+0037 DIGIT SEVEN
+0038 DIGIT EIGHT
+0039 DIGIT NINE
+003A COLON
+ x (armenian full stop - 0589)
+ x (ratio - 2236)
+003B SEMICOLON
+ x (greek question mark - 037E)
+ x (arabic semicolon - 061B)
+003C LESS-THAN SIGN
+ x (single left-pointing angle quotation mark - 2039)
+ x (left-pointing angle bracket - 2329)
+ x (left angle bracket - 3008)
+003D EQUALS SIGN
+ * other related characters: 2241-2263
+ x (not equal to - 2260)
+ x (identical to - 2261)
+003E GREATER-THAN SIGN
+ x (single right-pointing angle quotation mark - 203A)
+ x (right-pointing angle bracket - 232A)
+ x (right angle bracket - 3009)
+003F QUESTION MARK
+ x (inverted question mark - 00BF)
+ x (greek question mark - 037E)
+ x (arabic question mark - 061F)
+ x (interrobang - 203D)
+ x (question exclamation mark - 2048)
+ x (exclamation question mark - 2049)
+0040 COMMERCIAL AT
+0041 LATIN CAPITAL LETTER A
+0042 LATIN CAPITAL LETTER B
+ x (script capital b - 212C)
+0043 LATIN CAPITAL LETTER C
+ x (double-struck capital c - 2102)
+ x (black-letter capital c - 212D)
+0044 LATIN CAPITAL LETTER D
+0045 LATIN CAPITAL LETTER E
+ x (euler constant - 2107)
+ x (script capital e - 2130)
+0046 LATIN CAPITAL LETTER F
+ x (script capital f - 2131)
+ x (turned capital f - 2132)
+0047 LATIN CAPITAL LETTER G
+0048 LATIN CAPITAL LETTER H
+ x (script capital h - 210B)
+ x (black-letter capital h - 210C)
+ x (double-struck capital h - 210D)
+0049 LATIN CAPITAL LETTER I
+ * Turkish and Azerbaijani use 0131 for lowercase
+ x (latin capital letter i with dot above - 0130)
+ x (cyrillic capital letter byelorussian-ukrainian i - 0406)
+ x (cyrillic letter palochka - 04C0)
+ x (script capital i - 2110)
+ x (black-letter capital i - 2111)
+ x (roman numeral one - 2160)
+004A LATIN CAPITAL LETTER J
+004B LATIN CAPITAL LETTER K
+ x (kelvin sign - 212A)
+004C LATIN CAPITAL LETTER L
+ x (script capital l - 2112)
+004D LATIN CAPITAL LETTER M
+ x (script capital m - 2133)
+004E LATIN CAPITAL LETTER N
+ x (double-struck capital n - 2115)
+004F LATIN CAPITAL LETTER O
+0050 LATIN CAPITAL LETTER P
+ x (double-struck capital p - 2119)
+0051 LATIN CAPITAL LETTER Q
+ x (double-struck capital q - 211A)
+0052 LATIN CAPITAL LETTER R
+ x (script capital r - 211B)
+ x (black-letter capital r - 211C)
+ x (double-struck capital r - 211D)
+0053 LATIN CAPITAL LETTER S
+0054 LATIN CAPITAL LETTER T
+0055 LATIN CAPITAL LETTER U
+0056 LATIN CAPITAL LETTER V
+0057 LATIN CAPITAL LETTER W
+0058 LATIN CAPITAL LETTER X
+0059 LATIN CAPITAL LETTER Y
+005A LATIN CAPITAL LETTER Z
+ x (double-struck capital z - 2124)
+ x (black-letter capital z - 2128)
+005B LEFT SQUARE BRACKET
+ = OPENING SQUARE BRACKET
+ * other bracket characters: 3008-301B
+005C REVERSE SOLIDUS
+ = BACKSLASH
+ x (set minus - 2216)
+005D RIGHT SQUARE BRACKET
+ = CLOSING SQUARE BRACKET
+005E CIRCUMFLEX ACCENT
+ * this is a spacing character
+ x (modifier letter up arrowhead - 02C4)
+ x (modifier letter circumflex accent - 02C6)
+ x (combining circumflex accent - 0302)
+ x (up arrowhead - 2303)
+005F LOW LINE
+ = SPACING UNDERSCORE
+ * this is a spacing character
+ x (modifier letter low macron - 02CD)
+ x (combining macron below - 0331)
+ x (combining low line - 0332)
+ x (double low line - 2017)
+0060 GRAVE ACCENT
+ * this is a spacing character
+ x (modifier letter grave accent - 02CB)
+ x (combining grave accent - 0300)
+ x (reversed prime - 2035)
+0061 LATIN SMALL LETTER A
+0062 LATIN SMALL LETTER B
+0063 LATIN SMALL LETTER C
+0064 LATIN SMALL LETTER D
+0065 LATIN SMALL LETTER E
+ x (estimated symbol - 212E)
+ x (script small e - 212F)
+0066 LATIN SMALL LETTER F
+0067 LATIN SMALL LETTER G
+ x (latin small letter script g - 0261)
+ x (script small g - 210A)
+0068 LATIN SMALL LETTER H
+ x (cyrillic small letter shha - 04BB)
+ x (planck constant - 210E)
+0069 LATIN SMALL LETTER I
+ * Turkish and Azerbaijani use 0130 for uppercase
+ x (latin small letter dotless i - 0131)
+006A LATIN SMALL LETTER J
+006B LATIN SMALL LETTER K
+006C LATIN SMALL LETTER L
+ x (script small l - 2113)
+006D LATIN SMALL LETTER M
+006E LATIN SMALL LETTER N
+ x (superscript latin small letter n - 207F)
+006F LATIN SMALL LETTER O
+ x (script small o - 2134)
+0070 LATIN SMALL LETTER P
+0071 LATIN SMALL LETTER Q
+0072 LATIN SMALL LETTER R
+0073 LATIN SMALL LETTER S
+0074 LATIN SMALL LETTER T
+0075 LATIN SMALL LETTER U
+0076 LATIN SMALL LETTER V
+0077 LATIN SMALL LETTER W
+0078 LATIN SMALL LETTER X
+0079 LATIN SMALL LETTER Y
+007A LATIN SMALL LETTER Z
+ x (latin small letter z with stroke - 01B6)
+007B LEFT CURLY BRACKET
+ = OPENING CURLY BRACKET
+ = opening brace
+007C VERTICAL LINE
+ = VERTICAL BAR
+ * used in pairs to indicate absolute value
+ x (latin letter dental click - 01C0)
+ x (divides - 2223)
+ x (light vertical bar - 2758)
+007D RIGHT CURLY BRACKET
+ = CLOSING CURLY BRACKET
+ = closing brace
+007E TILDE
+ * this is a spacing character
+ x (small tilde - 02DC)
+ x (combining tilde - 0303)
+ x (tilde operator - 223C)
+ x (fullwidth tilde - FF5E)
+007F <control>
+ = DELETE
+@@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF
+@ C1 controls
+@+ Alias names are those for ISO 6429.
+0080 <control>
+0081 <control>
+0082 <control>
+ = BREAK PERMITTED HERE
+0083 <control>
+ = NO BREAK HERE
+0084 <control>
+ = INDEX
+0085 <control>
+ = NEXT LINE
+0086 <control>
+ = START OF SELECTED AREA
+0087 <control>
+ = END OF SELECTED AREA
+0088 <control>
+ = CHARACTER TABULATION SET
+0089 <control>
+ = CHARACTER TABULATION WITH JUSTIFICATION
+008A <control>
+ = LINE TABULATION SET
+008B <control>
+ = PARTIAL LINE DOWN
+008C <control>
+ = PARTIAL LINE UP
+008D <control>
+ = REVERSE LINE FEED
+008E <control>
+ = SINGLE SHIFT TWO
+008F <control>
+ = SINGLE SHIFT THREE
+0090 <control>
+ = DEVICE CONTROL STRING
+0091 <control>
+ = PRIVATE USE ONE
+0092 <control>
+ = PRIVATE USE TWO
+0093 <control>
+ = SET TRANSMIT STATE
+0094 <control>
+ = CANCEL CHARACTER
+0095 <control>
+ = MESSAGE WAITING
+0096 <control>
+ = START OF GUARDED AREA
+0097 <control>
+ = END OF GUARDED AREA
+0098 <control>
+ = START OF STRING
+0099 <control>
+009A <control>
+ = SINGLE CHARACTER INTRODUCER
+009B <control>
+ = CONTROL SEQUENCE INTRODUCER
+009C <control>
+ = STRING TERMINATOR
+009D <control>
+ = OPERATING SYSTEM COMMAND
+009E <control>
+ = PRIVACY MESSAGE
+009F <control>
+ = APPLICATION PROGRAM COMMAND
+@ ISO 8859-1 (aka Latin-1)
+00A0 NO-BREAK SPACE
+ x (space - 0020)
+ x (figure space - 2007)
+ x (narrow no-break space - 202F)
+ x (zero width no-break space - FEFF)
+ # <noBreak> 0020
+00A1 INVERTED EXCLAMATION MARK
+ * Spanish, Asturian, Galician
+ x (exclamation mark - 0021)
+00A2 CENT SIGN
+00A3 POUND SIGN
+ = pound sterling, Irish punt
+ x (lira sign - 20A4)
+00A4 CURRENCY SIGN
+ * other currency symbol characters: 20A0-20AF
+ x (dollar sign - 0024)
+00A5 YEN SIGN
+ = yuan sign
+ * glyph may have one or two crossbars
+00A6 BROKEN BAR
+ = BROKEN VERTICAL BAR
+ = parted rule (in typography)
+00A7 SECTION SIGN
+ * paragraph sign in some European usage
+00A8 DIAERESIS
+ * this is a spacing character
+ x (combining diaeresis - 0308)
+ # 0020 0308
+00A9 COPYRIGHT SIGN
+ x (sound recording copyright - 2117)
+00AA FEMININE ORDINAL INDICATOR
+ * Spanish
+ # <super> 0061
+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK *
+ = LEFT POINTING GUILLEMET
+ = chevrons (in typography)
+ * usually opening, sometimes closing
+ x (much less-than - 226A)
+ x (left double angle bracket - 300A)
+00AC NOT SIGN
+ = angled dash (in typography)
+ x (reversed not sign - 2310)
+00AD SOFT HYPHEN
+ = discretionary hyphen
+ x (mongolian todo soft hyphen - 1806)
+00AE REGISTERED SIGN
+ = REGISTERED TRADE MARK SIGN
+00AF MACRON
+ = overline, APL overbar
+ * this is a spacing character
+ x (modifier letter macron - 02C9)
+ x (combining macron - 0304)
+ x (combining overline - 0305)
+ # 0020 0304
+00B0 DEGREE SIGN
+ * this is a spacing character
+ x (ring above - 02DA)
+ x (combining ring above - 030A)
+ x (superscript zero - 2070)
+ x (ring operator - 2218)
+00B1 PLUS-MINUS SIGN
+ x (minus-or-plus sign - 2213)
+00B2 SUPERSCRIPT TWO
+ = squared
+ * other superscript digit characters: 2070-2079
+ x (superscript one - 00B9)
+ # <super> 0032
+00B3 SUPERSCRIPT THREE
+ = cubed
+ x (superscript one - 00B9)
+ # <super> 0033
+00B4 ACUTE ACCENT
+ * this is a spacing character
+ x (modifier letter prime - 02B9)
+ x (modifier letter acute accent - 02CA)
+ x (combining acute accent - 0301)
+ x (prime - 2032)
+ # 0020 0301
+00B5 MICRO SIGN
+ # 03BC greek small letter mu
+00B6 PILCROW SIGN
+ = PARAGRAPH SIGN
+ * section sign in some European usage
+ x (reversed pilcrow sign - 204B)
+ x (curved stem paragraph sign ornament - 2761)
+00B7 MIDDLE DOT
+ = midpoint (in typography)
+ = Georgian comma
+ = Greek middle dot
+ x (bullet - 2022)
+ x (one dot leader - 2024)
+ x (hyphenation point - 2027)
+ x (bullet operator - 2219)
+ x (dot operator - 22C5)
+ x (katakana middle dot - 30FB)
+00B8 CEDILLA
+ * this is a spacing character
+ * other spacing accent characters: 02D8-02DB
+ x (combining cedilla - 0327)
+ # 0020 0327
+00B9 SUPERSCRIPT ONE
+ x (superscript two - 00B2)
+ x (superscript three - 00B3)
+ # <super> 0031
+00BA MASCULINE ORDINAL INDICATOR
+ * Spanish
+ # <super> 006F
+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *
+ = RIGHT POINTING GUILLEMET
+ * usually closing, sometimes opening
+ x (much greater-than - 226B)
+ x (right double angle bracket - 300B)
+00BC VULGAR FRACTION ONE QUARTER
+ * bar may be horizontal or slanted
+ * other fraction characters: 2153-215E
+ # 0031 2044 0034
+00BD VULGAR FRACTION ONE HALF
+ * bar may be horizontal or slanted
+ # 0031 2044 0032
+00BE VULGAR FRACTION THREE QUARTERS
+ * bar may be horizontal or slanted
+ # 0033 2044 0034
+00BF INVERTED QUESTION MARK
+ = turned question mark
+ * Spanish
+ x (question mark - 003F)
+00C0 LATIN CAPITAL LETTER A WITH GRAVE
+ : 0041 0300
+00C1 LATIN CAPITAL LETTER A WITH ACUTE
+ : 0041 0301
+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ : 0041 0302
+00C3 LATIN CAPITAL LETTER A WITH TILDE
+ : 0041 0303
+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+ : 0041 0308
+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+ x (angstrom sign - 212B)
+ : 0041 030A
+00C6 LATIN CAPITAL LETTER AE (ash) *
+ = LATIN CAPITAL LIGATURE AE
+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+ : 0043 0327
+00C8 LATIN CAPITAL LETTER E WITH GRAVE
+ : 0045 0300
+00C9 LATIN CAPITAL LETTER E WITH ACUTE
+ : 0045 0301
+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ : 0045 0302
+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+ : 0045 0308
+00CC LATIN CAPITAL LETTER I WITH GRAVE
+ : 0049 0300
+00CD LATIN CAPITAL LETTER I WITH ACUTE
+ : 0049 0301
+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ : 0049 0302
+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+ : 0049 0308
+00D0 LATIN CAPITAL LETTER ETH (Icelandic)
+ x (latin small letter eth - 00F0)
+ x (latin capital letter d with stroke - 0110)
+ x (latin capital letter african d - 0189)
+00D1 LATIN CAPITAL LETTER N WITH TILDE
+ : 004E 0303
+00D2 LATIN CAPITAL LETTER O WITH GRAVE
+ : 004F 0300
+00D3 LATIN CAPITAL LETTER O WITH ACUTE
+ : 004F 0301
+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ : 004F 0302
+00D5 LATIN CAPITAL LETTER O WITH TILDE
+ : 004F 0303
+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+ : 004F 0308
+00D7 MULTIPLICATION SIGN
+ = z notation Cartesian product
+00D8 LATIN CAPITAL LETTER O WITH STROKE
+ = LATIN CAPITAL LETTER O SLASH
+ x (empty set - 2205)
+00D9 LATIN CAPITAL LETTER U WITH GRAVE
+ : 0055 0300
+00DA LATIN CAPITAL LETTER U WITH ACUTE
+ : 0055 0301
+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ : 0055 0302
+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+ : 0055 0308
+00DD LATIN CAPITAL LETTER Y WITH ACUTE
+ : 0059 0301
+00DE LATIN CAPITAL LETTER THORN (Icelandic)
+00DF LATIN SMALL LETTER SHARP S (German)
+ = Eszett
+ * German
+ * uppercase is "SS"
+ * in origin a ligature of 017F and 0073
+ x (greek small letter beta - 03B2)
+00E0 LATIN SMALL LETTER A WITH GRAVE
+ : 0061 0300
+00E1 LATIN SMALL LETTER A WITH ACUTE
+ : 0061 0301
+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+ : 0061 0302
+00E3 LATIN SMALL LETTER A WITH TILDE
+ * Portuguese
+ : 0061 0303
+00E4 LATIN SMALL LETTER A WITH DIAERESIS
+ : 0061 0308
+00E5 LATIN SMALL LETTER A WITH RING ABOVE
+ * Danish, Norwegian, Swedish, Walloon
+ : 0061 030A
+00E6 LATIN SMALL LETTER AE (ash) *
+ = LATIN SMALL LIGATURE AE
+ = ash (from Old English æsc)
+ * Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA
+ x (latin small ligature oe - 0153)
+ x (cyrillic small ligature a ie - 04D5)
+00E7 LATIN SMALL LETTER C WITH CEDILLA
+ : 0063 0327
+00E8 LATIN SMALL LETTER E WITH GRAVE
+ : 0065 0300
+00E9 LATIN SMALL LETTER E WITH ACUTE
+ : 0065 0301
+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+ : 0065 0302
+00EB LATIN SMALL LETTER E WITH DIAERESIS
+ : 0065 0308
+00EC LATIN SMALL LETTER I WITH GRAVE
+ * Italian, Malagasy
+ : 0069 0300
+00ED LATIN SMALL LETTER I WITH ACUTE
+ : 0069 0301
+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+ : 0069 0302
+00EF LATIN SMALL LETTER I WITH DIAERESIS
+ : 0069 0308
+00F0 LATIN SMALL LETTER ETH (Icelandic)
+ * Icelandic, Faroese, Old English, IPA
+ x (latin capital letter eth - 00D0)
+ x (greek small letter delta - 03B4)
+ x (partial differential - 2202)
+00F1 LATIN SMALL LETTER N WITH TILDE
+ : 006E 0303
+00F2 LATIN SMALL LETTER O WITH GRAVE
+ : 006F 0300
+00F3 LATIN SMALL LETTER O WITH ACUTE
+ : 006F 0301
+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+ : 006F 0302
+00F5 LATIN SMALL LETTER O WITH TILDE
+ * Portuguese, Estonian
+ : 006F 0303
+00F6 LATIN SMALL LETTER O WITH DIAERESIS
+ : 006F 0308
+00F7 DIVISION SIGN
+00F8 LATIN SMALL LETTER O WITH STROKE
+ = LATIN SMALL LETTER O SLASH
+ * Danish, Norwegian, Faroese, IPA
+00F9 LATIN SMALL LETTER U WITH GRAVE
+ * French, Italian
+ : 0075 0300
+00FA LATIN SMALL LETTER U WITH ACUTE
+ : 0075 0301
+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
+ : 0075 0302
+00FC LATIN SMALL LETTER U WITH DIAERESIS
+ : 0075 0308
+00FD LATIN SMALL LETTER Y WITH ACUTE
+ * Czech, Slovak, Icelandic, Faroese, Welsh, Malagasy
+ : 0079 0301
+00FE LATIN SMALL LETTER THORN (Icelandic)
+ * Icelandic, Old English, phonetics
+ * Runic letter borrowed into Latin script
+ x (runic letter thurisaz thurs thorn - 16A6)
+00FF LATIN SMALL LETTER Y WITH DIAERESIS
+ * French
+ x (latin capital letter y with diaeresis - 0178)
+ : 0079 0308
+@@ 0100 Latin Extended-A 017F
+@ European Latin
+0100 LATIN CAPITAL LETTER A WITH MACRON
+ : 0041 0304
+0101 LATIN SMALL LETTER A WITH MACRON
+ * Latvian, Latin, ...
+ : 0061 0304
+0102 LATIN CAPITAL LETTER A WITH BREVE
+ : 0041 0306
+0103 LATIN SMALL LETTER A WITH BREVE
+ * Romanian, Vietnamese, Latin, ...
+ : 0061 0306
+0104 LATIN CAPITAL LETTER A WITH OGONEK
+ : 0041 0328
+0105 LATIN SMALL LETTER A WITH OGONEK
+ * Polish, Lithuanian, ...
+ : 0061 0328
+0106 LATIN CAPITAL LETTER C WITH ACUTE
+ : 0043 0301
+0107 LATIN SMALL LETTER C WITH ACUTE
+ * Polish, Croatian, ...
+ x (cyrillic small letter tshe - 045B)
+ : 0063 0301
+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ : 0043 0302
+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
+ * Esperanto
+ : 0063 0302
+010A LATIN CAPITAL LETTER C WITH DOT ABOVE
+ : 0043 0307
+010B LATIN SMALL LETTER C WITH DOT ABOVE
+ * Maltese, Irish Gaelic (old orthography)
+ : 0063 0307
+010C LATIN CAPITAL LETTER C WITH CARON
+ : 0043 030C
+010D LATIN SMALL LETTER C WITH CARON
+ * Czech, Slovak, Slovenian, and many other languages
+ : 0063 030C
+010E LATIN CAPITAL LETTER D WITH CARON
+ * the form using caron/hacek is preferred in all contexts
+ : 0044 030C
+010F LATIN SMALL LETTER D WITH CARON
+ * Czech, Slovak
+ * the form using apostrophe is preferred in typesetting
+ : 0064 030C
+0110 LATIN CAPITAL LETTER D WITH STROKE
+ x (latin capital letter eth - 00D0)
+ x (latin small letter d with stroke - 0111)
+ x (latin capital letter african d - 0189)
+0111 LATIN SMALL LETTER D WITH STROKE
+ * Croatian, Vietnamese, Sámi
+ x (latin capital letter d with stroke - 0110)
+ x (cyrillic small letter dje - 0452)
+0112 LATIN CAPITAL LETTER E WITH MACRON
+ : 0045 0304
+0113 LATIN SMALL LETTER E WITH MACRON
+ * Latvian, Latin, ...
+ : 0065 0304
+0114 LATIN CAPITAL LETTER E WITH BREVE
+ : 0045 0306
+0115 LATIN SMALL LETTER E WITH BREVE
+ * Malay, Latin, ...
+ : 0065 0306
+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
+ : 0045 0307
+0117 LATIN SMALL LETTER E WITH DOT ABOVE
+ * Lithuanian
+ : 0065 0307
+0118 LATIN CAPITAL LETTER E WITH OGONEK
+ : 0045 0328
+0119 LATIN SMALL LETTER E WITH OGONEK
+ * Polish, Lithuanian, ...
+ : 0065 0328
+011A LATIN CAPITAL LETTER E WITH CARON
+ : 0045 030C
+011B LATIN SMALL LETTER E WITH CARON
+ * Czech, ...
+ : 0065 030C
+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ : 0047 0302
+011D LATIN SMALL LETTER G WITH CIRCUMFLEX
+ * Esperanto
+ : 0067 0302
+011E LATIN CAPITAL LETTER G WITH BREVE
+ : 0047 0306
+011F LATIN SMALL LETTER G WITH BREVE
+ * Turkish, Azerbaijani
+ x (latin small letter g with caron - 01E7)
+ : 0067 0306
+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE
+ : 0047 0307
+0121 LATIN SMALL LETTER G WITH DOT ABOVE
+ * Maltese, Irish Gaelic (old orthography)
+ : 0067 0307
+0122 LATIN CAPITAL LETTER G WITH CEDILLA
+ : 0047 0327
+0123 LATIN SMALL LETTER G WITH CEDILLA
+ * Latvian
+ * there are three major glyph variants
+ : 0067 0327
+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ : 0048 0302
+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX
+ * Esperanto
+ : 0068 0302
+0126 LATIN CAPITAL LETTER H WITH STROKE
+0127 LATIN SMALL LETTER H WITH STROKE
+ * Maltese, IPA, ...
+ x (cyrillic small letter tshe - 045B)
+ x (planck constant over two pi - 210F)
+0128 LATIN CAPITAL LETTER I WITH TILDE
+ : 0049 0303
+0129 LATIN SMALL LETTER I WITH TILDE
+ * Greenlandic (old orthography)
+ : 0069 0303
+012A LATIN CAPITAL LETTER I WITH MACRON
+ : 0049 0304
+012B LATIN SMALL LETTER I WITH MACRON
+ * Latvian, Latin, ...
+ : 0069 0304
+012C LATIN CAPITAL LETTER I WITH BREVE
+ : 0049 0306
+012D LATIN SMALL LETTER I WITH BREVE
+ * Latin, ...
+ : 0069 0306
+012E LATIN CAPITAL LETTER I WITH OGONEK
+ : 0049 0328
+012F LATIN SMALL LETTER I WITH OGONEK
+ * Lithuanian, ...
+ : 0069 0328
+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
+ = LATIN CAPITAL LETTER I DOT
+ * Turkish, Azerbaijani
+ * lowercase is 0069
+ x (latin capital letter i - 0049)
+ : 0049 0307
+0131 LATIN SMALL LETTER DOTLESS I
+ * Turkish, Azerbaijani
+ * uppercase is 0049
+ x (latin small letter i - 0069)
+0132 LATIN CAPITAL LIGATURE IJ
+ # 0049 004A
+0133 LATIN SMALL LIGATURE IJ
+ * Dutch
+ # 0069 006A
+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ : 004A 0302
+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
+ * Esperanto
+ : 006A 0302
+0136 LATIN CAPITAL LETTER K WITH CEDILLA
+ : 004B 0327
+0137 LATIN SMALL LETTER K WITH CEDILLA
+ * Latvian
+ : 006B 0327
+0138 LATIN SMALL LETTER KRA (Greenlandic)
+ * Greenlandic (old orthography)
+0139 LATIN CAPITAL LETTER L WITH ACUTE
+ : 004C 0301
+013A LATIN SMALL LETTER L WITH ACUTE
+ * Slovak
+ : 006C 0301
+013B LATIN CAPITAL LETTER L WITH CEDILLA
+ : 004C 0327
+013C LATIN SMALL LETTER L WITH CEDILLA
+ * Latvian
+ : 006C 0327
+013D LATIN CAPITAL LETTER L WITH CARON
+ : 004C 030C
+013E LATIN SMALL LETTER L WITH CARON
+ * Slovak
+ * the form using apostrophe is preferred in typesetting
+ : 006C 030C
+013F LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ * some fonts show the middle dot inside the L, but the preferred form has the dot following the L
+ # 004C 00B7
+0140 LATIN SMALL LETTER L WITH MIDDLE DOT
+ * Catalan
+ # 006C 00B7
+0141 LATIN CAPITAL LETTER L WITH STROKE
+0142 LATIN SMALL LETTER L WITH STROKE
+ * Polish, ...
+ x (latin small letter l with bar - 019A)
+0143 LATIN CAPITAL LETTER N WITH ACUTE
+ : 004E 0301
+0144 LATIN SMALL LETTER N WITH ACUTE
+ * Polish, ...
+ : 006E 0301
+0145 LATIN CAPITAL LETTER N WITH CEDILLA
+ : 004E 0327
+0146 LATIN SMALL LETTER N WITH CEDILLA
+ * Latvian
+ : 006E 0327
+0147 LATIN CAPITAL LETTER N WITH CARON
+ : 004E 030C
+0148 LATIN SMALL LETTER N WITH CARON
+ * Czech, Slovak
+ : 006E 030C
+0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ = LATIN SMALL LETTER APOSTROPHE N
+ * Afrikaans
+ * this is not actually a single letter
+ # 02BC 006E
+014A LATIN CAPITAL LETTER ENG (Sami)
+ * glyph may also have appearance of large form of the small letter
+014B LATIN SMALL LETTER ENG (Sami)
+ * Sámi, Mende, IPA, ...
+014C LATIN CAPITAL LETTER O WITH MACRON
+ : 004F 0304
+014D LATIN SMALL LETTER O WITH MACRON
+ * Latvian, Latin, ...
+ : 006F 0304
+014E LATIN CAPITAL LETTER O WITH BREVE
+ : 004F 0306
+014F LATIN SMALL LETTER O WITH BREVE
+ * Latin
+ : 006F 0306
+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ : 004F 030B
+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ * Hungarian
+ : 006F 030B
+0152 LATIN CAPITAL LIGATURE OE
+0153 LATIN SMALL LIGATURE OE
+ = LATIN SMALL LETTER O E
+ = ethel (from Old English eðel)
+ * French, IPA, Old Icelandic, Old English, ...
+ x (latin small letter ae - 00E6)
+ x (latin letter small capital oe - 0276)
+0154 LATIN CAPITAL LETTER R WITH ACUTE
+ : 0052 0301
+0155 LATIN SMALL LETTER R WITH ACUTE
+ * Slovak, ...
+ : 0072 0301
+0156 LATIN CAPITAL LETTER R WITH CEDILLA
+ : 0052 0327
+0157 LATIN SMALL LETTER R WITH CEDILLA
+ * Latvian
+ : 0072 0327
+0158 LATIN CAPITAL LETTER R WITH CARON
+ : 0052 030C
+0159 LATIN SMALL LETTER R WITH CARON
+ * Czech, ...
+ : 0072 030C
+015A LATIN CAPITAL LETTER S WITH ACUTE
+ : 0053 0301
+015B LATIN SMALL LETTER S WITH ACUTE
+ * Polish, Indic transliteration, ...
+ : 0073 0301
+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ : 0053 0302
+015D LATIN SMALL LETTER S WITH CIRCUMFLEX
+ * Esperanto
+ : 0073 0302
+015E LATIN CAPITAL LETTER S WITH CEDILLA *
+ : 0053 0327
+015F LATIN SMALL LETTER S WITH CEDILLA *
+ * Turkish, Azerbaijani, Romanian, ...
+ * this character is used in both Turkish and Romanian data
+ * a glyph variant with comma below is preferred for Romanian
+ x (latin small letter s with comma below - 0219)
+ : 0073 0327
+0160 LATIN CAPITAL LETTER S WITH CARON
+ : 0053 030C
+0161 LATIN SMALL LETTER S WITH CARON
+ * Czech, Estonian, Finnish, Slovak, and many other languages
+ : 0073 030C
+0162 LATIN CAPITAL LETTER T WITH CEDILLA *
+ : 0054 0327
+0163 LATIN SMALL LETTER T WITH CEDILLA *
+ * Romanian, Semitic transliteration, ...
+ * this character is used in Romanian data
+ * a glyph variant with comma below is preferred for Romanian
+ x (latin small letter t with comma below - 021B)
+ : 0074 0327
+0164 LATIN CAPITAL LETTER T WITH CARON
+ * the form using caron/hacek is preferred in all contexts
+ : 0054 030C
+0165 LATIN SMALL LETTER T WITH CARON
+ * Czech, Slovak
+ * the form using apostrophe is preferred in typesetting
+ : 0074 030C
+0166 LATIN CAPITAL LETTER T WITH STROKE
+0167 LATIN SMALL LETTER T WITH STROKE
+ * Sámi
+0168 LATIN CAPITAL LETTER U WITH TILDE
+ : 0055 0303
+0169 LATIN SMALL LETTER U WITH TILDE
+ * Greenlandic (old orthography)
+ : 0075 0303
+016A LATIN CAPITAL LETTER U WITH MACRON
+ : 0055 0304
+016B LATIN SMALL LETTER U WITH MACRON
+ * Latvian, Lithuanian, Latin, ...
+ : 0075 0304
+016C LATIN CAPITAL LETTER U WITH BREVE
+ : 0055 0306
+016D LATIN SMALL LETTER U WITH BREVE
+ * Latin, Esperanto, ...
+ : 0075 0306
+016E LATIN CAPITAL LETTER U WITH RING ABOVE
+ : 0055 030A
+016F LATIN SMALL LETTER U WITH RING ABOVE
+ * Czech, ...
+ : 0075 030A
+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ : 0055 030B
+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ * Hungarian
+ : 0075 030B
+0172 LATIN CAPITAL LETTER U WITH OGONEK
+ : 0055 0328
+0173 LATIN SMALL LETTER U WITH OGONEK
+ * Lithuanian
+ : 0075 0328
+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ : 0057 0302
+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
+ * Welsh
+ : 0077 0302
+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ : 0059 0302
+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ * Welsh
+ : 0079 0302
+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+ * French, Igbo
+ x (latin small letter y with diaeresis - 00FF)
+ : 0059 0308
+0179 LATIN CAPITAL LETTER Z WITH ACUTE
+ : 005A 0301
+017A LATIN SMALL LETTER Z WITH ACUTE
+ * Polish, ...
+ : 007A 0301
+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ : 005A 0307
+017C LATIN SMALL LETTER Z WITH DOT ABOVE
+ * Polish, ...
+ : 007A 0307
+017D LATIN CAPITAL LETTER Z WITH CARON
+ : 005A 030C
+017E LATIN SMALL LETTER Z WITH CARON
+ * Czech, Estonian, Finnish, Slovak, Slovenian, and many other languages
+ : 007A 030C
+017F LATIN SMALL LETTER LONG S
+ * in common use in Roman types until the 18th century
+ * in current use in Fraktur and Gaelic types
+ # 0073 latin small letter s
+@@ 0180 Latin Extended-B 024F
+@ Latin extended-B
+0180 LATIN SMALL LETTER B WITH STROKE
+ * Americanist and Indo-Europeanist usage for phonetic beta
+ * Old Saxon
+ x (greek small letter beta - 03B2)
+ x (blank symbol - 2422)
+0181 LATIN CAPITAL LETTER B WITH HOOK
+ * Zulu, Pan-Nigerian alphabet
+ x (latin small letter b with hook - 0253)
+0182 LATIN CAPITAL LETTER B WITH TOPBAR
+0183 LATIN SMALL LETTER B WITH TOPBAR
+ * Zhuang
+ * former Soviet minority language scripts
+ x (cyrillic capital letter be - 0411)
+0184 LATIN CAPITAL LETTER TONE SIX
+0185 LATIN SMALL LETTER TONE SIX
+ * Zhuang
+ * Zhuang tone three is Cyrillic ze
+ * Zhuang tone four is Cyrillic che
+ x (latin small letter tone two - 01A8)
+ x (latin small letter tone five - 01BD)
+ x (cyrillic small letter ze - 0437)
+ x (cyrillic small letter che - 0447)
+ x (cyrillic small letter soft sign - 044C)
+0186 LATIN CAPITAL LETTER OPEN O
+ * typographically a turned C
+ x (latin small letter open o - 0254)
+0187 LATIN CAPITAL LETTER C WITH HOOK
+0188 LATIN SMALL LETTER C WITH HOOK
+ * African
+0189 LATIN CAPITAL LETTER AFRICAN D *
+ * Ewe
+ x (latin capital letter eth - 00D0)
+ x (latin capital letter d with stroke - 0110)
+ x (latin small letter d with tail - 0256)
+018A LATIN CAPITAL LETTER D WITH HOOK
+ * Pan-Nigerian alphabet
+ x (latin small letter d with hook - 0257)
+018B LATIN CAPITAL LETTER D WITH TOPBAR
+018C LATIN SMALL LETTER D WITH TOPBAR
+ * former-Soviet minority language scripts
+018D LATIN SMALL LETTER TURNED DELTA
+ * archaic phonetic for labialized dental fricative
+ * recommended spellings 007A 02B7 or 007A 032B
+018E LATIN CAPITAL LETTER REVERSED E
+ = LATIN CAPITAL LETTER TURNED E
+ * Pan-Nigerian alphabet
+ * lowercase is 01DD
+018F LATIN CAPITAL LETTER SCHWA
+ * Azerbaijani, ...
+ x (latin small letter schwa - 0259)
+ x (cyrillic capital letter schwa - 04D8)
+0190 LATIN CAPITAL LETTER OPEN E
+ = LATIN CAPITAL LETTER EPSILON
+ * African
+ x (latin small letter open e - 025B)
+ x (euler constant - 2107)
+0191 LATIN CAPITAL LETTER F WITH HOOK
+ * African
+0192 LATIN SMALL LETTER F WITH HOOK
+ = LATIN SMALL LETTER SCRIPT F
+ = Florin currency symbol (Netherlands)
+ = function symbol
+ = abbreviation convention for folder
+0193 LATIN CAPITAL LETTER G WITH HOOK
+ * African
+ x (latin small letter g with hook - 0260)
+0194 LATIN CAPITAL LETTER GAMMA
+ * African
+ x (latin small letter gamma - 0263)
+0195 LATIN SMALL LETTER HV (hwair)
+ * Gothic transliteration
+ * uppercase is 01F6
+0196 LATIN CAPITAL LETTER IOTA
+ * African
+ x (latin small letter iota - 0269)
+0197 LATIN CAPITAL LETTER I WITH STROKE
+ = barred i, i bar
+ * African
+ * ISO 6438 gives lowercase as 026A, not 0268
+ x (latin letter small capital i - 026A)
+0198 LATIN CAPITAL LETTER K WITH HOOK
+0199 LATIN SMALL LETTER K WITH HOOK
+ * Hausa, Pan-Nigerian alphabet
+019A LATIN SMALL LETTER L WITH BAR
+ = barred l
+ * Americanist phonetic usage for 026C
+ x (latin small letter l with stroke - 0142)
+019B LATIN SMALL LETTER LAMBDA WITH STROKE
+ = barred lambda, lambda bar
+ * Americanist phonetic usage
+019C LATIN CAPITAL LETTER TURNED M
+ * Zhuang
+ x (latin small letter turned m - 026F)
+019D LATIN CAPITAL LETTER N WITH LEFT HOOK
+ * African
+ x (latin small letter n with left hook - 0272)
+019E LATIN SMALL LETTER N WITH LONG RIGHT LEG
+ * archaic phonetic for Japanese syllabic "n"
+ * recommended spelling 006E 0329
+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE *
+ = barred o, o bar
+ * lowercase is 0275
+ * African
+ x (cyrillic capital letter barred o - 04E8)
+01A0 LATIN CAPITAL LETTER O WITH HORN
+ : 004F 031B
+01A1 LATIN SMALL LETTER O WITH HORN
+ * Vietnamese
+ : 006F 031B
+01A2 LATIN CAPITAL LETTER OI (gha)
+01A3 LATIN SMALL LETTER OI (gha)
+ = gha
+ * Pan-Turkic Latin alphabets
+01A4 LATIN CAPITAL LETTER P WITH HOOK
+01A5 LATIN SMALL LETTER P WITH HOOK
+ * African
+01A6 LATIN LETTER YR
+ * old Norse
+ * from German Standard DIN 31624 and ISO 5246-2
+ * lowercase is 0280
+01A7 LATIN CAPITAL LETTER TONE TWO
+01A8 LATIN SMALL LETTER TONE TWO
+ * Zhuang
+ * typographically a reversed S
+ x (latin small letter tone six - 0185)
+01A9 LATIN CAPITAL LETTER ESH
+ * African
+ x (latin small letter esh - 0283)
+ x (greek capital letter sigma - 03A3)
+01AA LATIN LETTER REVERSED ESH LOOP
+ * archaic phonetic for labialized palatoalveolar or palatal fricative
+ * Twi
+ * recommended spellings 0283 02B7, 00E7 02B7, 0068 0265, etc.
+01AB LATIN SMALL LETTER T WITH PALATAL HOOK
+ * archaic phonetic for palatalized alveolar or dental stop
+ * recommended spelling 0074 02B2
+01AC LATIN CAPITAL LETTER T WITH HOOK
+01AD LATIN SMALL LETTER T WITH HOOK
+ * African
+01AE LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+ * African
+ x (latin small letter t with retroflex hook - 0288)
+01AF LATIN CAPITAL LETTER U WITH HORN
+ : 0055 031B
+01B0 LATIN SMALL LETTER U WITH HORN
+ * Vietnamese
+ : 0075 031B
+01B1 LATIN CAPITAL LETTER UPSILON
+ * African
+ * typographically based on turned capital Greek omega
+ x (latin small letter upsilon - 028A)
+ x (inverted ohm sign - 2127)
+01B2 LATIN CAPITAL LETTER V WITH HOOK
+ = LATIN CAPITAL LETTER SCRIPT V
+ * African
+ x (latin small letter v with hook - 028B)
+01B3 LATIN CAPITAL LETTER Y WITH HOOK
+01B4 LATIN SMALL LETTER Y WITH HOOK
+ * Bini, Esoko, and other Edo languages in West Africa
+01B5 LATIN CAPITAL LETTER Z WITH STROKE
+01B6 LATIN SMALL LETTER Z WITH STROKE
+ = barred z, z bar
+ * Pan-Turkic Latin orthography
+ * handwritten variant of Latin "z"
+ x (latin small letter z - 007A)
+01B7 LATIN CAPITAL LETTER EZH
+ * African, Skolt Sámi
+ * lowercase is 0292
+ x (latin capital letter yogh - 021C)
+ x (cyrillic capital letter abkhasian dze - 04E0)
+01B8 LATIN CAPITAL LETTER EZH REVERSED
+01B9 LATIN SMALL LETTER EZH REVERSED
+ * archaic phonetic for voiced pharyngeal fricative
+ * sometimes typographically rendered with a turned digit 3
+ * recommended spelling 0295
+ x (latin letter pharyngeal voiced fricative - 0295)
+ x (arabic letter ain - 0639)
+01BA LATIN SMALL LETTER EZH WITH TAIL
+ * archaic phonetic for labialized voiced palatoalveolar or palatal fricative
+ * Twi
+ * recommended spellings 0292 02B7 or 006A 02B7
+01BB LATIN LETTER TWO WITH STROKE
+ * archaic phonetic for [dz] affricate
+ * recommended spellings 0292 or 0064 007A
+01BC LATIN CAPITAL LETTER TONE FIVE
+01BD LATIN SMALL LETTER TONE FIVE
+ * Zhuang
+ x (latin small letter tone six - 0185)
+01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+ * archaic phonetic for [ts] affricate
+ * recommended spelling 0074 0073
+ * letter form is actually derived from ligation of ts, rather than inverted glottal stop
+01BF LATIN LETTER WYNN
+ = wen
+ * Runic letter borrowed into Latin script
+ * replaced by "w" in modern transcriptions of Old English
+ * uppercase is 01F7
+ x (runic letter wunjo wynn w - 16B9)
+01C0 LATIN LETTER DENTAL CLICK
+ = pipe
+ * Khoisan tradition
+ * "c" in Zulu orthography
+ x (solidus - 002F)
+ x (vertical line - 007C)
+ x (latin small letter turned t - 0287)
+ x (divides - 2223)
+01C1 LATIN LETTER LATERAL CLICK
+ = double pipe
+ * Khoisan tradition
+ * "x" in Zulu orthography
+ x (latin letter inverted glottal stop - 0296)
+ x (parallel to - 2225)
+01C2 LATIN LETTER ALVEOLAR CLICK
+ = double-barred pipe
+ * Khoisan tradition
+ x (not equal to - 2260)
+01C3 LATIN LETTER RETROFLEX CLICK
+ = LATIN LETTER EXCLAMATION MARK
+ * Khoisan tradition
+ * "q" in Zulu orthography
+ x (exclamation mark - 0021)
+ x (latin letter stretched c - 0297)
+@ Croatian digraphs matching Serbian Cyrillic letters
+01C4 LATIN CAPITAL LETTER DZ WITH CARON
+ # 0044 017D
+01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+ # 0044 017E
+01C6 LATIN SMALL LETTER DZ WITH CARON
+ x (cyrillic small letter dzhe - 045F)
+ # 0064 017E
+01C7 LATIN CAPITAL LETTER LJ
+ # 004C 004A
+01C8 LATIN CAPITAL LETTER L WITH SMALL LETTER J
+ # 004C 006A
+01C9 LATIN SMALL LETTER LJ
+ x (cyrillic small letter lje - 0459)
+ # 006C 006A
+01CA LATIN CAPITAL LETTER NJ
+ # 004E 004A
+01CB LATIN CAPITAL LETTER N WITH SMALL LETTER J
+ # 004E 006A
+01CC LATIN SMALL LETTER NJ
+ x (cyrillic small letter nje - 045A)
+ # 006E 006A
+@ Pinyin diacritic-vowel combinations
+01CD LATIN CAPITAL LETTER A WITH CARON
+ : 0041 030C
+01CE LATIN SMALL LETTER A WITH CARON
+ * Pinyin third tone
+ : 0061 030C
+01CF LATIN CAPITAL LETTER I WITH CARON
+ : 0049 030C
+01D0 LATIN SMALL LETTER I WITH CARON
+ * Pinyin third tone
+ : 0069 030C
+01D1 LATIN CAPITAL LETTER O WITH CARON
+ : 004F 030C
+01D2 LATIN SMALL LETTER O WITH CARON
+ * Pinyin third tone
+ : 006F 030C
+01D3 LATIN CAPITAL LETTER U WITH CARON
+ : 0055 030C
+01D4 LATIN SMALL LETTER U WITH CARON
+ * Pinyin third tone
+ : 0075 030C
+01D5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ : 00DC 0304
+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+ * Pinyin first tone
+ : 00FC 0304
+01D7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ : 00DC 0301
+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+ * Pinyin second tone
+ : 00FC 0301
+01D9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ : 00DC 030C
+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+ * Pinyin third tone
+ : 00FC 030C
+01DB LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ : 00DC 0300
+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ * Pinyin fourth tone
+ : 00FC 0300
+@ Additions
+01DD LATIN SMALL LETTER TURNED E
+ * Pan-Nigerian alphabet
+ * all other usages of schwa are 0259
+ * uppercase is 018E
+ x (latin small letter schwa - 0259)
+01DE LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ : 00C4 0304
+01DF LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+ * Livonian, Uralicist usage
+ : 00E4 0304
+01E0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ : 0226 0304
+01E1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+ * Uralicist usage
+ : 0227 0304
+01E2 LATIN CAPITAL LETTER AE WITH MACRON (ash) *
+ : 00C6 0304
+01E3 LATIN SMALL LETTER AE WITH MACRON (ash) *
+ * Old Norse, Old English
+ : 00E6 0304
+01E4 LATIN CAPITAL LETTER G WITH STROKE
+01E5 LATIN SMALL LETTER G WITH STROKE
+ * Skolt Sámi
+01E6 LATIN CAPITAL LETTER G WITH CARON
+ : 0047 030C
+01E7 LATIN SMALL LETTER G WITH CARON
+ * Skolt Sámi
+ x (latin small letter g with breve - 011F)
+ : 0067 030C
+01E8 LATIN CAPITAL LETTER K WITH CARON
+ : 004B 030C
+01E9 LATIN SMALL LETTER K WITH CARON
+ * Skolt Sámi
+ : 006B 030C
+01EA LATIN CAPITAL LETTER O WITH OGONEK
+ : 004F 0328
+01EB LATIN SMALL LETTER O WITH OGONEK
+ * Sámi, Iroquoian, Old Icelandic
+ : 006F 0328
+01EC LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ : 01EA 0304
+01ED LATIN SMALL LETTER O WITH OGONEK AND MACRON
+ * Old Icelandic
+ : 01EB 0304
+01EE LATIN CAPITAL LETTER EZH WITH CARON
+ : 01B7 030C
+01EF LATIN SMALL LETTER EZH WITH CARON
+ * Skolt Sámi
+ : 0292 030C
+01F0 LATIN SMALL LETTER J WITH CARON
+ * IPA and many languages
+ : 006A 030C
+01F1 LATIN CAPITAL LETTER DZ
+ # 0044 005A
+01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+ # 0044 007A
+01F3 LATIN SMALL LETTER DZ
+ # 0064 007A
+01F4 LATIN CAPITAL LETTER G WITH ACUTE
+ : 0047 0301
+01F5 LATIN SMALL LETTER G WITH ACUTE
+ : 0067 0301
+01F6 LATIN CAPITAL LETTER HWAIR
+ * lowercase is 0195
+01F7 LATIN CAPITAL LETTER WYNN
+ = wen
+ * lowercase is 01BF
+01F8 LATIN CAPITAL LETTER N WITH GRAVE
+ : 004E 0300
+01F9 LATIN SMALL LETTER N WITH GRAVE
+ * Pinyin
+ : 006E 0300
+01FA LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ : 00C5 0301
+01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ : 00E5 0301
+01FC LATIN CAPITAL LETTER AE WITH ACUTE (ash) *
+ : 00C6 0301
+01FD LATIN SMALL LETTER AE WITH ACUTE (ash) *
+ : 00E6 0301
+01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ : 00D8 0301
+01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ : 00F8 0301
+@ Additions for Slovenian and Croatian
+0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ : 0041 030F
+0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE
+ : 0061 030F
+0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ : 0041 0311
+0203 LATIN SMALL LETTER A WITH INVERTED BREVE
+ : 0061 0311
+0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ : 0045 030F
+0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE
+ : 0065 030F
+0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ : 0045 0311
+0207 LATIN SMALL LETTER E WITH INVERTED BREVE
+ : 0065 0311
+0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ : 0049 030F
+0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE
+ : 0069 030F
+020A LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ : 0049 0311
+020B LATIN SMALL LETTER I WITH INVERTED BREVE
+ : 0069 0311
+020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ : 004F 030F
+020D LATIN SMALL LETTER O WITH DOUBLE GRAVE
+ : 006F 030F
+020E LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ : 004F 0311
+020F LATIN SMALL LETTER O WITH INVERTED BREVE
+ : 006F 0311
+0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ : 0052 030F
+0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE
+ : 0072 030F
+0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ : 0052 0311
+0213 LATIN SMALL LETTER R WITH INVERTED BREVE
+ : 0072 0311
+0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ : 0055 030F
+0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE
+ : 0075 030F
+0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ : 0055 0311
+0217 LATIN SMALL LETTER U WITH INVERTED BREVE
+ : 0075 0311
+@ Additions for Romanian
+0218 LATIN CAPITAL LETTER S WITH COMMA BELOW *
+ : 0053 0326
+0219 LATIN SMALL LETTER S WITH COMMA BELOW *
+ * Romanian, when distinct comma below form is required
+ x (latin small letter s with cedilla - 015F)
+ : 0073 0326
+021A LATIN CAPITAL LETTER T WITH COMMA BELOW *
+ : 0054 0326
+021B LATIN SMALL LETTER T WITH COMMA BELOW *
+ * Romanian, when distinct comma below form is required
+ x (latin small letter t with cedilla - 0163)
+ : 0074 0326
+@ Miscellaneous additions
+021C LATIN CAPITAL LETTER YOGH
+ x (latin capital letter ezh - 01B7)
+021D LATIN SMALL LETTER YOGH
+ * Middle English, Scots
+ x (latin small letter ezh - 0292)
+ x (ounce sign - 2125)
+021E LATIN CAPITAL LETTER H WITH CARON
+ : 0048 030C
+021F LATIN SMALL LETTER H WITH CARON
+ * Finnish Romany
+ : 0068 030C
+0222 LATIN CAPITAL LETTER OU
+0223 LATIN SMALL LETTER OU
+ * Algonquin, Huron
+ x (digit eight - 0038)
+0224 LATIN CAPITAL LETTER Z WITH HOOK
+0225 LATIN SMALL LETTER Z WITH HOOK
+ * Middle High German
+0226 LATIN CAPITAL LETTER A WITH DOT ABOVE
+ : 0041 0307
+0227 LATIN SMALL LETTER A WITH DOT ABOVE
+ * Uralicist usage
+ : 0061 0307
+0228 LATIN CAPITAL LETTER E WITH CEDILLA
+ : 0045 0327
+0229 LATIN SMALL LETTER E WITH CEDILLA
+ : 0065 0327
+@ Additions for Livonian
+022A LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ : 00D6 0304
+022B LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+ * Livonian
+ : 00F6 0304
+022C LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ : 00D5 0304
+022D LATIN SMALL LETTER O WITH TILDE AND MACRON
+ * Livonian
+ : 00F5 0304
+022E LATIN CAPITAL LETTER O WITH DOT ABOVE
+ : 004F 0307
+022F LATIN SMALL LETTER O WITH DOT ABOVE
+ * Livonian
+ : 006F 0307
+0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ : 022E 0304
+0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+ * Livonian
+ : 022F 0304
+0232 LATIN CAPITAL LETTER Y WITH MACRON
+ : 0059 0304
+0233 LATIN SMALL LETTER Y WITH MACRON
+ * Livonian, Cornish
+ : 0079 0304
+@@ 0250 IPA Extensions 02AF
+@ IPA extensions
+@+ IPA includes basic Latin letters and a number of Latin letters from other blocks.
+ x (latin small letter ae - 00E6)
+ x (latin small letter c with cedilla - 00E7)
+ x (latin small letter eth - 00F0)
+ x (latin small letter o with stroke - 00F8)
+ x (latin small letter h with stroke - 0127)
+ x (latin small letter eng - 014B)
+ x (latin small ligature oe - 0153)
+ x (greek small letter beta - 03B2)
+ x (greek small letter theta - 03B8)
+ x (greek small letter lamda - 03BB)
+ x (greek small letter chi - 03C7)
+0250 LATIN SMALL LETTER TURNED A
+ * low central unrounded vowel
+0251 LATIN SMALL LETTER ALPHA
+ = LATIN SMALL LETTER SCRIPT A
+ * low back unrounded vowel
+ x (greek small letter alpha - 03B1)
+0252 LATIN SMALL LETTER TURNED ALPHA
+ * low back rounded vowel
+0253 LATIN SMALL LETTER B WITH HOOK
+ * implosive bilabial stop
+ * Pan-Nigerian alphabet
+ x (latin capital letter b with hook - 0181)
+0254 LATIN SMALL LETTER OPEN O
+ * typographically a turned c
+ * lower-mid back rounded vowel
+ x (latin capital letter open o - 0186)
+0255 LATIN SMALL LETTER C WITH CURL
+ * voiceless alveolo-palatal laminal fricative
+ * used in transcription of Mandarin Chinese
+ * sound spelled with 015B in Polish
+0256 LATIN SMALL LETTER D WITH TAIL
+ = LATIN SMALL LETTER D RETROFLEX HOOK
+ * voiced retroflex stop
+ x (latin capital letter african d - 0189)
+0257 LATIN SMALL LETTER D WITH HOOK
+ * implosive dental or alveolar stop
+ * Ewe, Pan-Nigerian alphabet
+ x (latin capital letter d with hook - 018A)
+0258 LATIN SMALL LETTER REVERSED E
+ * upper-mid central unrounded vowel
+0259 LATIN SMALL LETTER SCHWA
+ * mid-central unrounded vowel
+ * variant uppercase form 018E is associated with 01DD
+ x (latin capital letter schwa - 018F)
+ x (latin small letter turned e - 01DD)
+ x (cyrillic small letter schwa - 04D9)
+025A LATIN SMALL LETTER SCHWA WITH HOOK
+ * rhotacized schwa
+025B LATIN SMALL LETTER OPEN E
+ = LATIN SMALL LETTER EPSILON
+ * lower-mid front unrounded vowel
+ x (latin capital letter open e - 0190)
+ x (greek small letter epsilon - 03B5)
+025C LATIN SMALL LETTER REVERSED OPEN E
+ * lower-mid central unrounded vowel
+025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+ * rhotacized lower-mid central vowel
+025E LATIN SMALL LETTER CLOSED REVERSED OPEN E
+ = LATIN SMALL LETTER CLOSED REVERSED EPSILON
+ * lower-mid central rounded vowel
+025F LATIN SMALL LETTER DOTLESS J WITH STROKE
+ * voiced palatal stop
+ * typographically a turned f, but better thought of as a form of j
+ * "gy" in Hungarian orthography
+ * also archaic phonetic for palatoalveolar affricate 02A4
+0260 LATIN SMALL LETTER G WITH HOOK
+ * implosive velar stop
+ x (latin capital letter g with hook - 0193)
+0261 LATIN SMALL LETTER SCRIPT G
+ * voiced velar stop
+ x (latin small letter g - 0067)
+0262 LATIN LETTER SMALL CAPITAL G
+ * voiced uvular stop
+0263 LATIN SMALL LETTER GAMMA
+ * voiced velar fricative
+ x (latin capital letter gamma - 0194)
+ x (greek small letter gamma - 03B3)
+0264 LATIN SMALL LETTER RAMS HORN
+ = LATIN SMALL LETTER BABY GAMMA
+ * upper-mid back unrounded vowel
+0265 LATIN SMALL LETTER TURNED H
+ * voiced rounded palatal approximant
+0266 LATIN SMALL LETTER H WITH HOOK
+ * breathy-voiced glottal fricative
+ x (modifier letter small h with hook - 02B1)
+0267 LATIN SMALL LETTER HENG WITH HOOK
+ * voiceless coarticulated velar and palatoalveolar fricative
+ * "tj" or "kj" or "sj" in some Swedish dialects
+0268 LATIN SMALL LETTER I WITH STROKE
+ = barred i, i bar
+ * high central unrounded vowel
+ * ISO 6438 gives lowercase of 0197 as 026A, not 0268
+0269 LATIN SMALL LETTER IOTA
+ * semi-high front unrounded vowel
+@+ * obsoleted by IPA in 1989
+ * preferred use is 026A LATIN LETTER SMALL CAPITAL I
+ x (latin capital letter iota - 0196)
+ x (greek small letter iota - 03B9)
+026A LATIN LETTER SMALL CAPITAL I
+ * semi-high front unrounded vowel
+ * preferred IPA alternate for 0269
+ x (latin capital letter i with stroke - 0197)
+026B LATIN SMALL LETTER L WITH MIDDLE TILDE
+ * velarized voiced alveolar lateral approximant
+026C LATIN SMALL LETTER L WITH BELT
+ * voiceless alveolar lateral fricative
+026D LATIN SMALL LETTER L WITH RETROFLEX HOOK
+ * voiced retroflex lateral
+026E LATIN SMALL LETTER LEZH
+ * voiced lateral fricative
+ * "dhl" in Zulu orthography
+026F LATIN SMALL LETTER TURNED M
+ * high back unrounded vowel
+ x (latin capital letter turned m - 019C)
+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG
+ * voiced velar approximant
+0271 LATIN SMALL LETTER M WITH HOOK
+ * voiced labiodental nasal
+0272 LATIN SMALL LETTER N WITH LEFT HOOK
+ * voiced palatal nasal
+ x (latin capital letter n with left hook - 019D)
+0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK
+ * voiced retroflex nasal
+0274 LATIN LETTER SMALL CAPITAL N
+ * voiced uvular nasal
+0275 LATIN SMALL LETTER BARRED O
+ = o bar
+ * rounded mid-central vowel, i.e. rounded schwa
+ * uppercase is 019F
+ x (greek small letter theta - 03B8)
+ x (cyrillic small letter fita - 0473)
+ x (cyrillic small letter barred o - 04E9)
+0276 LATIN LETTER SMALL CAPITAL OE
+ * low front rounded vowel
+ x (latin small ligature oe - 0153)
+0277 LATIN SMALL LETTER CLOSED OMEGA
+ * semi-high back rounded vowel
+@+ * obsoleted by IPA in 1989
+ * preferred use is 028A latin small letter upsilon
+0278 LATIN SMALL LETTER PHI
+ * voiceless bilabial fricative
+ x (greek small letter phi - 03C6)
+0279 LATIN SMALL LETTER TURNED R
+ * voiced alveolar approximant
+ x (modifier letter small turned r - 02B4)
+027A LATIN SMALL LETTER TURNED R WITH LONG LEG
+ * voiced lateral flap
+027B LATIN SMALL LETTER TURNED R WITH HOOK
+ * voiced retroflex approximant
+ x (modifier letter small turned r with hook - 02B5)
+027C LATIN SMALL LETTER R WITH LONG LEG
+ * voiced strident apico-alveolar trill
+@+ * obsoleted by IPA in 1989
+ * sound spelled with 0159 in Czech
+ * preferred phonetic representation for Czech is 0072 031D
+ * in current use in Gaelic types (as glyph variant of 0072)
+027D LATIN SMALL LETTER R WITH TAIL
+ * voiced retroflex flap
+027E LATIN SMALL LETTER R WITH FISHHOOK
+ * voiced alveolar flap or tap
+027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+ * apical dental vowel
+ * used in Sinological tradition
+ * IPA spelling - 007A 0329
+0280 LATIN LETTER SMALL CAPITAL R
+ * voiced uvular trill
+ * Germanic, Old Norse
+ * uppercase is 01A6
+0281 LATIN LETTER SMALL CAPITAL INVERTED R
+ * voiced uvular fricative or approximant
+ x (modifier letter small capital inverted r - 02B6)
+0282 LATIN SMALL LETTER S WITH HOOK
+ * voiceless retroflex fricative
+0283 LATIN SMALL LETTER ESH
+ * voiceless postalveolar fricative
+ x (latin capital letter esh - 01A9)
+ x (integral - 222B)
+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+ * implosive palatal stop
+ * typographically based on 025F, not on 0283
+0285 LATIN SMALL LETTER SQUAT REVERSED ESH
+ * apical retroflex vowel
+ * used in Sinological tradition
+ * IPA spelling - 0290 0329
+0286 LATIN SMALL LETTER ESH WITH CURL
+ * palatalized voiceless postalveolar fricative
+ * suggested spelling - 0283 02B2
+0287 LATIN SMALL LETTER TURNED T
+ * dental click (sound of "tsk tsk")
+ x (latin letter dental click - 01C0)
+0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK
+ * voiceless retroflex stop
+ x (latin capital letter t with retroflex hook - 01AE)
+0289 LATIN SMALL LETTER U BAR
+ * high central rounded vowel
+028A LATIN SMALL LETTER UPSILON
+ * semi-high back rounded vowel
+ * preferred IPA alternate to 0277
+ x (latin capital letter upsilon - 01B1)
+ x (greek small letter upsilon - 03C5)
+028B LATIN SMALL LETTER V WITH HOOK
+ = LATIN SMALL LETTER SCRIPT V
+ * voiced labiodental approximant
+ x (latin capital letter v with hook - 01B2)
+ x (greek small letter upsilon - 03C5)
+028C LATIN SMALL LETTER TURNED V
+ = caret, wedge
+ * lower-mid back unrounded vowel
+ x (greek capital letter lamda - 039B)
+ x (caret - 2038)
+ x (logical and - 2227)
+028D LATIN SMALL LETTER TURNED W
+ * voiceless rounded labiovelar approximant
+028E LATIN SMALL LETTER TURNED Y
+ * voiced lateral approximant
+028F LATIN LETTER SMALL CAPITAL Y
+ * semi-high front rounded vowel
+0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+ * voiced retroflex fricative
+0291 LATIN SMALL LETTER Z WITH CURL
+ * voiced alveolo-palatal laminal fricative
+ * sound spelled with 017A in Polish
+0292 LATIN SMALL LETTER EZH
+ = LATIN SMALL LETTER YOGH
+ = dram
+ * voiced postalveolar fricative
+ * uppercase is 01B7
+ * Skolt Sámi
+ x (latin small letter yogh - 021D)
+ x (cyrillic small letter abkhasian dze - 04E1)
+ x (ounce sign - 2125)
+0293 LATIN SMALL LETTER EZH WITH CURL
+ * palatalized voiced postalveolar fricative
+0294 LATIN LETTER GLOTTAL STOP
+ x (modifier letter glottal stop - 02C0)
+0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+ = LATIN LETTER REVERSED GLOTTAL STOP
+ * voiced pharyngeal fricative
+ * ain
+ x (latin small letter ezh reversed - 01B9)
+ x (modifier letter reversed glottal stop - 02C1)
+0296 LATIN LETTER INVERTED GLOTTAL STOP
+ * lateral click
+ x (latin letter lateral click - 01C1)
+0297 LATIN LETTER STRETCHED C
+ * palatal (or alveolar) click
+ x (latin letter retroflex click - 01C3)
+ x (complement - 2201)
+0298 LATIN LETTER BILABIAL CLICK
+ = LATIN LETTER BULLSEYE
+ x (circled dot operator - 2299)
+0299 LATIN LETTER SMALL CAPITAL B
+ * bilabial trill
+029A LATIN SMALL LETTER CLOSED OPEN E
+ = LATIN SMALL LETTER CLOSED EPSILON
+ * lower-mid front rounded vowel
+ * non-IPA alternate for the preferred 0153
+029B LATIN LETTER SMALL CAPITAL G WITH HOOK
+ * voiced uvular implosive
+029C LATIN LETTER SMALL CAPITAL H
+ * voiceless epiglottal fricative
+029D LATIN SMALL LETTER J WITH CROSSED-TAIL
+ * voiced palatal fricative
+029E LATIN SMALL LETTER TURNED K
+ * proposed for velar click
+@+ * withdrawn by IPA in 1970
+029F LATIN LETTER SMALL CAPITAL L
+ * velar lateral approximant
+02A0 LATIN SMALL LETTER Q WITH HOOK
+ * voiceless uvular implosive
+02A1 LATIN LETTER GLOTTAL STOP WITH STROKE
+ * voiced epiglottal stop
+02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+ * voiced epiglottal fricative
+02A3 LATIN SMALL LETTER DZ DIGRAPH
+ * voiced dental affricate
+02A4 LATIN SMALL LETTER DEZH DIGRAPH
+ * voiced postalveolar affricate
+02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+ * voiced alveolo-palatal affricate
+02A6 LATIN SMALL LETTER TS DIGRAPH
+ * voiceless dental affricate
+02A7 LATIN SMALL LETTER TESH DIGRAPH
+ * voiceless postalveolar affricate
+02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL
+ * voiceless alveolo-palatal affricate
+@ IPA characters for disordered speech
+02A9 LATIN SMALL LETTER FENG DIGRAPH
+ * velopharyngeal fricative
+02AA LATIN SMALL LETTER LS DIGRAPH
+ * lateral alveolar fricative (lisp)
+02AB LATIN SMALL LETTER LZ DIGRAPH
+ * voiced lateral alveolar fricative
+02AC LATIN LETTER BILABIAL PERCUSSIVE
+ * audible lip smack
+02AD LATIN LETTER BIDENTAL PERCUSSIVE
+ * audible teeth gnashing
+@@ 02B0 Spacing Modifier Letters 02FF
+@ Phonetic modifiers derived from Latin letters
+02B0 MODIFIER LETTER SMALL H
+ * aspiration
+ # <super> 0068
+02B1 MODIFIER LETTER SMALL H WITH HOOK
+ * breathy voiced, murmured
+ x (latin small letter h with hook - 0266)
+ x (combining diaeresis below - 0324)
+ # <super> 0266
+02B2 MODIFIER LETTER SMALL J
+ * palatalization
+ x (combining palatalized hook below - 0321)
+ # <super> 006A
+02B3 MODIFIER LETTER SMALL R
+ # <super> 0072
+02B4 MODIFIER LETTER SMALL TURNED R
+ x (latin small letter turned r - 0279)
+ # <super> 0279
+02B5 MODIFIER LETTER SMALL TURNED R WITH HOOK
+ x (latin small letter turned r with hook - 027B)
+ # <super> 027B
+02B6 MODIFIER LETTER SMALL CAPITAL INVERTED R
+ * preceding four used for r-coloring or r-offglides
+ x (latin letter small capital inverted r - 0281)
+ # <super> 0281
+02B7 MODIFIER LETTER SMALL W
+ * labialization
+ x (combining inverted double arch below - 032B)
+ # <super> 0077
+02B8 MODIFIER LETTER SMALL Y
+ * palatalization
+ * common Americanist substitution for 02B2
+ # <super> 0079
+@ Miscellaneous phonetic modifiers
+02B9 MODIFIER LETTER PRIME
+ * primary stress, emphasis
+ * transliteration of mjagkij znak (Cyrillic soft sign: palatalization)
+ x (apostrophe - 0027)
+ x (acute accent - 00B4)
+ x (modifier letter acute accent - 02CA)
+ x (combining acute accent - 0301)
+ x (greek numeral sign - 0374)
+ x (prime - 2032)
+02BA MODIFIER LETTER DOUBLE PRIME
+ * exaggerated stress, contrastive stress
+ * transliteration of tverdyj znak (Cyrillic hard sign: no palatalization)
+ x (quotation mark - 0022)
+ x (combining double acute accent - 030B)
+ x (double prime - 2033)
+02BB MODIFIER LETTER TURNED COMMA
+ * typographical alternate for 02BD or 02BF
+ x (combining turned comma above - 0312)
+ x (left single quotation mark - 2018)
+02BC MODIFIER LETTER APOSTROPHE
+ = apostrophe
+ * glottal stop, glottalization, ejective
+ * spacing clone of Greek smooth breathing mark
+ * many languages use this as a letter of their alphabets
+ x (apostrophe - 0027)
+ x (combining comma above - 0313)
+ x (combining comma above right - 0315)
+ x (armenian apostrophe - 055A)
+ x (right single quotation mark - 2019)
+02BD MODIFIER LETTER REVERSED COMMA
+ * weak aspiration
+ * spacing clone of Greek rough breathing mark
+ x (combining reversed comma above - 0314)
+ x (armenian modifier letter left half ring - 0559)
+ x (single high-reversed-9 quotation mark - 201B)
+02BE MODIFIER LETTER RIGHT HALF RING
+ * transliteration of Arabic hamza (glottal stop)
+ x (armenian apostrophe - 055A)
+ x (arabic letter hamza - 0621)
+02BF MODIFIER LETTER LEFT HALF RING
+ * transliteration of Arabic ain (voiced pharyngeal fricative)
+ x (armenian modifier letter left half ring - 0559)
+ x (arabic letter ain - 0639)
+02C0 MODIFIER LETTER GLOTTAL STOP
+ * ejective or glottalized
+ * typographical alternate for 02BC or 02BE
+ x (latin letter glottal stop - 0294)
+ x (combining hook above - 0309)
+02C1 MODIFIER LETTER REVERSED GLOTTAL STOP
+ * typographical alternate for 02BF
+ x (latin letter pharyngeal voiced fricative - 0295)
+02C2 MODIFIER LETTER LEFT ARROWHEAD
+ * fronted articulation
+02C3 MODIFIER LETTER RIGHT ARROWHEAD
+ * backed articulation
+02C4 MODIFIER LETTER UP ARROWHEAD
+ * raised articulation
+ x (circumflex accent - 005E)
+ x (up arrowhead - 2303)
+02C5 MODIFIER LETTER DOWN ARROWHEAD
+ * lowered articulation
+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT
+ * rising-falling tone, falling tone, secondary stress, etc.
+ x (circumflex accent - 005E)
+ x (combining circumflex accent - 0302)
+02C7 CARON (Mandarin Chinese third tone)
+ = hacek
+ * falling-rising tone
+ * Mandarin Chinese third tone
+ x (combining caron - 030C)
+02C8 MODIFIER LETTER VERTICAL LINE
+ * primary stress, downstep
+ * precedes letter or syllable modified
+ x (apostrophe - 0027)
+ x (combining vertical line above - 030D)
+02C9 MODIFIER LETTER MACRON (Mandarin Chinese first tone)
+ * high level tone
+ * precedes or follows letter or syllable modified
+ * Mandarin Chinese first tone
+ x (macron - 00AF)
+ x (combining macron - 0304)
+02CA MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone)
+ * high-rising tone (IPA), high tone, primary stress
+ * Mandarin Chinese second tone
+ x (acute accent - 00B4)
+ x (modifier letter prime - 02B9)
+ x (combining acute accent - 0301)
+ x (greek numeral sign - 0374)
+ x (armenian emphasis mark - 055B)
+02CB MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
+ * high-falling tone (IPA), low tone, secondary or tertiary stress
+ * Mandarin Chinese fourth tone
+ x (grave accent - 0060)
+ x (combining grave accent - 0300)
+ x (armenian comma - 055D)
+02CC MODIFIER LETTER LOW VERTICAL LINE
+ * secondary stress
+ * precedes letter or syllable modified
+ x (combining vertical line below - 0329)
+02CD MODIFIER LETTER LOW MACRON
+ * low level tone
+ x (low line - 005F)
+ x (combining macron below - 0331)
+02CE MODIFIER LETTER LOW GRAVE ACCENT
+ * low-falling tone
+02CF MODIFIER LETTER LOW ACUTE ACCENT
+ * low-rising tone
+ x (greek lower numeral sign - 0375)
+02D0 MODIFIER LETTER TRIANGULAR COLON
+ * length mark
+ x (colon - 003A)
+02D1 MODIFIER LETTER HALF TRIANGULAR COLON
+ * half-length mark
+ x (middle dot - 00B7)
+02D2 MODIFIER LETTER CENTRED RIGHT HALF RING
+ * more rounded articulation
+02D3 MODIFIER LETTER CENTRED LEFT HALF RING
+ * less rounded articulation
+02D4 MODIFIER LETTER UP TACK
+ * vowel raising or closing
+ x (combining up tack below - 031D)
+ x (combining dot below - 0323)
+02D5 MODIFIER LETTER DOWN TACK
+ * vowel lowering or opening
+ x (combining left half ring below - 031C)
+ x (combining down tack below - 031E)
+02D6 MODIFIER LETTER PLUS SIGN
+ * advanced or fronted articulation
+ x (combining plus sign below - 031F)
+02D7 MODIFIER LETTER MINUS SIGN
+ * retracted or backed articulation
+ * glyph may have small end-serifs
+ x (combining minus sign below - 0320)
+@ Spacing clones of diacritics
+02D8 BREVE
+ x (combining breve - 0306)
+ # 0020 0306
+02D9 DOT ABOVE (Mandarin Chinese light tone)
+ * Mandarin Chinese fifth tone (light or neutral)
+ x (combining dot above - 0307)
+ # 0020 0307
+02DA RING ABOVE
+ x (degree sign - 00B0)
+ x (combining ring above - 030A)
+ # 0020 030A
+02DB OGONEK
+ x (combining ogonek - 0328)
+ # 0020 0328
+02DC SMALL TILDE
+ x (tilde - 007E)
+ x (combining tilde - 0303)
+ x (tilde operator - 223C)
+ # 0020 0303
+02DD DOUBLE ACUTE ACCENT
+ x (combining double acute accent - 030B)
+ # 0020 030B
+@ Additions based on 1989 IPA
+02DE MODIFIER LETTER RHOTIC HOOK
+ * rhotacization in vowel
+ * often ligated: 025A = 0259 + 02DE; 025D = 025C + 02DE
+02DF MODIFIER LETTER CROSS ACCENT
+ * Swedish grave accent
+02E0 MODIFIER LETTER SMALL GAMMA
+ * these modifier letters are occasionally used in transcription of affricates
+ # <super> 0263
+02E1 MODIFIER LETTER SMALL L
+ # <super> 006C
+02E2 MODIFIER LETTER SMALL S
+ # <super> 0073
+02E3 MODIFIER LETTER SMALL X
+ # <super> 0078
+02E4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ # <super> 0295
+@ Tone letters
+02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6 MODIFIER LETTER HIGH TONE BAR
+02E7 MODIFIER LETTER MID TONE BAR
+02E8 MODIFIER LETTER LOW TONE BAR
+02E9 MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB MODIFIER LETTER YANG DEPARTING TONE MARK
+@ IPA modifiers
+02EC MODIFIER LETTER VOICING
+02ED MODIFIER LETTER UNASPIRATED
+@ Other modifier letters
+02EE MODIFIER LETTER DOUBLE APOSTROPHE
+ * Nenets
+@@ 0300 Combining Diacritical Marks 036F
+@ Ordinary diacritics
+0300 COMBINING GRAVE ACCENT (Varia)
+ = Greek varia
+ x (grave accent - 0060)
+ x (modifier letter grave accent - 02CB)
+0301 COMBINING ACUTE ACCENT (Oxia)
+ = stress mark
+ = Greek oxia, tonos
+ x (apostrophe - 0027)
+ x (acute accent - 00B4)
+ x (modifier letter prime - 02B9)
+ x (modifier letter acute accent - 02CA)
+ x (greek tonos - 0384)
+0302 COMBINING CIRCUMFLEX ACCENT
+ = hat
+ x (circumflex accent - 005E)
+ x (modifier letter circumflex accent - 02C6)
+0303 COMBINING TILDE
+ * IPA: nasalization
+ * Vietnamese tone mark
+ x (tilde - 007E)
+ x (small tilde - 02DC)
+0304 COMBINING MACRON
+ = long
+ * distinguish from the following
+ x (macron - 00AF)
+ x (modifier letter macron - 02C9)
+0305 COMBINING OVERLINE
+ = overscore, vinculum
+ * connects on left and right
+ x (macron - 00AF)
+0306 COMBINING BREVE (Vrachy)
+ = short
+ = Greek vrachy
+ x (breve - 02D8)
+0307 COMBINING DOT ABOVE
+ = derivative (Newtonian notation)
+@+ * IPA (withdrawn in 1976): palatalization
+ x (dot above - 02D9)
+0308 COMBINING DIAERESIS (Dialytika)
+ = double dot above, umlaut
+ = Greek dialytika
+ = double derivative
+ x (diaeresis - 00A8)
+0309 COMBINING HOOK ABOVE
+ = hoi
+ * kerns left or right of circumflex over vowels
+ * Vietnamese tone mark
+ x (modifier letter glottal stop - 02C0)
+030A COMBINING RING ABOVE
+ x (degree sign - 00B0)
+ x (ring above - 02DA)
+030B COMBINING DOUBLE ACUTE ACCENT
+ * Hungarian, Chuvash
+ x (quotation mark - 0022)
+ x (modifier letter double prime - 02BA)
+ x (double acute accent - 02DD)
+030C COMBINING CARON
+ = hacek, V above
+ x (caron - 02C7)
+030D COMBINING VERTICAL LINE ABOVE (Tonos)
+ * Marshallese
+ x (modifier letter vertical line - 02C8)
+030E COMBINING DOUBLE VERTICAL LINE ABOVE
+ * Marshallese
+ x (quotation mark - 0022)
+030F COMBINING DOUBLE GRAVE ACCENT
+ * Serbian and Croatian poetics
+0310 COMBINING CANDRABINDU
+ x (devanagari sign candrabindu - 0901)
+0311 COMBINING INVERTED BREVE
+0312 COMBINING TURNED COMMA ABOVE
+ = cedilla above
+ * Latvian (but not used in decomposition)
+ x (modifier letter turned comma - 02BB)
+0313 COMBINING COMMA ABOVE (Psili)
+ = Greek psili, smooth breathing mark
+ * Americanist: ejective or glottalization
+ x (modifier letter apostrophe - 02BC)
+ x (combining cyrillic psili pneumata - 0486)
+ x (armenian apostrophe - 055A)
+0314 COMBINING REVERSED COMMA ABOVE (Dasia)
+ = Greek dasia, rough breathing mark
+ x (modifier letter reversed comma - 02BD)
+ x (combining cyrillic dasia pneumata - 0485)
+ x (armenian modifier letter left half ring - 0559)
+0315 COMBINING COMMA ABOVE RIGHT
+ x (modifier letter apostrophe - 02BC)
+0316 COMBINING GRAVE ACCENT BELOW
+0317 COMBINING ACUTE ACCENT BELOW
+0318 COMBINING LEFT TACK BELOW
+0319 COMBINING RIGHT TACK BELOW
+031A COMBINING LEFT ANGLE ABOVE
+ * IPA: unreleased stop
+031B COMBINING HORN
+ * Vietnamese
+031C COMBINING LEFT HALF RING BELOW
+ * IPA: open variety of vowel
+ x (modifier letter down tack - 02D5)
+031D COMBINING UP TACK BELOW
+ * IPA: vowel raising or closing
+ x (modifier letter up tack - 02D4)
+031E COMBINING DOWN TACK BELOW
+ * IPA: vowel lowering or opening
+ x (modifier letter down tack - 02D5)
+031F COMBINING PLUS SIGN BELOW
+ * IPA: advanced or fronted articulation
+ x (modifier letter plus sign - 02D6)
+0320 COMBINING MINUS SIGN BELOW
+ * IPA: retracted or backed articulation
+ * glyph may have small end-serifs
+ x (modifier letter minus sign - 02D7)
+0321 COMBINING PALATALIZED HOOK BELOW
+ * IPA: palatalization
+ x (modifier letter small j - 02B2)
+0322 COMBINING RETROFLEX HOOK BELOW
+ * IPA: retroflexion
+0323 COMBINING DOT BELOW
+ = nang
+ * IPA: closer variety of vowel
+ * Americanist and Indo-Europeanist: retraction or retroflexion
+ * Semiticist: velarization or pharyngealization
+ * Vietnamese tone mark
+ x (modifier letter up tack - 02D4)
+0324 COMBINING DIAERESIS BELOW
+ * IPA: breathy-voice or murmur
+ x (modifier letter small h with hook - 02B1)
+0325 COMBINING RING BELOW
+ * IPA: voiceless
+ * Madurese
+0326 COMBINING COMMA BELOW
+ * Romanian, Latvian, Livonian
+0327 COMBINING CEDILLA
+ * French, Turkish, Azerbaijani
+ x (cedilla - 00B8)
+0328 COMBINING OGONEK
+ = nasal hook
+ * Americanist: nasalization
+ * Polish, Lithuanian
+ x (ogonek - 02DB)
+0329 COMBINING VERTICAL LINE BELOW
+ * IPA: syllabic
+ * Yoruba
+ x (modifier letter low vertical line - 02CC)
+032A COMBINING BRIDGE BELOW
+ * IPA: dental
+032B COMBINING INVERTED DOUBLE ARCH BELOW
+ * IPA: labialization
+ x (modifier letter small w - 02B7)
+032C COMBINING CARON BELOW
+ * IPA: voiced
+ * Hittite transcription
+032D COMBINING CIRCUMFLEX ACCENT BELOW
+ * Americanist: fronted articulation
+032E COMBINING BREVE BELOW
+032F COMBINING INVERTED BREVE BELOW
+ * Americanist: fronted articulation (variant of 032D)
+ * Indo-Europeanist: semivowel
+0330 COMBINING TILDE BELOW
+ * IPA: creaky voice
+0331 COMBINING MACRON BELOW
+ x (low line - 005F)
+ x (modifier letter low macron - 02CD)
+0332 COMBINING LOW LINE
+ = underline, underscore
+ * connects on left and right
+ x (low line - 005F)
+0333 COMBINING DOUBLE LOW LINE
+ = double underline, double underscore
+ * connects on left and right
+ x (combining equals sign below - 0347)
+ x (double low line - 2017)
+@ Overstruck diacritics
+0334 COMBINING TILDE OVERLAY
+ * IPA: velarization or pharyngealization
+0335 COMBINING SHORT STROKE OVERLAY
+0336 COMBINING LONG STROKE OVERLAY
+0337 COMBINING SHORT SOLIDUS OVERLAY
+ = short slash overlay
+0338 COMBINING LONG SOLIDUS OVERLAY
+ = long slash overlay
+@ Additions
+0339 COMBINING RIGHT HALF RING BELOW
+033A COMBINING INVERTED BRIDGE BELOW
+033B COMBINING SQUARE BELOW
+033C COMBINING SEAGULL BELOW
+033D COMBINING X ABOVE
+033E COMBINING VERTICAL TILDE
+ * Cyrillic palatalization
+ x (combining cyrillic palatalization - 0484)
+033F COMBINING DOUBLE OVERLINE
+@ Vietnamese tone marks (deprecated)
+0340 COMBINING GRAVE TONE MARK (Vietnamese)
+ * kerns left or right of circumflex over vowels
+ : 0300 combining grave accent
+0341 COMBINING ACUTE TONE MARK (Vietnamese)
+ * kerns right of circumflex over vowels
+ : 0301 combining acute accent
+@ Additions for Greek
+0342 COMBINING GREEK PERISPOMENI
+0343 COMBINING GREEK KORONIS
+ : 0313 combining comma above
+0344 COMBINING GREEK DIALYTIKA TONOS
+ * use of this character is discouraged
+ : 0308 0301
+0345 COMBINING GREEK YPOGEGRAMMENI
+ = GREEK NON-SPACING IOTA BELOW
+ = iota subscript
+ * note special casing issues
+ x (greek ypogegrammeni - 037A)
+ x (greek capital letter iota - 0399)
+@ Additions for IPA
+0346 COMBINING BRIDGE ABOVE
+ * IPA: dentolabial
+0347 COMBINING EQUALS SIGN BELOW
+ * IPA: alveolar
+0348 COMBINING DOUBLE VERTICAL LINE BELOW
+ * IPA: strong articulation
+0349 COMBINING LEFT ANGLE BELOW
+ * IPA: weak articulation
+034A COMBINING NOT TILDE ABOVE
+ * IPA: denasal
+@ IPA diacritics for disordered speech
+034B COMBINING HOMOTHETIC ABOVE
+ * IPA: nasal escape
+034C COMBINING ALMOST EQUAL TO ABOVE
+ * IPA: velopharyngeal friction
+034D COMBINING LEFT RIGHT ARROW BELOW
+ * IPA: labial spreading
+034E COMBINING UPWARDS ARROW BELOW
+ * IPA: whistled articulation
+@ Double diacritics
+0360 COMBINING DOUBLE TILDE
+0361 COMBINING DOUBLE INVERTED BREVE
+0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+ * IPA: sliding articulation
+@@ 0370 Greek and Coptic 03FF
+@ Based on ISO 8859-7
+0374 GREEK NUMERAL SIGN (Dexia keraia)
+ = dexia keraia
+ * indicates numeric use of letters
+ x (modifier letter acute accent - 02CA)
+ : 02B9 modifier letter prime
+0375 GREEK LOWER NUMERAL SIGN (Aristeri keraia)
+ = aristeri keraia
+ * indicates numeric use of letters
+ x (modifier letter low acute accent - 02CF)
+037A GREEK YPOGEGRAMMENI
+ = iota subscript
+ x (combining greek ypogegrammeni - 0345)
+ # 0020 0345
+037E GREEK QUESTION MARK (Erotimatiko)
+ = erotimatiko
+ * sentence-final punctuation
+ x (question mark - 003F)
+ : 003B semicolon
+0384 GREEK TONOS
+ x (acute accent - 00B4)
+ x (combining vertical line above - 030D)
+ # 0020 0301
+0385 GREEK DIALYTIKA TONOS
+ : 00A8 0301
+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
+ : 0391 0301
+0387 GREEK ANO TELEIA
+ * functions in Greek like a semicolon
+ : 00B7 middle dot
+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
+ : 0395 0301
+0389 GREEK CAPITAL LETTER ETA WITH TONOS
+ : 0397 0301
+038A GREEK CAPITAL LETTER IOTA WITH TONOS
+ : 0399 0301
+038C GREEK CAPITAL LETTER OMICRON WITH TONOS
+ : 039F 0301
+038E GREEK CAPITAL LETTER UPSILON WITH TONOS
+ : 03A5 0301
+038F GREEK CAPITAL LETTER OMEGA WITH TONOS
+ : 03A9 0301
+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ : 03CA 0301
+0391 GREEK CAPITAL LETTER ALPHA
+0392 GREEK CAPITAL LETTER BETA
+0393 GREEK CAPITAL LETTER GAMMA
+ = gamma function
+0394 GREEK CAPITAL LETTER DELTA
+ x (increment - 2206)
+0395 GREEK CAPITAL LETTER EPSILON
+0396 GREEK CAPITAL LETTER ZETA
+0397 GREEK CAPITAL LETTER ETA
+0398 GREEK CAPITAL LETTER THETA
+0399 GREEK CAPITAL LETTER IOTA
+ = iota adscript
+039A GREEK CAPITAL LETTER KAPPA
+039B GREEK CAPITAL LETTER LAMDA
+039C GREEK CAPITAL LETTER MU
+039D GREEK CAPITAL LETTER NU
+039E GREEK CAPITAL LETTER XI
+039F GREEK CAPITAL LETTER OMICRON
+03A0 GREEK CAPITAL LETTER PI
+ x (n-ary product - 220F)
+03A1 GREEK CAPITAL LETTER RHO
+03A3 GREEK CAPITAL LETTER SIGMA
+ x (latin capital letter esh - 01A9)
+ x (n-ary summation - 2211)
+03A4 GREEK CAPITAL LETTER TAU
+03A5 GREEK CAPITAL LETTER UPSILON
+03A6 GREEK CAPITAL LETTER PHI
+03A7 GREEK CAPITAL LETTER CHI
+03A8 GREEK CAPITAL LETTER PSI
+03A9 GREEK CAPITAL LETTER OMEGA
+ x (ohm sign - 2126)
+ x (inverted ohm sign - 2127)
+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ : 0399 0308
+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ : 03A5 0308
+03AC GREEK SMALL LETTER ALPHA WITH TONOS
+ : 03B1 0301
+03AD GREEK SMALL LETTER EPSILON WITH TONOS
+ : 03B5 0301
+03AE GREEK SMALL LETTER ETA WITH TONOS
+ : 03B7 0301
+03AF GREEK SMALL LETTER IOTA WITH TONOS
+ : 03B9 0301
+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ : 03CB 0301
+03B1 GREEK SMALL LETTER ALPHA
+ x (latin small letter alpha - 0251)
+ x (proportional to - 221D)
+03B2 GREEK SMALL LETTER BETA
+ x (latin small letter sharp s - 00DF)
+ x (latin small letter b with stroke - 0180)
+03B3 GREEK SMALL LETTER GAMMA
+ x (latin small letter gamma - 0263)
+03B4 GREEK SMALL LETTER DELTA
+03B5 GREEK SMALL LETTER EPSILON
+ x (latin small letter open e - 025B)
+03B6 GREEK SMALL LETTER ZETA
+03B7 GREEK SMALL LETTER ETA
+03B8 GREEK SMALL LETTER THETA
+ x (latin small letter barred o - 0275)
+ x (cyrillic small letter fita - 0473)
+03B9 GREEK SMALL LETTER IOTA
+ x (latin small letter iota - 0269)
+ x (turned greek small letter iota - 2129)
+03BA GREEK SMALL LETTER KAPPA
+03BB GREEK SMALL LETTER LAMDA
+ = lambda
+03BC GREEK SMALL LETTER MU
+ x (micro sign - 00B5)
+03BD GREEK SMALL LETTER NU
+03BE GREEK SMALL LETTER XI
+03BF GREEK SMALL LETTER OMICRON
+03C0 GREEK SMALL LETTER PI
+ * math constant 3.141592...
+03C1 GREEK SMALL LETTER RHO
+03C2 GREEK SMALL LETTER FINAL SIGMA
+03C3 GREEK SMALL LETTER SIGMA
+03C4 GREEK SMALL LETTER TAU
+03C5 GREEK SMALL LETTER UPSILON
+ x (latin small letter upsilon - 028A)
+ x (latin small letter v with hook - 028B)
+03C6 GREEK SMALL LETTER PHI
+ x (latin small letter phi - 0278)
+03C7 GREEK SMALL LETTER CHI
+03C8 GREEK SMALL LETTER PSI
+03C9 GREEK SMALL LETTER OMEGA
+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ : 03B9 0308
+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ : 03C5 0308
+03CC GREEK SMALL LETTER OMICRON WITH TONOS
+ : 03BF 0301
+03CD GREEK SMALL LETTER UPSILON WITH TONOS
+ : 03C5 0301
+03CE GREEK SMALL LETTER OMEGA WITH TONOS
+ : 03C9 0301
+@ Variant letterforms
+03D0 GREEK BETA SYMBOL
+ = GREEK SMALL LETTER CURLED BETA
+ # 03B2 greek small letter beta
+03D1 GREEK THETA SYMBOL
+ = GREEK SMALL LETTER SCRIPT THETA
+ * used as technical symbol
+ # 03B8 greek small letter theta
+03D2 GREEK UPSILON WITH HOOK SYMBOL
+ = GREEK CAPITAL LETTER UPSILON HOOK
+ # 03A5 greek capital letter upsilon
+03D3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+ = GREEK CAPITAL LETTER UPSILON HOOK TONOS
+ : 03D2 0301
+03D4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ = GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS
+ : 03D2 0308
+03D5 GREEK PHI SYMBOL
+ = GREEK SMALL LETTER SCRIPT PHI
+ * used as technical symbol
+ # 03C6 greek small letter phi
+03D6 GREEK PI SYMBOL
+ = GREEK SMALL LETTER OMEGA PI
+ * used as technical symbol
+ * a variant of pi, looking like omega
+ # 03C0 greek small letter pi
+03D7 GREEK KAI SYMBOL
+ * used as an ampersand
+@ Archaic letters
+03DA GREEK LETTER STIGMA
+03DB GREEK SMALL LETTER STIGMA
+03DC GREEK LETTER DIGAMMA
+03DD GREEK SMALL LETTER DIGAMMA
+03DE GREEK LETTER KOPPA
+03DF GREEK SMALL LETTER KOPPA
+03E0 GREEK LETTER SAMPI
+03E1 GREEK SMALL LETTER SAMPI
+@ Coptic-unique letters
+03E2 COPTIC CAPITAL LETTER SHEI
+03E3 COPTIC SMALL LETTER SHEI
+03E4 COPTIC CAPITAL LETTER FEI
+03E5 COPTIC SMALL LETTER FEI
+03E6 COPTIC CAPITAL LETTER KHEI
+03E7 COPTIC SMALL LETTER KHEI
+03E8 COPTIC CAPITAL LETTER HORI
+03E9 COPTIC SMALL LETTER HORI
+03EA COPTIC CAPITAL LETTER GANGIA
+03EB COPTIC SMALL LETTER GANGIA
+03EC COPTIC CAPITAL LETTER SHIMA
+03ED COPTIC SMALL LETTER SHIMA
+03EE COPTIC CAPITAL LETTER DEI
+03EF COPTIC SMALL LETTER DEI
+@ Additions
+03F0 GREEK KAPPA SYMBOL
+ = GREEK SMALL LETTER SCRIPT KAPPA
+ * used as technical symbol
+ # 03BA greek small letter kappa
+03F1 GREEK RHO SYMBOL
+ = GREEK SMALL LETTER TAILED RHO
+ * used as technical symbol
+ # 03C1 greek small letter rho
+03F2 GREEK LUNATE SIGMA SYMBOL
+ = GREEK SMALL LETTER LUNATE SIGMA
+ # 03C2 greek small letter final sigma
+03F3 GREEK LETTER YOT
+@@ 0400 Cyrillic 04FF
+@ Cyrillic extensions
+0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE
+ : 0415 0300
+0401 CYRILLIC CAPITAL LETTER IO
+ : 0415 0308
+0402 CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+0403 CYRILLIC CAPITAL LETTER GJE
+ : 0413 0301
+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405 CYRILLIC CAPITAL LETTER DZE
+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ x (latin capital letter i - 0049)
+ x (cyrillic letter palochka - 04C0)
+0407 CYRILLIC CAPITAL LETTER YI (Ukrainian)
+ : 0406 0308
+0408 CYRILLIC CAPITAL LETTER JE
+0409 CYRILLIC CAPITAL LETTER LJE
+040A CYRILLIC CAPITAL LETTER NJE
+040B CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+040C CYRILLIC CAPITAL LETTER KJE
+ : 041A 0301
+040D CYRILLIC CAPITAL LETTER I WITH GRAVE
+ : 0418 0300
+040E CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+ : 0423 0306
+040F CYRILLIC CAPITAL LETTER DZHE
+@ Basic Russian alphabet
+0410 CYRILLIC CAPITAL LETTER A
+0411 CYRILLIC CAPITAL LETTER BE
+ x (latin small letter b with topbar - 0183)
+0412 CYRILLIC CAPITAL LETTER VE
+0413 CYRILLIC CAPITAL LETTER GHE
+0414 CYRILLIC CAPITAL LETTER DE
+0415 CYRILLIC CAPITAL LETTER IE
+0416 CYRILLIC CAPITAL LETTER ZHE
+0417 CYRILLIC CAPITAL LETTER ZE
+0418 CYRILLIC CAPITAL LETTER I
+0419 CYRILLIC CAPITAL LETTER SHORT I
+ : 0418 0306
+041A CYRILLIC CAPITAL LETTER KA
+041B CYRILLIC CAPITAL LETTER EL
+041C CYRILLIC CAPITAL LETTER EM
+041D CYRILLIC CAPITAL LETTER EN
+041E CYRILLIC CAPITAL LETTER O
+041F CYRILLIC CAPITAL LETTER PE
+0420 CYRILLIC CAPITAL LETTER ER
+0421 CYRILLIC CAPITAL LETTER ES
+0422 CYRILLIC CAPITAL LETTER TE
+0423 CYRILLIC CAPITAL LETTER U
+ x (cyrillic capital letter uk - 0478)
+ x (cyrillic small letter straight u - 04AF)
+0424 CYRILLIC CAPITAL LETTER EF
+0425 CYRILLIC CAPITAL LETTER HA
+0426 CYRILLIC CAPITAL LETTER TSE
+0427 CYRILLIC CAPITAL LETTER CHE
+0428 CYRILLIC CAPITAL LETTER SHA
+0429 CYRILLIC CAPITAL LETTER SHCHA
+042A CYRILLIC CAPITAL LETTER HARD SIGN
+042B CYRILLIC CAPITAL LETTER YERU
+042C CYRILLIC CAPITAL LETTER SOFT SIGN
+042D CYRILLIC CAPITAL LETTER E
+042E CYRILLIC CAPITAL LETTER YU
+042F CYRILLIC CAPITAL LETTER YA
+0430 CYRILLIC SMALL LETTER A
+0431 CYRILLIC SMALL LETTER BE
+0432 CYRILLIC SMALL LETTER VE
+0433 CYRILLIC SMALL LETTER GHE
+0434 CYRILLIC SMALL LETTER DE
+0435 CYRILLIC SMALL LETTER IE
+0436 CYRILLIC SMALL LETTER ZHE
+0437 CYRILLIC SMALL LETTER ZE
+0438 CYRILLIC SMALL LETTER I
+0439 CYRILLIC SMALL LETTER SHORT I
+ : 0438 0306
+043A CYRILLIC SMALL LETTER KA
+043B CYRILLIC SMALL LETTER EL
+043C CYRILLIC SMALL LETTER EM
+043D CYRILLIC SMALL LETTER EN
+043E CYRILLIC SMALL LETTER O
+043F CYRILLIC SMALL LETTER PE
+0440 CYRILLIC SMALL LETTER ER
+0441 CYRILLIC SMALL LETTER ES
+0442 CYRILLIC SMALL LETTER TE
+0443 CYRILLIC SMALL LETTER U
+0444 CYRILLIC SMALL LETTER EF
+0445 CYRILLIC SMALL LETTER HA
+0446 CYRILLIC SMALL LETTER TSE
+0447 CYRILLIC SMALL LETTER CHE
+0448 CYRILLIC SMALL LETTER SHA
+0449 CYRILLIC SMALL LETTER SHCHA
+044A CYRILLIC SMALL LETTER HARD SIGN
+044B CYRILLIC SMALL LETTER YERU
+044C CYRILLIC SMALL LETTER SOFT SIGN
+ x (latin small letter tone six - 0185)
+044D CYRILLIC SMALL LETTER E
+044E CYRILLIC SMALL LETTER YU
+044F CYRILLIC SMALL LETTER YA
+@ Cyrillic extensions
+0450 CYRILLIC SMALL LETTER IE WITH GRAVE
+ * Macedonian
+ : 0435 0300
+0451 CYRILLIC SMALL LETTER IO
+ * Russian, ...
+ : 0435 0308
+0452 CYRILLIC SMALL LETTER DJE (Serbocroatian)
+ * Serbian
+ x (latin small letter d with stroke - 0111)
+0453 CYRILLIC SMALL LETTER GJE
+ * Macedonian
+ : 0433 0301
+0454 CYRILLIC SMALL LETTER UKRAINIAN IE
+ = Old Cyrillic yest
+0455 CYRILLIC SMALL LETTER DZE
+ = Old Cyrillic zelo
+ * Macedonian
+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ = Old Cyrillic i
+0457 CYRILLIC SMALL LETTER YI (Ukrainian)
+ * Ukrainian
+ : 0456 0308
+0458 CYRILLIC SMALL LETTER JE
+ * Serbian, Azerbaijani, Altay
+0459 CYRILLIC SMALL LETTER LJE
+ * Serbian, Macedonian
+ x (latin small letter lj - 01C9)
+045A CYRILLIC SMALL LETTER NJE
+ * Serbian, Macedonian
+ x (latin small letter nj - 01CC)
+045B CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+ = Old Cyrillic derv
+ * Serbian
+ x (latin small letter c with acute - 0107)
+ x (latin small letter h with stroke - 0127)
+ x (cyrillic capital letter tshe - 040B)
+ x (planck constant over two pi - 210F)
+045C CYRILLIC SMALL LETTER KJE
+ * Macedonian
+ : 043A 0301
+045D CYRILLIC SMALL LETTER I WITH GRAVE
+ * Macedonian
+ : 0438 0300
+045E CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+ * Byelorussian, Uzbek
+ : 0443 0306
+045F CYRILLIC SMALL LETTER DZHE
+ * Serbian, Macedonian, Abkhasian
+ x (latin small letter dz with caron - 01C6)
+@ Historic letters
+0460 CYRILLIC CAPITAL LETTER OMEGA
+0461 CYRILLIC SMALL LETTER OMEGA
+0462 CYRILLIC CAPITAL LETTER YAT
+0463 CYRILLIC SMALL LETTER YAT
+ * Old Russian
+0464 CYRILLIC CAPITAL LETTER IOTIFIED E
+0465 CYRILLIC SMALL LETTER IOTIFIED E
+0466 CYRILLIC CAPITAL LETTER LITTLE YUS
+0467 CYRILLIC SMALL LETTER LITTLE YUS
+0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A CYRILLIC CAPITAL LETTER BIG YUS
+046B CYRILLIC SMALL LETTER BIG YUS
+046C CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E CYRILLIC CAPITAL LETTER KSI
+046F CYRILLIC SMALL LETTER KSI
+0470 CYRILLIC CAPITAL LETTER PSI
+0471 CYRILLIC SMALL LETTER PSI
+0472 CYRILLIC CAPITAL LETTER FITA
+0473 CYRILLIC SMALL LETTER FITA
+ x (latin small letter barred o - 0275)
+ x (greek small letter theta - 03B8)
+0474 CYRILLIC CAPITAL LETTER IZHITSA
+0475 CYRILLIC SMALL LETTER IZHITSA
+0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ : 0474 030F
+0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ : 0475 030F
+0478 CYRILLIC CAPITAL LETTER UK
+ * basic Old Cyrillic uk is unified with CYRILLIC LETTER U
+ x (cyrillic capital letter u - 0423)
+0479 CYRILLIC SMALL LETTER UK
+047A CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B CYRILLIC SMALL LETTER ROUND OMEGA
+047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E CYRILLIC CAPITAL LETTER OT
+047F CYRILLIC SMALL LETTER OT
+0480 CYRILLIC CAPITAL LETTER KOPPA
+0481 CYRILLIC SMALL LETTER KOPPA
+@ Historic miscellaneous
+0482 CYRILLIC THOUSANDS SIGN
+0483 COMBINING CYRILLIC TITLO
+0484 COMBINING CYRILLIC PALATALIZATION
+ x (combining vertical tilde - 033E)
+0485 COMBINING CYRILLIC DASIA PNEUMATA
+ x (combining reversed comma above - 0314)
+0486 COMBINING CYRILLIC PSILI PNEUMATA
+ x (combining comma above - 0313)
+0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489 COMBINING CYRILLIC MILLIONS SIGN
+@ Extended Cyrillic
+048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D CYRILLIC SMALL LETTER SEMISOFT SIGN
+ * Kildin Sámi
+048E CYRILLIC CAPITAL LETTER ER WITH TICK
+048F CYRILLIC SMALL LETTER ER WITH TICK
+ * Kildin Sámi
+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
+ * Old Ukrainian
+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493 CYRILLIC SMALL LETTER GHE WITH STROKE
+ * Azerbaijani, Bashkir, ...
+ * full bar form preferred over half-barred "F"-type
+0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+ * Abkhasian, Yakut
+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ * Tatar, ...
+0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER
+ * Bashkir
+ * reversed ogonek form of the descender is preferred
+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B CYRILLIC SMALL LETTER KA WITH DESCENDER
+ * Abkhasian, Tajik, ...
+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ * Azerbaijani
+049E CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F CYRILLIC SMALL LETTER KA WITH STROKE
+ * Abkhasian
+04A0 CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1 CYRILLIC SMALL LETTER BASHKIR KA
+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER
+ * Bashkir, ...
+04A4 CYRILLIC CAPITAL LIGATURE EN GHE
+04A5 CYRILLIC SMALL LIGATURE EN GHE
+ * Altay, Mari, Yakut
+ * this is not a decomposable ligature
+04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (Abkhasian)
+04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (Abkhasian)
+ * Abkhasian
+04A8 CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9 CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB CYRILLIC SMALL LETTER ES WITH DESCENDER
+ * Bashkir, Chuvash
+ * reversed ogonek form of the descender is preferred
+04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD CYRILLIC SMALL LETTER TE WITH DESCENDER
+ * Abkhasian
+04AE CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF CYRILLIC SMALL LETTER STRAIGHT U
+ * stem is straight, unlike LETTER U
+ * Azerbaijani, Bashkir, ...
+ x (cyrillic capital letter u - 0423)
+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ * Kazakh
+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER
+ * Abkhasian, Tajik, Uzbek
+04B4 CYRILLIC CAPITAL LIGATURE TE TSE (Abkhasian)
+04B5 CYRILLIC SMALL LIGATURE TE TSE (Abkhasian)
+ * Abkhasian
+ * this is not a decomposable ligature
+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ * Abkhasian, Tajik
+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+ * Azerbaijani
+04BA CYRILLIC CAPITAL LETTER SHHA
+04BB CYRILLIC SMALL LETTER SHHA
+ * originally derived from Latin "h", but uppercase form 04BA is closer to an inverted che (0427)
+ * Azerbaijani, Bashkir, ...
+ x (latin small letter h - 0068)
+04BC CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+ * ogonek form preferred
+04C0 CYRILLIC LETTER PALOCHKA
+ * aspiration sign in many Caucasian languages
+ * has no "lowercase form", i.e. is case-invariant
+ x (latin capital letter i - 0049)
+ x (cyrillic capital letter byelorussian-ukrainian i - 0406)
+04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ : 0416 0306
+04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE
+ * Moldavian
+ : 0436 0306
+04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4 CYRILLIC SMALL LETTER KA WITH HOOK
+ * Khanty, Chukchi
+04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8 CYRILLIC SMALL LETTER EN WITH HOOK
+ * Khanty, Chukchi, Nenets
+04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0 CYRILLIC CAPITAL LETTER A WITH BREVE
+ : 0410 0306
+04D1 CYRILLIC SMALL LETTER A WITH BREVE
+ : 0430 0306
+04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ : 0410 0308
+04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS
+ : 0430 0308
+04D4 CYRILLIC CAPITAL LIGATURE A IE
+04D5 CYRILLIC SMALL LIGATURE A IE
+ * this is not a decomposable ligature
+ x (latin small letter ae - 00E6)
+04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE
+ : 0415 0306
+04D7 CYRILLIC SMALL LETTER IE WITH BREVE
+ : 0435 0306
+04D8 CYRILLIC CAPITAL LETTER SCHWA
+04D9 CYRILLIC SMALL LETTER SCHWA
+ x (latin small letter schwa - 0259)
+04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ : 04D8 0308
+04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+ : 04D9 0308
+04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ : 0416 0308
+04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+ : 0436 0308
+04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ : 0417 0308
+04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ : 0437 0308
+04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE
+ x (latin small letter ezh - 0292)
+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON
+ : 0418 0304
+04E3 CYRILLIC SMALL LETTER I WITH MACRON
+ : 0438 0304
+04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ : 0418 0308
+04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS
+ : 0438 0308
+04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ : 041E 0308
+04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS
+ : 043E 0308
+04E8 CYRILLIC CAPITAL LETTER BARRED O
+04E9 CYRILLIC SMALL LETTER BARRED O
+ x (latin small letter barred o - 0275)
+04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ : 04E8 0308
+04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+ : 04E9 0308
+04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ : 042D 0308
+04ED CYRILLIC SMALL LETTER E WITH DIAERESIS
+ * Kildin Sámi
+ : 044D 0308
+04EE CYRILLIC CAPITAL LETTER U WITH MACRON
+ : 0423 0304
+04EF CYRILLIC SMALL LETTER U WITH MACRON
+ : 0443 0304
+04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ : 0423 0308
+04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS
+ : 0443 0308
+04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ : 0423 030B
+04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+ : 0443 030B
+04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ : 0427 0308
+04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ : 0447 0308
+04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ : 042B 0308
+04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ : 044B 0308
+@@ 0530 Armenian 058F
+@ Uppercase letters
+0531 ARMENIAN CAPITAL LETTER AYB
+0532 ARMENIAN CAPITAL LETTER BEN
+0533 ARMENIAN CAPITAL LETTER GIM
+0534 ARMENIAN CAPITAL LETTER DA
+0535 ARMENIAN CAPITAL LETTER ECH
+0536 ARMENIAN CAPITAL LETTER ZA
+0537 ARMENIAN CAPITAL LETTER EH
+0538 ARMENIAN CAPITAL LETTER ET
+0539 ARMENIAN CAPITAL LETTER TO
+053A ARMENIAN CAPITAL LETTER ZHE
+053B ARMENIAN CAPITAL LETTER INI
+053C ARMENIAN CAPITAL LETTER LIWN
+053D ARMENIAN CAPITAL LETTER XEH
+053E ARMENIAN CAPITAL LETTER CA
+053F ARMENIAN CAPITAL LETTER KEN
+0540 ARMENIAN CAPITAL LETTER HO
+0541 ARMENIAN CAPITAL LETTER JA
+0542 ARMENIAN CAPITAL LETTER GHAD
+0543 ARMENIAN CAPITAL LETTER CHEH
+0544 ARMENIAN CAPITAL LETTER MEN
+0545 ARMENIAN CAPITAL LETTER YI
+0546 ARMENIAN CAPITAL LETTER NOW
+0547 ARMENIAN CAPITAL LETTER SHA
+0548 ARMENIAN CAPITAL LETTER VO
+0549 ARMENIAN CAPITAL LETTER CHA
+054A ARMENIAN CAPITAL LETTER PEH
+054B ARMENIAN CAPITAL LETTER JHEH
+054C ARMENIAN CAPITAL LETTER RA
+054D ARMENIAN CAPITAL LETTER SEH
+054E ARMENIAN CAPITAL LETTER VEW
+054F ARMENIAN CAPITAL LETTER TIWN
+0550 ARMENIAN CAPITAL LETTER REH
+0551 ARMENIAN CAPITAL LETTER CO
+0552 ARMENIAN CAPITAL LETTER YIWN
+0553 ARMENIAN CAPITAL LETTER PIWR
+0554 ARMENIAN CAPITAL LETTER KEH
+0555 ARMENIAN CAPITAL LETTER OH
+0556 ARMENIAN CAPITAL LETTER FEH
+@ Modifier letters
+0559 ARMENIAN MODIFIER LETTER LEFT HALF RING
+ x (modifier letter reversed comma - 02BD)
+ x (modifier letter left half ring - 02BF)
+ x (combining reversed comma above - 0314)
+055A ARMENIAN APOSTROPHE
+ = ARMENIAN MODIFIER LETTER RIGHT HALF RING
+ x (modifier letter apostrophe - 02BC)
+ x (modifier letter right half ring - 02BE)
+ x (combining comma above - 0313)
+055B ARMENIAN EMPHASIS MARK
+ = shesht
+ x (modifier letter acute accent - 02CA)
+055C ARMENIAN EXCLAMATION MARK
+ = batsaganchakan nshan
+055D ARMENIAN COMMA
+ = bowt
+ x (modifier letter grave accent - 02CB)
+055E ARMENIAN QUESTION MARK
+ = hartsakan nshan
+055F ARMENIAN ABBREVIATION MARK
+ = patiw
+@ Lowercase letters
+0561 ARMENIAN SMALL LETTER AYB
+0562 ARMENIAN SMALL LETTER BEN
+0563 ARMENIAN SMALL LETTER GIM
+0564 ARMENIAN SMALL LETTER DA
+0565 ARMENIAN SMALL LETTER ECH
+0566 ARMENIAN SMALL LETTER ZA
+0567 ARMENIAN SMALL LETTER EH
+0568 ARMENIAN SMALL LETTER ET
+0569 ARMENIAN SMALL LETTER TO
+056A ARMENIAN SMALL LETTER ZHE
+056B ARMENIAN SMALL LETTER INI
+056C ARMENIAN SMALL LETTER LIWN
+056D ARMENIAN SMALL LETTER XEH
+056E ARMENIAN SMALL LETTER CA
+056F ARMENIAN SMALL LETTER KEN
+0570 ARMENIAN SMALL LETTER HO
+0571 ARMENIAN SMALL LETTER JA
+0572 ARMENIAN SMALL LETTER GHAD
+0573 ARMENIAN SMALL LETTER CHEH
+0574 ARMENIAN SMALL LETTER MEN
+0575 ARMENIAN SMALL LETTER YI
+0576 ARMENIAN SMALL LETTER NOW
+0577 ARMENIAN SMALL LETTER SHA
+0578 ARMENIAN SMALL LETTER VO
+0579 ARMENIAN SMALL LETTER CHA
+057A ARMENIAN SMALL LETTER PEH
+057B ARMENIAN SMALL LETTER JHEH
+057C ARMENIAN SMALL LETTER RA
+057D ARMENIAN SMALL LETTER SEH
+057E ARMENIAN SMALL LETTER VEW
+057F ARMENIAN SMALL LETTER TIWN
+0580 ARMENIAN SMALL LETTER REH
+0581 ARMENIAN SMALL LETTER CO
+0582 ARMENIAN SMALL LETTER YIWN
+0583 ARMENIAN SMALL LETTER PIWR
+0584 ARMENIAN SMALL LETTER KEH
+0585 ARMENIAN SMALL LETTER OH
+0586 ARMENIAN SMALL LETTER FEH
+0587 ARMENIAN SMALL LIGATURE ECH YIWN
+ # 0565 0582
+@ Punctuation
+0589 ARMENIAN FULL STOP
+ = vertsaket
+ * may also be used for Georgian
+ x (colon - 003A)
+058A ARMENIAN HYPHEN
+ = yentamna
+@@ 0590 Hebrew 05FF
+@ Cantillation marks
+0591 HEBREW ACCENT ETNAHTA
+0592 HEBREW ACCENT SEGOL
+0593 HEBREW ACCENT SHALSHELET
+0594 HEBREW ACCENT ZAQEF QATAN
+0595 HEBREW ACCENT ZAQEF GADOL
+0596 HEBREW ACCENT TIPEHA *
+ = tarha
+0597 HEBREW ACCENT REVIA
+0598 HEBREW ACCENT ZARQA *
+ = zinorit
+0599 HEBREW ACCENT PASHTA
+059A HEBREW ACCENT YETIV
+059B HEBREW ACCENT TEVIR
+059C HEBREW ACCENT GERESH
+059D HEBREW ACCENT GERESH MUQDAM
+059E HEBREW ACCENT GERSHAYIM
+059F HEBREW ACCENT QARNEY PARA
+05A0 HEBREW ACCENT TELISHA GEDOLA
+05A1 HEBREW ACCENT PAZER
+05A3 HEBREW ACCENT MUNAH
+05A4 HEBREW ACCENT MAHAPAKH
+05A5 HEBREW ACCENT MERKHA *
+ = yored
+05A6 HEBREW ACCENT MERKHA KEFULA
+05A7 HEBREW ACCENT DARGA
+05A8 HEBREW ACCENT QADMA *
+ = azla
+05A9 HEBREW ACCENT TELISHA QETANA
+05AA HEBREW ACCENT YERAH BEN YOMO *
+ = galgal
+05AB HEBREW ACCENT OLE
+05AC HEBREW ACCENT ILUY
+05AD HEBREW ACCENT DEHI
+05AE HEBREW ACCENT ZINOR
+05AF HEBREW MARK MASORA CIRCLE
+@ Points and punctuation
+05B0 HEBREW POINT SHEVA
+05B1 HEBREW POINT HATAF SEGOL
+05B2 HEBREW POINT HATAF PATAH
+05B3 HEBREW POINT HATAF QAMATS
+05B4 HEBREW POINT HIRIQ
+05B5 HEBREW POINT TSERE
+05B6 HEBREW POINT SEGOL
+05B7 HEBREW POINT PATAH
+ * furtive patah is not a distinct character
+05B8 HEBREW POINT QAMATS
+05B9 HEBREW POINT HOLAM
+05BB HEBREW POINT QUBUTS
+05BC HEBREW POINT DAGESH OR MAPIQ (or shuruq)
+ = shuruq
+ * falls within the base letter
+05BD HEBREW POINT METEG *
+ = siluq
+ * may be used as a Hebrew accent sof pasuq
+05BE HEBREW PUNCTUATION MAQAF
+05BF HEBREW POINT RAFE
+05C0 HEBREW PUNCTUATION PASEQ *
+ = legarmeh
+ * may be treated as spacing punctuation, not as a point
+05C1 HEBREW POINT SHIN DOT
+05C2 HEBREW POINT SIN DOT
+05C3 HEBREW PUNCTUATION SOF PASUQ *
+ * may be used as a Hebrew punctuation colon
+05C4 HEBREW MARK UPPER DOT
+@ Based on ISO 8859-8
+05D0 HEBREW LETTER ALEF
+ = aleph
+ x (alef symbol - 2135)
+05D1 HEBREW LETTER BET
+ x (bet symbol - 2136)
+05D2 HEBREW LETTER GIMEL
+ x (gimel symbol - 2137)
+05D3 HEBREW LETTER DALET
+ x (dalet symbol - 2138)
+05D4 HEBREW LETTER HE
+05D5 HEBREW LETTER VAV
+05D6 HEBREW LETTER ZAYIN
+05D7 HEBREW LETTER HET
+05D8 HEBREW LETTER TET
+05D9 HEBREW LETTER YOD
+05DA HEBREW LETTER FINAL KAF
+05DB HEBREW LETTER KAF
+05DC HEBREW LETTER LAMED
+05DD HEBREW LETTER FINAL MEM
+05DE HEBREW LETTER MEM
+05DF HEBREW LETTER FINAL NUN
+05E0 HEBREW LETTER NUN
+05E1 HEBREW LETTER SAMEKH
+05E2 HEBREW LETTER AYIN
+05E3 HEBREW LETTER FINAL PE
+05E4 HEBREW LETTER PE
+05E5 HEBREW LETTER FINAL TSADI
+05E6 HEBREW LETTER TSADI
+ = zade
+05E7 HEBREW LETTER QOF
+05E8 HEBREW LETTER RESH
+05E9 HEBREW LETTER SHIN
+05EA HEBREW LETTER TAV
+@ Yiddish digraphs
+05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV
+ = tsvey vovn
+05F1 HEBREW LIGATURE YIDDISH VAV YOD
+05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD
+ = tsvey yudn
+@ Additional punctuation
+05F3 HEBREW PUNCTUATION GERESH
+05F4 HEBREW PUNCTUATION GERSHAYIM
+@@ 0600 Arabic 06FF
+@ Based on ISO 8859-6
+060C ARABIC COMMA
+ * also used with Thaana and Syriac in modern text
+ x (comma - 002C)
+061B ARABIC SEMICOLON
+ * also used with Thaana and Syriac in modern text
+ x (semicolon - 003B)
+061F ARABIC QUESTION MARK
+ * also used with Thaana and Syriac in modern text
+ x (question mark - 003F)
+0621 ARABIC LETTER HAMZA
+ x (modifier letter right half ring - 02BE)
+0622 ARABIC LETTER ALEF WITH MADDA ABOVE
+ : 0627 0653
+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
+ : 0627 0654
+0624 ARABIC LETTER WAW WITH HAMZA ABOVE
+ : 0648 0654
+0625 ARABIC LETTER ALEF WITH HAMZA BELOW
+ : 0627 0655
+0626 ARABIC LETTER YEH WITH HAMZA ABOVE
+ : 064A 0654
+0627 ARABIC LETTER ALEF
+0628 ARABIC LETTER BEH
+0629 ARABIC LETTER TEH MARBUTA
+062A ARABIC LETTER TEH
+062B ARABIC LETTER THEH
+062C ARABIC LETTER JEEM
+062D ARABIC LETTER HAH
+062E ARABIC LETTER KHAH
+062F ARABIC LETTER DAL
+0630 ARABIC LETTER THAL
+0631 ARABIC LETTER REH
+0632 ARABIC LETTER ZAIN
+0633 ARABIC LETTER SEEN
+0634 ARABIC LETTER SHEEN
+0635 ARABIC LETTER SAD
+0636 ARABIC LETTER DAD
+0637 ARABIC LETTER TAH
+0638 ARABIC LETTER ZAH
+0639 ARABIC LETTER AIN
+ x (latin small letter ezh reversed - 01B9)
+ x (modifier letter left half ring - 02BF)
+063A ARABIC LETTER GHAIN
+0640 ARABIC TATWEEL
+ = kashida
+ * inserted to stretch characters
+ * also used with Syriac
+0641 ARABIC LETTER FEH
+0642 ARABIC LETTER QAF
+0643 ARABIC LETTER KAF
+0644 ARABIC LETTER LAM
+0645 ARABIC LETTER MEEM
+0646 ARABIC LETTER NOON
+0647 ARABIC LETTER HEH
+0648 ARABIC LETTER WAW
+0649 ARABIC LETTER ALEF MAKSURA
+ * represents YEH-shaped letter with no dots in any positional form
+064A ARABIC LETTER YEH
+@ Points from ISO 8859-6
+064B ARABIC FATHATAN
+064C ARABIC DAMMATAN
+064D ARABIC KASRATAN
+064E ARABIC FATHA
+064F ARABIC DAMMA
+0650 ARABIC KASRA
+0651 ARABIC SHADDA
+0652 ARABIC SUKUN
+@ Combining maddah and hamza
+0653 ARABIC MADDAH ABOVE
+0654 ARABIC HAMZA ABOVE
+0655 ARABIC HAMZA BELOW
+@ Arabic-Indic digits
+0660 ARABIC-INDIC DIGIT ZERO
+0661 ARABIC-INDIC DIGIT ONE
+0662 ARABIC-INDIC DIGIT TWO
+0663 ARABIC-INDIC DIGIT THREE
+0664 ARABIC-INDIC DIGIT FOUR
+0665 ARABIC-INDIC DIGIT FIVE
+0666 ARABIC-INDIC DIGIT SIX
+0667 ARABIC-INDIC DIGIT SEVEN
+0668 ARABIC-INDIC DIGIT EIGHT
+0669 ARABIC-INDIC DIGIT NINE
+@ Punctuation
+066A ARABIC PERCENT SIGN
+ x (percent sign - 0025)
+066B ARABIC DECIMAL SEPARATOR
+066C ARABIC THOUSANDS SEPARATOR
+066D ARABIC FIVE POINTED STAR
+ x (asterisk - 002A)
+@ Point
+0670 ARABIC LETTER SUPERSCRIPT ALEF
+@ Extended Arabic letters
+0671 ARABIC LETTER ALEF WASLA
+ * Arabic
+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+ * Baluchi, Kashmiri
+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+ * Baluchi, Kashmiri
+0674 ARABIC LETTER HIGH HAMZA
+ * Kazakh
+ * forms digraphs
+0675 ARABIC LETTER HIGH HAMZA ALEF
+ * Kazakh
+ # 0627 0674
+0676 ARABIC LETTER HIGH HAMZA WAW
+ * Kazakh
+ # 0648 0674
+0677 ARABIC LETTER U WITH HAMZA ABOVE
+ * Kazakh
+ # 06C7 0674
+0678 ARABIC LETTER HIGH HAMZA YEH
+ * Kazakh
+ # 064A 0674
+0679 ARABIC LETTER TTEH
+ * Urdu
+067A ARABIC LETTER TTEHEH
+ * Sindhi
+067B ARABIC LETTER BEEH
+ * Sindhi
+067C ARABIC LETTER TEH WITH RING
+ * Pashto
+067D ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+ * Sindhi
+067E ARABIC LETTER PEH
+ * Persian, Urdu, ...
+067F ARABIC LETTER TEHEH
+ * Sindhi
+0680 ARABIC LETTER BEHEH
+ * Sindhi
+0681 ARABIC LETTER HAH WITH HAMZA ABOVE
+ * Pashto
+0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+ * Pashto
+0683 ARABIC LETTER NYEH
+ * Sindhi
+0684 ARABIC LETTER DYEH
+ * Sindhi
+0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE
+ * Pashto
+0686 ARABIC LETTER TCHEH
+ * Persian, Urdu, ...
+0687 ARABIC LETTER TCHEHEH
+ * Sindhi
+0688 ARABIC LETTER DDAL
+ * Urdu
+0689 ARABIC LETTER DAL WITH RING
+ * Pashto
+068A ARABIC LETTER DAL WITH DOT BELOW
+ * Sindhi
+068B ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+ * Lahnda
+068C ARABIC LETTER DAHAL
+ * Sindhi
+068D ARABIC LETTER DDAHAL
+ * Sindhi
+068E ARABIC LETTER DUL
+ * Sindhi
+068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+ * Sindhi
+0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+ * Urdu
+0691 ARABIC LETTER RREH
+ * Urdu
+0692 ARABIC LETTER REH WITH SMALL V
+ * Kurdish
+0693 ARABIC LETTER REH WITH RING
+ * Pashto
+0694 ARABIC LETTER REH WITH DOT BELOW
+ * Kurdish
+0695 ARABIC LETTER REH WITH SMALL V BELOW
+ * Kurdish
+0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+ * Pashto
+0697 ARABIC LETTER REH WITH TWO DOTS ABOVE
+ * Dargwa
+0698 ARABIC LETTER JEH
+ * Persian, Urdu, ...
+0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE
+ * Sindhi
+069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+ * Pashto
+069B ARABIC LETTER SEEN WITH THREE DOTS BELOW
+ * Uighur
+069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+ * Moroccan Arabic
+069D ARABIC LETTER SAD WITH TWO DOTS BELOW
+ * Turkic
+069E ARABIC LETTER SAD WITH THREE DOTS ABOVE
+ * Berber
+069F ARABIC LETTER TAH WITH THREE DOTS ABOVE
+ * old Hausa
+06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
+ * old Malay
+06A1 ARABIC LETTER DOTLESS FEH
+ * Adighe
+06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW
+ * Maghrib Arabic
+06A3 ARABIC LETTER FEH WITH DOT BELOW
+ * Ingush
+06A4 ARABIC LETTER VEH
+ * Arabic for foreign words
+06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW
+ * Arabic for foreign words
+06A6 ARABIC LETTER PEHEH
+ * Sindhi
+06A7 ARABIC LETTER QAF WITH DOT ABOVE
+ * Maghrib Arabic
+06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE
+ * Tunisian Arabic
+06A9 ARABIC LETTER KEHEH
+ * Persian, Urdu, ...
+06AA ARABIC LETTER SWASH KAF
+06AB ARABIC LETTER KAF WITH RING
+ * Pashto
+06AC ARABIC LETTER KAF WITH DOT ABOVE
+ * old Malay
+06AD ARABIC LETTER NG
+ * Uighur, Kazakh, old Malay, ...
+06AE ARABIC LETTER KAF WITH THREE DOTS BELOW
+ * Berber
+06AF ARABIC LETTER GAF *
+ * Persian, Urdu, ...
+06B0 ARABIC LETTER GAF WITH RING
+ * Lahnda
+06B1 ARABIC LETTER NGOEH
+ * Sindhi
+06B2 ARABIC LETTER GAF WITH TWO DOTS BELOW
+ * Sindhi
+06B3 ARABIC LETTER GUEH
+ * Sindhi
+06B4 ARABIC LETTER GAF WITH THREE DOTS ABOVE
+ * Sindhi
+06B5 ARABIC LETTER LAM WITH SMALL V
+ * Kurdish
+06B6 ARABIC LETTER LAM WITH DOT ABOVE
+ * Kurdish
+06B7 ARABIC LETTER LAM WITH THREE DOTS ABOVE
+ * Kurdish
+06B8 ARABIC LETTER LAM WITH THREE DOTS BELOW
+06B9 ARABIC LETTER NOON WITH DOT BELOW
+06BA ARABIC LETTER NOON GHUNNA
+ * Urdu
+06BB ARABIC LETTER RNOON
+ * Sindhi
+06BC ARABIC LETTER NOON WITH RING
+ * Pashto
+06BD ARABIC LETTER NOON WITH THREE DOTS ABOVE
+ * old Malay
+06BE ARABIC LETTER HEH DOACHASHMEE
+ * Urdu
+ * forms aspirate digraphs
+06BF ARABIC LETTER TCHEH WITH DOT ABOVE
+06C0 ARABIC LETTER HEH WITH YEH ABOVE
+ = ARABIC LETTER HAMZAH ON HA
+ = izafet
+ * Persian, Urdu
+ * actually a ligature, and not an independent letter
+ : 06D5 0654
+06C1 ARABIC LETTER HEH GOAL
+ * Urdu
+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+ * Urdu
+ * actually a ligature, and not an independent letter
+ : 06C1 0654
+06C3 ARABIC LETTER TEH MARBUTA GOAL
+ * Urdu
+06C4 ARABIC LETTER WAW WITH RING
+ * Kashmiri
+06C5 ARABIC LETTER KIRGHIZ OE
+ * Kirghiz
+06C6 ARABIC LETTER OE
+ * Uighur, Kurdish, Kazakh
+06C7 ARABIC LETTER U
+ * Kirghiz
+06C8 ARABIC LETTER YU
+ * Uighur
+06C9 ARABIC LETTER KIRGHIZ YU
+ * Kazakh, Kirghiz
+06CA ARABIC LETTER WAW WITH TWO DOTS ABOVE
+ * Kurdish
+06CB ARABIC LETTER VE
+ * Uighur, Kazakh
+06CC ARABIC LETTER FARSI YEH
+ * Arabic, Persian, Urdu, ...
+06CD ARABIC LETTER YEH WITH TAIL
+ * Pashto, Sindhi
+06CE ARABIC LETTER YEH WITH SMALL V
+ * Kurdish
+06CF ARABIC LETTER WAW WITH DOT ABOVE
+06D0 ARABIC LETTER E *
+ * Pashto, Uighur
+ * used as the letter bbeh in Sindhi
+06D1 ARABIC LETTER YEH WITH THREE DOTS BELOW
+ * old Malay
+06D2 ARABIC LETTER YEH BARREE
+ * Urdu
+06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ * Urdu
+ * actually a ligature, and not an independent letter
+ : 06D2 0654
+@ Punctuation
+06D4 ARABIC FULL STOP
+ * Urdu
+@ Extended Arabic letter
+06D5 ARABIC LETTER AE
+ * Uighur, Kazakh, Kirghiz
+@ Koranic annotation signs
+06D6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8 ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9 ARABIC SMALL HIGH LAM ALEF
+06DA ARABIC SMALL HIGH JEEM
+06DB ARABIC SMALL HIGH THREE DOTS
+06DC ARABIC SMALL HIGH SEEN
+06DD ARABIC END OF AYAH
+06DE ARABIC START OF RUB EL HIZB
+06DF ARABIC SMALL HIGH ROUNDED ZERO
+06E0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2 ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3 ARABIC SMALL LOW SEEN
+06E4 ARABIC SMALL HIGH MADDA
+06E5 ARABIC SMALL WAW
+06E6 ARABIC SMALL YEH
+06E7 ARABIC SMALL HIGH YEH
+06E8 ARABIC SMALL HIGH NOON
+06E9 ARABIC PLACE OF SAJDAH
+06EA ARABIC EMPTY CENTRE LOW STOP
+06EB ARABIC EMPTY CENTRE HIGH STOP
+06EC ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED ARABIC SMALL LOW MEEM
+@ Eastern Arabic-Indic digits (Persian and Urdu)
+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
+06F1 EXTENDED ARABIC-INDIC DIGIT ONE
+06F2 EXTENDED ARABIC-INDIC DIGIT TWO
+06F3 EXTENDED ARABIC-INDIC DIGIT THREE
+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
+ * different glyphs in Persian and Urdu
+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
+ * Persian and Urdu share glyph different from Arabic
+06F6 EXTENDED ARABIC-INDIC DIGIT SIX
+ * Persian glyph different from Arabic
+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
+ * Urdu glyph different from Arabic
+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
+06F9 EXTENDED ARABIC-INDIC DIGIT NINE
+@ Extended Arabic letters
+06FA ARABIC LETTER SHEEN WITH DOT BELOW
+06FB ARABIC LETTER DAD WITH DOT BELOW
+06FC ARABIC LETTER GHAIN WITH DOT BELOW
+@ Signs for Sindhi
+06FD ARABIC SIGN SINDHI AMPERSAND
+06FE ARABIC SIGN SINDHI POSTPOSITION MEN
+@@ 0700 Syriac 074F
+@ Syriac punctuation and signs
+0700 SYRIAC END OF PARAGRAPH
+ * marks the end of a paragraph
+0701 SYRIAC SUPRALINEAR FULL STOP
+ * marks interrogations, imperatives, and pauses, especially in Biblical texts
+0702 SYRIAC SUBLINEAR FULL STOP
+ * marks subordinate clauses and minor pauses, especially in Biblical texts
+0703 SYRIAC SUPRALINEAR COLON
+ * marks expressions of wonder and has a distinct pausal value in Biblical texts
+0704 SYRIAC SUBLINEAR COLON
+ * used at the end of verses of supplications
+0705 SYRIAC HORIZONTAL COLON
+ * joins two words closely together in a context to which a rising tone is suitable
+0706 SYRIAC COLON SKEWED LEFT
+ * marks a dependent clause
+0707 SYRIAC COLON SKEWED RIGHT
+ * marks the end of a subdivision of the apodosis, or latter part of a Biblical verse
+0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT
+ * marks a minor phrase division
+0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT
+ * marks the end of a real or rhetorical question
+070A SYRIAC CONTRACTION
+ * a contraction mark, mostly used in East Syriac
+ * placed at the end of an incomplete word
+070B SYRIAC HARKLEAN OBELUS
+ * marks the beginning of a phrase, word, or morpheme that has a marginal note
+070C SYRIAC HARKLEAN METOBELUS
+ * marks the end of a section with a marginal note
+070D SYRIAC HARKLEAN ASTERISCUS
+ * marks the beginning of a phrase, word, or morpheme that has a marginal note
+@ Syriac format control character
+070F SYRIAC ABBREVIATION MARK
+ * marks the beginning of a Syriac abbreviation
+@ Syriac letters
+0710 SYRIAC LETTER ALAPH
+0711 SYRIAC LETTER SUPERSCRIPT ALAPH
+ * used in East Syriac texts to indicate an etymological Alaph
+0712 SYRIAC LETTER BETH
+0713 SYRIAC LETTER GAMAL
+0714 SYRIAC LETTER GAMAL GARSHUNI
+ * used in Garshuni documents
+0715 SYRIAC LETTER DALATH
+0716 SYRIAC LETTER DOTLESS DALATH RISH
+ * ambiguous form for undifferentiated early dalath/rish
+0717 SYRIAC LETTER HE
+0718 SYRIAC LETTER WAW
+0719 SYRIAC LETTER ZAIN
+071A SYRIAC LETTER HETH
+071B SYRIAC LETTER TETH
+071C SYRIAC LETTER TETH GARSHUNI
+ * used in Garshuni documents
+071D SYRIAC LETTER YUDH
+071E SYRIAC LETTER YUDH HE
+ * mostly used in East Syriac texts
+071F SYRIAC LETTER KAPH
+0720 SYRIAC LETTER LAMADH
+0721 SYRIAC LETTER MIM
+0722 SYRIAC LETTER NUN
+0723 SYRIAC LETTER SEMKATH
+0724 SYRIAC LETTER FINAL SEMKATH
+0725 SYRIAC LETTER E
+0726 SYRIAC LETTER PE
+0727 SYRIAC LETTER REVERSED PE
+ * used in Christian Palestinian Aramaic
+0728 SYRIAC LETTER SADHE
+0729 SYRIAC LETTER QAPH
+072A SYRIAC LETTER RISH
+072B SYRIAC LETTER SHIN
+072C SYRIAC LETTER TAW
+@ Syriac points (vowels)
+0730 SYRIAC PTHAHA ABOVE
+0731 SYRIAC PTHAHA BELOW
+0732 SYRIAC PTHAHA DOTTED
+0733 SYRIAC ZQAPHA ABOVE
+0734 SYRIAC ZQAPHA BELOW
+0735 SYRIAC ZQAPHA DOTTED
+0736 SYRIAC RBASA ABOVE
+0737 SYRIAC RBASA BELOW
+0738 SYRIAC DOTTED ZLAMA HORIZONTAL
+0739 SYRIAC DOTTED ZLAMA ANGULAR
+073A SYRIAC HBASA ABOVE
+073B SYRIAC HBASA BELOW
+073C SYRIAC HBASA-ESASA DOTTED
+073D SYRIAC ESASA ABOVE
+073E SYRIAC ESASA BELOW
+073F SYRIAC RWAHA
+@ Syriac marks
+0740 SYRIAC FEMININE DOT
+ * feminine marker used with the Taw feminine suffix
+0741 SYRIAC QUSHSHAYA
+ * indicates a plosive pronunciation
+0742 SYRIAC RUKKAKHA
+ * indicates an aspirated (spirantized) pronunciation
+0743 SYRIAC TWO VERTICAL DOTS ABOVE
+ * accent mark used in ancient manuscripts
+0744 SYRIAC TWO VERTICAL DOTS BELOW
+ * accent mark used in ancient manuscripts
+0745 SYRIAC THREE DOTS ABOVE
+ * diacritic used in Turoyo for letters not found in Syriac
+0746 SYRIAC THREE DOTS BELOW
+ * diacritic used in Turoyo for letters not found in Syriac
+0747 SYRIAC OBLIQUE LINE ABOVE
+ * indication of a silent letter
+0748 SYRIAC OBLIQUE LINE BELOW
+ * indication of a silent letter
+ * also used to indicate numbers multiplied by a certain constant
+0749 SYRIAC MUSIC
+ * a music mark
+ * also used in the Syrian Orthodox Anaphora book to mark the breaking of the Eucharist bread
+074A SYRIAC BARREKH
+ * a diacritic cross used in liturgical texts
+@@ 0780 Thaana 07BF
+@ Basic consonants
+0780 THAANA LETTER HAA
+0781 THAANA LETTER SHAVIYANI
+0782 THAANA LETTER NOONU
+0783 THAANA LETTER RAA
+0784 THAANA LETTER BAA
+0785 THAANA LETTER LHAVIYANI
+0786 THAANA LETTER KAAFU
+0787 THAANA LETTER ALIFU
+0788 THAANA LETTER VAAVU
+0789 THAANA LETTER MEEMU
+078A THAANA LETTER FAAFU
+078B THAANA LETTER DHAALU
+078C THAANA LETTER THAA
+078D THAANA LETTER LAAMU
+078E THAANA LETTER GAAFU
+078F THAANA LETTER GNAVIYANI
+0790 THAANA LETTER SEENU
+0791 THAANA LETTER DAVIYANI
+0792 THAANA LETTER ZAVIYANI
+0793 THAANA LETTER TAVIYANI
+0794 THAANA LETTER YAA
+0795 THAANA LETTER PAVIYANI
+0796 THAANA LETTER JAVIYANI
+0797 THAANA LETTER CHAVIYANI
+@ Extensions for Arabic
+0798 THAANA LETTER TTAA
+0799 THAANA LETTER HHAA
+079A THAANA LETTER KHAA
+079B THAANA LETTER THAALU
+079C THAANA LETTER ZAA
+079D THAANA LETTER SHEENU
+079E THAANA LETTER SAADHU
+079F THAANA LETTER DAADHU
+07A0 THAANA LETTER TO
+07A1 THAANA LETTER ZO
+07A2 THAANA LETTER AINU
+07A3 THAANA LETTER GHAINU
+07A4 THAANA LETTER QAAFU
+07A5 THAANA LETTER WAAVU
+@ Vowels
+07A6 THAANA ABAFILI
+07A7 THAANA AABAAFILI
+07A8 THAANA IBIFILI
+07A9 THAANA EEBEEFILI
+07AA THAANA UBUFILI
+07AB THAANA OOBOOFILI
+07AC THAANA EBEFILI
+07AD THAANA EYBEYFILI
+07AE THAANA OBOFILI
+07AF THAANA OABOAFILI
+07B0 THAANA SUKUN
+@@ 0900 Devanagari 097F
+@ Based on ISCII 1988
+@ Various signs
+0901 DEVANAGARI SIGN CANDRABINDU
+ = anunasika
+ x (combining candrabindu - 0310)
+0902 DEVANAGARI SIGN ANUSVARA
+ = bindu
+0903 DEVANAGARI SIGN VISARGA
+@ Independent vowels
+0905 DEVANAGARI LETTER A
+0906 DEVANAGARI LETTER AA
+0907 DEVANAGARI LETTER I
+0908 DEVANAGARI LETTER II
+0909 DEVANAGARI LETTER U
+090A DEVANAGARI LETTER UU
+090B DEVANAGARI LETTER VOCALIC R
+090C DEVANAGARI LETTER VOCALIC L
+090D DEVANAGARI LETTER CANDRA E
+090E DEVANAGARI LETTER SHORT E
+ * for transcribing Dravidian short e
+090F DEVANAGARI LETTER E
+0910 DEVANAGARI LETTER AI
+0911 DEVANAGARI LETTER CANDRA O
+0912 DEVANAGARI LETTER SHORT O
+ * for transcribing Dravidian short o
+0913 DEVANAGARI LETTER O
+0914 DEVANAGARI LETTER AU
+@ Consonants
+0915 DEVANAGARI LETTER KA
+0916 DEVANAGARI LETTER KHA
+0917 DEVANAGARI LETTER GA
+0918 DEVANAGARI LETTER GHA
+0919 DEVANAGARI LETTER NGA
+091A DEVANAGARI LETTER CA
+091B DEVANAGARI LETTER CHA
+091C DEVANAGARI LETTER JA
+091D DEVANAGARI LETTER JHA
+091E DEVANAGARI LETTER NYA
+091F DEVANAGARI LETTER TTA
+0920 DEVANAGARI LETTER TTHA
+0921 DEVANAGARI LETTER DDA
+0922 DEVANAGARI LETTER DDHA
+0923 DEVANAGARI LETTER NNA
+0924 DEVANAGARI LETTER TA
+0925 DEVANAGARI LETTER THA
+0926 DEVANAGARI LETTER DA
+0927 DEVANAGARI LETTER DHA
+0928 DEVANAGARI LETTER NA
+0929 DEVANAGARI LETTER NNNA
+ * for transcribing Dravidian alveolar n
+ : 0928 093C
+092A DEVANAGARI LETTER PA
+092B DEVANAGARI LETTER PHA
+092C DEVANAGARI LETTER BA
+092D DEVANAGARI LETTER BHA
+092E DEVANAGARI LETTER MA
+092F DEVANAGARI LETTER YA
+0930 DEVANAGARI LETTER RA
+0931 DEVANAGARI LETTER RRA
+ * for transcribing Dravidian alveolar r
+ * half form is represented as "Eyelash RA"
+ : 0930 093C
+0932 DEVANAGARI LETTER LA
+0933 DEVANAGARI LETTER LLA
+0934 DEVANAGARI LETTER LLLA
+ * for transcribing Dravidian l
+ : 0933 093C
+0935 DEVANAGARI LETTER VA
+0936 DEVANAGARI LETTER SHA
+0937 DEVANAGARI LETTER SSA
+0938 DEVANAGARI LETTER SA
+0939 DEVANAGARI LETTER HA
+@ Various signs
+093C DEVANAGARI SIGN NUKTA
+ * for extending the alphabet to new letters
+093D DEVANAGARI SIGN AVAGRAHA
+093E DEVANAGARI VOWEL SIGN AA
+@ Dependent vowel signs
+093F DEVANAGARI VOWEL SIGN I
+ * stands to the left of the consonant
+0940 DEVANAGARI VOWEL SIGN II
+0941 DEVANAGARI VOWEL SIGN U
+0942 DEVANAGARI VOWEL SIGN UU
+0943 DEVANAGARI VOWEL SIGN VOCALIC R
+0944 DEVANAGARI VOWEL SIGN VOCALIC RR
+0945 DEVANAGARI VOWEL SIGN CANDRA E
+ = candra
+0946 DEVANAGARI VOWEL SIGN SHORT E
+ * for transcribing Dravidian vowels
+0947 DEVANAGARI VOWEL SIGN E
+0948 DEVANAGARI VOWEL SIGN AI
+0949 DEVANAGARI VOWEL SIGN CANDRA O
+094A DEVANAGARI VOWEL SIGN SHORT O
+ * for transcribing Dravidian vowels
+094B DEVANAGARI VOWEL SIGN O
+094C DEVANAGARI VOWEL SIGN AU
+@ Various signs
+094D DEVANAGARI SIGN VIRAMA
+ = halant
+ * suppresses inherent vowel
+0950 DEVANAGARI OM
+0951 DEVANAGARI STRESS SIGN UDATTA
+0952 DEVANAGARI STRESS SIGN ANUDATTA
+0953 DEVANAGARI GRAVE ACCENT
+0954 DEVANAGARI ACUTE ACCENT
+@ Additional consonants
+0958 DEVANAGARI LETTER QA
+ : 0915 093C
+0959 DEVANAGARI LETTER KHHA
+ : 0916 093C
+095A DEVANAGARI LETTER GHHA
+ : 0917 093C
+095B DEVANAGARI LETTER ZA
+ : 091C 093C
+095C DEVANAGARI LETTER DDDHA
+ : 0921 093C
+095D DEVANAGARI LETTER RHA
+ : 0922 093C
+095E DEVANAGARI LETTER FA
+ : 092B 093C
+095F DEVANAGARI LETTER YYA
+ : 092F 093C
+@ Generic additions
+0960 DEVANAGARI LETTER VOCALIC RR
+0961 DEVANAGARI LETTER VOCALIC LL
+0962 DEVANAGARI VOWEL SIGN VOCALIC L
+0963 DEVANAGARI VOWEL SIGN VOCALIC LL
+0964 DEVANAGARI DANDA
+ = phrase separator
+0965 DEVANAGARI DOUBLE DANDA
+@ Digits
+0966 DEVANAGARI DIGIT ZERO
+0967 DEVANAGARI DIGIT ONE
+0968 DEVANAGARI DIGIT TWO
+0969 DEVANAGARI DIGIT THREE
+096A DEVANAGARI DIGIT FOUR
+096B DEVANAGARI DIGIT FIVE
+096C DEVANAGARI DIGIT SIX
+096D DEVANAGARI DIGIT SEVEN
+096E DEVANAGARI DIGIT EIGHT
+096F DEVANAGARI DIGIT NINE
+@ Devanagari-specific additions
+0970 DEVANAGARI ABBREVIATION SIGN
+@@ 0980 Bengali 09FF
+@ Based on ISCII 1988
+@ Various signs
+0981 BENGALI SIGN CANDRABINDU
+0982 BENGALI SIGN ANUSVARA
+0983 BENGALI SIGN VISARGA
+@ Independent vowels
+0985 BENGALI LETTER A
+0986 BENGALI LETTER AA
+0987 BENGALI LETTER I
+0988 BENGALI LETTER II
+0989 BENGALI LETTER U
+098A BENGALI LETTER UU
+098B BENGALI LETTER VOCALIC R
+098C BENGALI LETTER VOCALIC L
+098F BENGALI LETTER E
+0990 BENGALI LETTER AI
+0993 BENGALI LETTER O
+0994 BENGALI LETTER AU
+@ Consonants
+0995 BENGALI LETTER KA
+0996 BENGALI LETTER KHA
+0997 BENGALI LETTER GA
+0998 BENGALI LETTER GHA
+0999 BENGALI LETTER NGA
+099A BENGALI LETTER CA
+099B BENGALI LETTER CHA
+099C BENGALI LETTER JA
+099D BENGALI LETTER JHA
+099E BENGALI LETTER NYA
+099F BENGALI LETTER TTA
+09A0 BENGALI LETTER TTHA
+09A1 BENGALI LETTER DDA
+09A2 BENGALI LETTER DDHA
+09A3 BENGALI LETTER NNA
+09A4 BENGALI LETTER TA
+09A5 BENGALI LETTER THA
+09A6 BENGALI LETTER DA
+09A7 BENGALI LETTER DHA
+09A8 BENGALI LETTER NA
+09AA BENGALI LETTER PA
+09AB BENGALI LETTER PHA
+09AC BENGALI LETTER BA
+ = Bengali va, wa
+09AD BENGALI LETTER BHA
+09AE BENGALI LETTER MA
+09AF BENGALI LETTER YA
+09B0 BENGALI LETTER RA
+09B2 BENGALI LETTER LA
+09B6 BENGALI LETTER SHA
+09B7 BENGALI LETTER SSA
+09B8 BENGALI LETTER SA
+09B9 BENGALI LETTER HA
+@ Various signs
+09BC BENGALI SIGN NUKTA
+ * for extending the alphabet to new letters
+@ Dependent vowel signs
+09BE BENGALI VOWEL SIGN AA
+09BF BENGALI VOWEL SIGN I
+ * stands to the left of the consonant
+09C0 BENGALI VOWEL SIGN II
+09C1 BENGALI VOWEL SIGN U
+09C2 BENGALI VOWEL SIGN UU
+09C3 BENGALI VOWEL SIGN VOCALIC R
+09C4 BENGALI VOWEL SIGN VOCALIC RR
+09C7 BENGALI VOWEL SIGN E
+ * stands to the left of the consonant
+09C8 BENGALI VOWEL SIGN AI
+ * stands to the left of the consonant
+09CB BENGALI VOWEL SIGN O
+ * pieces on both sides of the consonant
+ : 09C7 09BE
+09CC BENGALI VOWEL SIGN AU
+ * pieces on both sides of the consonant
+ : 09C7 09D7
+@ Various signs
+09CD BENGALI SIGN VIRAMA
+ = halant
+09D7 BENGALI AU LENGTH MARK
+@ Additional consonants
+09DC BENGALI LETTER RRA
+ : 09A1 09BC
+09DD BENGALI LETTER RHA
+ : 09A2 09BC
+09DF BENGALI LETTER YYA
+ : 09AF 09BC
+@ Generic additions
+09E0 BENGALI LETTER VOCALIC RR
+09E1 BENGALI LETTER VOCALIC LL
+09E2 BENGALI VOWEL SIGN VOCALIC L
+09E3 BENGALI VOWEL SIGN VOCALIC LL
+@ Digits
+09E6 BENGALI DIGIT ZERO
+09E7 BENGALI DIGIT ONE
+09E8 BENGALI DIGIT TWO
+09E9 BENGALI DIGIT THREE
+09EA BENGALI DIGIT FOUR
+09EB BENGALI DIGIT FIVE
+09EC BENGALI DIGIT SIX
+09ED BENGALI DIGIT SEVEN
+09EE BENGALI DIGIT EIGHT
+09EF BENGALI DIGIT NINE
+@ Bengali-specific additions
+09F0 BENGALI LETTER RA WITH MIDDLE DIAGONAL (Assamese)
+ * Assamese
+09F1 BENGALI LETTER RA WITH LOWER DIAGONAL (Assamese)
+ = BENGALI LETTER VA WITH LOWER DIAGONAL
+ * Assamese
+09F2 BENGALI RUPEE MARK
+09F3 BENGALI RUPEE SIGN
+09F4 BENGALI CURRENCY NUMERATOR ONE
+09F5 BENGALI CURRENCY NUMERATOR TWO
+09F6 BENGALI CURRENCY NUMERATOR THREE
+09F7 BENGALI CURRENCY NUMERATOR FOUR
+09F8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9 BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA BENGALI ISSHAR
+@@ 0A00 Gurmukhi 0A7F
+@ Based on ISCII 1988
+@ Various signs
+0A02 GURMUKHI SIGN BINDI
+@ Independent vowels
+0A05 GURMUKHI LETTER A
+0A06 GURMUKHI LETTER AA
+0A07 GURMUKHI LETTER I
+0A08 GURMUKHI LETTER II
+0A09 GURMUKHI LETTER U
+0A0A GURMUKHI LETTER UU
+0A0F GURMUKHI LETTER EE
+0A10 GURMUKHI LETTER AI
+0A13 GURMUKHI LETTER OO
+0A14 GURMUKHI LETTER AU
+@ Consonants
+0A15 GURMUKHI LETTER KA
+0A16 GURMUKHI LETTER KHA
+0A17 GURMUKHI LETTER GA
+0A18 GURMUKHI LETTER GHA
+0A19 GURMUKHI LETTER NGA
+0A1A GURMUKHI LETTER CA
+0A1B GURMUKHI LETTER CHA
+0A1C GURMUKHI LETTER JA
+0A1D GURMUKHI LETTER JHA
+0A1E GURMUKHI LETTER NYA
+0A1F GURMUKHI LETTER TTA
+0A20 GURMUKHI LETTER TTHA
+0A21 GURMUKHI LETTER DDA
+0A22 GURMUKHI LETTER DDHA
+0A23 GURMUKHI LETTER NNA
+0A24 GURMUKHI LETTER TA
+0A25 GURMUKHI LETTER THA
+0A26 GURMUKHI LETTER DA
+0A27 GURMUKHI LETTER DHA
+0A28 GURMUKHI LETTER NA
+0A2A GURMUKHI LETTER PA
+0A2B GURMUKHI LETTER PHA
+0A2C GURMUKHI LETTER BA
+0A2D GURMUKHI LETTER BHA
+0A2E GURMUKHI LETTER MA
+0A2F GURMUKHI LETTER YA
+0A30 GURMUKHI LETTER RA
+0A32 GURMUKHI LETTER LA
+0A33 GURMUKHI LETTER LLA
+ : 0A32 0A3C
+0A35 GURMUKHI LETTER VA
+0A36 GURMUKHI LETTER SHA
+ : 0A38 0A3C
+0A38 GURMUKHI LETTER SA
+0A39 GURMUKHI LETTER HA
+@ Various signs
+0A3C GURMUKHI SIGN NUKTA
+ * for extending the alphabet to new letters
+@ Dependent vowel signs
+0A3E GURMUKHI VOWEL SIGN AA
+0A3F GURMUKHI VOWEL SIGN I
+ * stands to the left of the consonant
+0A40 GURMUKHI VOWEL SIGN II
+0A41 GURMUKHI VOWEL SIGN U
+0A42 GURMUKHI VOWEL SIGN UU
+0A47 GURMUKHI VOWEL SIGN EE
+0A48 GURMUKHI VOWEL SIGN AI
+0A4B GURMUKHI VOWEL SIGN OO
+0A4C GURMUKHI VOWEL SIGN AU
+0A4D GURMUKHI SIGN VIRAMA
+@ Additional consonants
+0A59 GURMUKHI LETTER KHHA
+ : 0A16 0A3C
+0A5A GURMUKHI LETTER GHHA
+ : 0A17 0A3C
+0A5B GURMUKHI LETTER ZA
+ : 0A1C 0A3C
+0A5C GURMUKHI LETTER RRA
+0A5E GURMUKHI LETTER FA
+ : 0A2B 0A3C
+@ Digits
+0A66 GURMUKHI DIGIT ZERO
+0A67 GURMUKHI DIGIT ONE
+0A68 GURMUKHI DIGIT TWO
+0A69 GURMUKHI DIGIT THREE
+0A6A GURMUKHI DIGIT FOUR
+0A6B GURMUKHI DIGIT FIVE
+0A6C GURMUKHI DIGIT SIX
+0A6D GURMUKHI DIGIT SEVEN
+0A6E GURMUKHI DIGIT EIGHT
+0A6F GURMUKHI DIGIT NINE
+@ Gurmukhi-specific additions
+0A70 GURMUKHI TIPPI
+ * nasalization
+0A71 GURMUKHI ADDAK
+ * doubles following consonant
+0A72 GURMUKHI IRI
+ * base for vowels
+0A73 GURMUKHI URA
+ * base for vowels
+0A74 GURMUKHI EK ONKAR
+ * God is One
+@@ 0A80 Gujarati 0AFF
+@ Based on ISCII 1988
+@ Various signs
+0A81 GUJARATI SIGN CANDRABINDU
+0A82 GUJARATI SIGN ANUSVARA
+0A83 GUJARATI SIGN VISARGA
+@ Independent vowels
+0A85 GUJARATI LETTER A
+0A86 GUJARATI LETTER AA
+0A87 GUJARATI LETTER I
+0A88 GUJARATI LETTER II
+0A89 GUJARATI LETTER U
+0A8A GUJARATI LETTER UU
+0A8B GUJARATI LETTER VOCALIC R
+0A8D GUJARATI VOWEL CANDRA E
+0A8F GUJARATI LETTER E
+0A90 GUJARATI LETTER AI
+0A91 GUJARATI VOWEL CANDRA O
+0A93 GUJARATI LETTER O
+0A94 GUJARATI LETTER AU
+@ Consonants
+0A95 GUJARATI LETTER KA
+0A96 GUJARATI LETTER KHA
+0A97 GUJARATI LETTER GA
+0A98 GUJARATI LETTER GHA
+0A99 GUJARATI LETTER NGA
+0A9A GUJARATI LETTER CA
+0A9B GUJARATI LETTER CHA
+0A9C GUJARATI LETTER JA
+0A9D GUJARATI LETTER JHA
+0A9E GUJARATI LETTER NYA
+0A9F GUJARATI LETTER TTA
+0AA0 GUJARATI LETTER TTHA
+0AA1 GUJARATI LETTER DDA
+0AA2 GUJARATI LETTER DDHA
+0AA3 GUJARATI LETTER NNA
+0AA4 GUJARATI LETTER TA
+0AA5 GUJARATI LETTER THA
+0AA6 GUJARATI LETTER DA
+0AA7 GUJARATI LETTER DHA
+0AA8 GUJARATI LETTER NA
+0AAA GUJARATI LETTER PA
+0AAB GUJARATI LETTER PHA
+0AAC GUJARATI LETTER BA
+0AAD GUJARATI LETTER BHA
+0AAE GUJARATI LETTER MA
+0AAF GUJARATI LETTER YA
+0AB0 GUJARATI LETTER RA
+0AB2 GUJARATI LETTER LA
+0AB3 GUJARATI LETTER LLA
+0AB5 GUJARATI LETTER VA
+0AB6 GUJARATI LETTER SHA
+0AB7 GUJARATI LETTER SSA
+0AB8 GUJARATI LETTER SA
+0AB9 GUJARATI LETTER HA
+@ Various signs
+0ABC GUJARATI SIGN NUKTA
+ * for extending the alphabet to new letters
+0ABD GUJARATI SIGN AVAGRAHA
+@ Dependent vowel signs
+0ABE GUJARATI VOWEL SIGN AA
+0ABF GUJARATI VOWEL SIGN I
+ * stands to the left of the consonant
+0AC0 GUJARATI VOWEL SIGN II
+0AC1 GUJARATI VOWEL SIGN U
+0AC2 GUJARATI VOWEL SIGN UU
+0AC3 GUJARATI VOWEL SIGN VOCALIC R
+0AC4 GUJARATI VOWEL SIGN VOCALIC RR
+0AC5 GUJARATI VOWEL SIGN CANDRA E
+0AC7 GUJARATI VOWEL SIGN E
+0AC8 GUJARATI VOWEL SIGN AI
+0AC9 GUJARATI VOWEL SIGN CANDRA O
+0ACB GUJARATI VOWEL SIGN O
+0ACC GUJARATI VOWEL SIGN AU
+@ Various signs
+0ACD GUJARATI SIGN VIRAMA
+0AD0 GUJARATI OM
+@ Generic additions
+0AE0 GUJARATI LETTER VOCALIC RR
+@ Digits
+0AE6 GUJARATI DIGIT ZERO
+0AE7 GUJARATI DIGIT ONE
+0AE8 GUJARATI DIGIT TWO
+0AE9 GUJARATI DIGIT THREE
+0AEA GUJARATI DIGIT FOUR
+0AEB GUJARATI DIGIT FIVE
+0AEC GUJARATI DIGIT SIX
+0AED GUJARATI DIGIT SEVEN
+0AEE GUJARATI DIGIT EIGHT
+0AEF GUJARATI DIGIT NINE
+@@ 0B00 Oriya 0B7F
+@ Based on ISCII 1988
+@ Various signs
+0B01 ORIYA SIGN CANDRABINDU
+0B02 ORIYA SIGN ANUSVARA
+0B03 ORIYA SIGN VISARGA
+@ Independent vowels
+0B05 ORIYA LETTER A
+0B06 ORIYA LETTER AA
+0B07 ORIYA LETTER I
+0B08 ORIYA LETTER II
+0B09 ORIYA LETTER U
+0B0A ORIYA LETTER UU
+0B0B ORIYA LETTER VOCALIC R
+0B0C ORIYA LETTER VOCALIC L
+0B0F ORIYA LETTER E
+0B10 ORIYA LETTER AI
+0B13 ORIYA LETTER O
+0B14 ORIYA LETTER AU
+@ Consonants
+0B15 ORIYA LETTER KA
+0B16 ORIYA LETTER KHA
+0B17 ORIYA LETTER GA
+0B18 ORIYA LETTER GHA
+0B19 ORIYA LETTER NGA
+0B1A ORIYA LETTER CA
+0B1B ORIYA LETTER CHA
+0B1C ORIYA LETTER JA
+0B1D ORIYA LETTER JHA
+0B1E ORIYA LETTER NYA
+0B1F ORIYA LETTER TTA
+0B20 ORIYA LETTER TTHA
+0B21 ORIYA LETTER DDA
+0B22 ORIYA LETTER DDHA
+0B23 ORIYA LETTER NNA
+0B24 ORIYA LETTER TA
+0B25 ORIYA LETTER THA
+0B26 ORIYA LETTER DA
+0B27 ORIYA LETTER DHA
+0B28 ORIYA LETTER NA
+0B2A ORIYA LETTER PA
+0B2B ORIYA LETTER PHA
+0B2C ORIYA LETTER BA
+ = Oriya va, wa
+0B2D ORIYA LETTER BHA
+0B2E ORIYA LETTER MA
+0B2F ORIYA LETTER YA
+0B30 ORIYA LETTER RA
+0B32 ORIYA LETTER LA
+0B33 ORIYA LETTER LLA
+0B35 <reserved>
+ x (oriya letter ba - 0B2C)
+0B36 ORIYA LETTER SHA
+0B37 ORIYA LETTER SSA
+0B38 ORIYA LETTER SA
+0B39 ORIYA LETTER HA
+@ Various signs
+0B3C ORIYA SIGN NUKTA
+ * for extending the alphabet to new letters
+0B3D ORIYA SIGN AVAGRAHA
+@ Dependent vowel signs
+0B3E ORIYA VOWEL SIGN AA
+0B3F ORIYA VOWEL SIGN I
+0B40 ORIYA VOWEL SIGN II
+0B41 ORIYA VOWEL SIGN U
+0B42 ORIYA VOWEL SIGN UU
+0B43 ORIYA VOWEL SIGN VOCALIC R
+0B47 ORIYA VOWEL SIGN E
+ * stands to the left of the consonant
+0B48 ORIYA VOWEL SIGN AI
+ * pieces left of and above the consonant
+ : 0B47 0B56
+0B4B ORIYA VOWEL SIGN O
+ * pieces on both sides of the consonant
+ : 0B47 0B3E
+0B4C ORIYA VOWEL SIGN AU
+ * pieces on both sides of the consonant
+ : 0B47 0B57
+@ Various signs
+0B4D ORIYA SIGN VIRAMA
+0B56 ORIYA AI LENGTH MARK
+0B57 ORIYA AU LENGTH MARK
+@ Additional consonants
+0B5C ORIYA LETTER RRA
+ : 0B21 0B3C
+0B5D ORIYA LETTER RHA
+ : 0B22 0B3C
+0B5F ORIYA LETTER YYA
+@ Generic additions
+0B60 ORIYA LETTER VOCALIC RR
+0B61 ORIYA LETTER VOCALIC LL
+@ Digits
+0B66 ORIYA DIGIT ZERO
+0B67 ORIYA DIGIT ONE
+0B68 ORIYA DIGIT TWO
+0B69 ORIYA DIGIT THREE
+0B6A ORIYA DIGIT FOUR
+0B6B ORIYA DIGIT FIVE
+0B6C ORIYA DIGIT SIX
+0B6D ORIYA DIGIT SEVEN
+0B6E ORIYA DIGIT EIGHT
+0B6F ORIYA DIGIT NINE
+@ Oriya-specific addition
+0B70 ORIYA ISSHAR
+@@ 0B80 Tamil 0BFF
+@ Based on ISCII 1988
+@ Various signs
+0B82 TAMIL SIGN ANUSVARA
+0B83 TAMIL SIGN VISARGA
+ = aytham
+@ Independent vowels
+0B85 TAMIL LETTER A
+0B86 TAMIL LETTER AA
+0B87 TAMIL LETTER I
+0B88 TAMIL LETTER II
+0B89 TAMIL LETTER U
+0B8A TAMIL LETTER UU
+0B8E TAMIL LETTER E
+0B8F TAMIL LETTER EE
+0B90 TAMIL LETTER AI
+0B92 TAMIL LETTER O
+0B93 TAMIL LETTER OO
+0B94 TAMIL LETTER AU
+ : 0B92 0BD7
+@ Consonants
+0B95 TAMIL LETTER KA
+0B99 TAMIL LETTER NGA
+0B9A TAMIL LETTER CA
+0B9C TAMIL LETTER JA
+0B9E TAMIL LETTER NYA
+0B9F TAMIL LETTER TTA
+0BA3 TAMIL LETTER NNA
+0BA4 TAMIL LETTER TA
+0BA8 TAMIL LETTER NA
+0BA9 TAMIL LETTER NNNA
+0BAA TAMIL LETTER PA
+0BAE TAMIL LETTER MA
+0BAF TAMIL LETTER YA
+0BB0 TAMIL LETTER RA
+0BB1 TAMIL LETTER RRA
+0BB2 TAMIL LETTER LA
+0BB3 TAMIL LETTER LLA
+0BB4 TAMIL LETTER LLLA
+0BB5 TAMIL LETTER VA
+0BB7 TAMIL LETTER SSA
+0BB8 TAMIL LETTER SA
+0BB9 TAMIL LETTER HA
+@ Dependent vowel signs
+0BBE TAMIL VOWEL SIGN AA
+0BBF TAMIL VOWEL SIGN I
+0BC0 TAMIL VOWEL SIGN II
+0BC1 TAMIL VOWEL SIGN U
+0BC2 TAMIL VOWEL SIGN UU
+0BC6 TAMIL VOWEL SIGN E
+ * stands to the left of the consonant
+0BC7 TAMIL VOWEL SIGN EE
+ * stands to the left of the consonant
+0BC8 TAMIL VOWEL SIGN AI
+ * stands to the left of the consonant
+0BCA TAMIL VOWEL SIGN O
+ * pieces on both sides of the consonant
+ : 0BC6 0BBE
+0BCB TAMIL VOWEL SIGN OO
+ * pieces on both sides of the consonant
+ : 0BC7 0BBE
+0BCC TAMIL VOWEL SIGN AU
+ * pieces on both sides of the consonant
+ : 0BC6 0BD7
+@ Various signs
+0BCD TAMIL SIGN VIRAMA
+0BD7 TAMIL AU LENGTH MARK
+@ Digits
+0BE6 <reserved>
+ x (digit zero - 0030)
+0BE7 TAMIL DIGIT ONE
+0BE8 TAMIL DIGIT TWO
+0BE9 TAMIL DIGIT THREE
+0BEA TAMIL DIGIT FOUR
+0BEB TAMIL DIGIT FIVE
+0BEC TAMIL DIGIT SIX
+0BED TAMIL DIGIT SEVEN
+0BEE TAMIL DIGIT EIGHT
+0BEF TAMIL DIGIT NINE
+@ Tamil-specific additions
+0BF0 TAMIL NUMBER TEN
+0BF1 TAMIL NUMBER ONE HUNDRED
+0BF2 TAMIL NUMBER ONE THOUSAND
+@@ 0C00 Telugu 0C7F
+@ Based on ISCII 1988
+@ Various signs
+0C01 TELUGU SIGN CANDRABINDU
+0C02 TELUGU SIGN ANUSVARA
+0C03 TELUGU SIGN VISARGA
+@ Independent vowels
+0C05 TELUGU LETTER A
+0C06 TELUGU LETTER AA
+0C07 TELUGU LETTER I
+0C08 TELUGU LETTER II
+0C09 TELUGU LETTER U
+0C0A TELUGU LETTER UU
+0C0B TELUGU LETTER VOCALIC R
+0C0C TELUGU LETTER VOCALIC L
+0C0E TELUGU LETTER E
+0C0F TELUGU LETTER EE
+0C10 TELUGU LETTER AI
+0C12 TELUGU LETTER O
+0C13 TELUGU LETTER OO
+0C14 TELUGU LETTER AU
+@ Consonants
+0C15 TELUGU LETTER KA
+0C16 TELUGU LETTER KHA
+0C17 TELUGU LETTER GA
+0C18 TELUGU LETTER GHA
+0C19 TELUGU LETTER NGA
+0C1A TELUGU LETTER CA
+0C1B TELUGU LETTER CHA
+0C1C TELUGU LETTER JA
+0C1D TELUGU LETTER JHA
+0C1E TELUGU LETTER NYA
+0C1F TELUGU LETTER TTA
+0C20 TELUGU LETTER TTHA
+0C21 TELUGU LETTER DDA
+0C22 TELUGU LETTER DDHA
+0C23 TELUGU LETTER NNA
+0C24 TELUGU LETTER TA
+0C25 TELUGU LETTER THA
+0C26 TELUGU LETTER DA
+0C27 TELUGU LETTER DHA
+0C28 TELUGU LETTER NA
+0C2A TELUGU LETTER PA
+0C2B TELUGU LETTER PHA
+0C2C TELUGU LETTER BA
+0C2D TELUGU LETTER BHA
+0C2E TELUGU LETTER MA
+0C2F TELUGU LETTER YA
+0C30 TELUGU LETTER RA
+0C31 TELUGU LETTER RRA
+0C32 TELUGU LETTER LA
+0C33 TELUGU LETTER LLA
+0C35 TELUGU LETTER VA
+0C36 TELUGU LETTER SHA
+0C37 TELUGU LETTER SSA
+0C38 TELUGU LETTER SA
+0C39 TELUGU LETTER HA
+@ Dependent vowel signs
+0C3E TELUGU VOWEL SIGN AA
+0C3F TELUGU VOWEL SIGN I
+0C40 TELUGU VOWEL SIGN II
+0C41 TELUGU VOWEL SIGN U
+0C42 TELUGU VOWEL SIGN UU
+0C43 TELUGU VOWEL SIGN VOCALIC R
+0C44 TELUGU VOWEL SIGN VOCALIC RR
+0C46 TELUGU VOWEL SIGN E
+0C47 TELUGU VOWEL SIGN EE
+0C48 TELUGU VOWEL SIGN AI
+ : 0C46 0C56
+0C4A TELUGU VOWEL SIGN O
+0C4B TELUGU VOWEL SIGN OO
+0C4C TELUGU VOWEL SIGN AU
+@ Various signs
+0C4D TELUGU SIGN VIRAMA
+0C55 TELUGU LENGTH MARK
+0C56 TELUGU AI LENGTH MARK
+@ Generic additions
+0C60 TELUGU LETTER VOCALIC RR
+0C61 TELUGU LETTER VOCALIC LL
+@ Digits
+0C66 TELUGU DIGIT ZERO
+0C67 TELUGU DIGIT ONE
+0C68 TELUGU DIGIT TWO
+0C69 TELUGU DIGIT THREE
+0C6A TELUGU DIGIT FOUR
+0C6B TELUGU DIGIT FIVE
+0C6C TELUGU DIGIT SIX
+0C6D TELUGU DIGIT SEVEN
+0C6E TELUGU DIGIT EIGHT
+0C6F TELUGU DIGIT NINE
+@@ 0C80 Kannada 0CFF
+@ Based on ISCII 1988
+@ Various signs
+0C82 KANNADA SIGN ANUSVARA
+0C83 KANNADA SIGN VISARGA
+@ Independent vowels
+0C85 KANNADA LETTER A
+0C86 KANNADA LETTER AA
+0C87 KANNADA LETTER I
+0C88 KANNADA LETTER II
+0C89 KANNADA LETTER U
+0C8A KANNADA LETTER UU
+0C8B KANNADA LETTER VOCALIC R
+0C8C KANNADA LETTER VOCALIC L
+0C8E KANNADA LETTER E
+0C8F KANNADA LETTER EE
+0C90 KANNADA LETTER AI
+0C92 KANNADA LETTER O
+0C93 KANNADA LETTER OO
+0C94 KANNADA LETTER AU
+@ Consonants
+0C95 KANNADA LETTER KA
+0C96 KANNADA LETTER KHA
+0C97 KANNADA LETTER GA
+0C98 KANNADA LETTER GHA
+0C99 KANNADA LETTER NGA
+0C9A KANNADA LETTER CA
+0C9B KANNADA LETTER CHA
+0C9C KANNADA LETTER JA
+0C9D KANNADA LETTER JHA
+0C9E KANNADA LETTER NYA
+0C9F KANNADA LETTER TTA
+0CA0 KANNADA LETTER TTHA
+0CA1 KANNADA LETTER DDA
+0CA2 KANNADA LETTER DDHA
+0CA3 KANNADA LETTER NNA
+0CA4 KANNADA LETTER TA
+0CA5 KANNADA LETTER THA
+0CA6 KANNADA LETTER DA
+0CA7 KANNADA LETTER DHA
+0CA8 KANNADA LETTER NA
+0CAA KANNADA LETTER PA
+0CAB KANNADA LETTER PHA
+0CAC KANNADA LETTER BA
+0CAD KANNADA LETTER BHA
+0CAE KANNADA LETTER MA
+0CAF KANNADA LETTER YA
+0CB0 KANNADA LETTER RA
+0CB1 KANNADA LETTER RRA
+0CB2 KANNADA LETTER LA
+0CB3 KANNADA LETTER LLA
+0CB5 KANNADA LETTER VA
+0CB6 KANNADA LETTER SHA
+0CB7 KANNADA LETTER SSA
+0CB8 KANNADA LETTER SA
+0CB9 KANNADA LETTER HA
+@ Dependent vowel signs
+0CBE KANNADA VOWEL SIGN AA
+0CBF KANNADA VOWEL SIGN I
+0CC0 KANNADA VOWEL SIGN II
+ : 0CBF 0CD5
+0CC1 KANNADA VOWEL SIGN U
+0CC2 KANNADA VOWEL SIGN UU
+0CC3 KANNADA VOWEL SIGN VOCALIC R
+0CC4 KANNADA VOWEL SIGN VOCALIC RR
+0CC6 KANNADA VOWEL SIGN E
+0CC7 KANNADA VOWEL SIGN EE
+ : 0CC6 0CD5
+0CC8 KANNADA VOWEL SIGN AI
+ : 0CC6 0CD6
+0CCA KANNADA VOWEL SIGN O
+ : 0CC6 0CC2
+0CCB KANNADA VOWEL SIGN OO
+ : 0CCA 0CD5
+0CCC KANNADA VOWEL SIGN AU
+@ Various signs
+0CCD KANNADA SIGN VIRAMA
+0CD5 KANNADA LENGTH MARK
+0CD6 KANNADA AI LENGTH MARK
+@ Additional consonants
+0CDE KANNADA LETTER FA
+ * obsolete historic letter
+ * name is a mistake for LLLA
+@ Generic additions
+0CE0 KANNADA LETTER VOCALIC RR
+0CE1 KANNADA LETTER VOCALIC LL
+@ Digits
+0CE6 KANNADA DIGIT ZERO
+0CE7 KANNADA DIGIT ONE
+0CE8 KANNADA DIGIT TWO
+0CE9 KANNADA DIGIT THREE
+0CEA KANNADA DIGIT FOUR
+0CEB KANNADA DIGIT FIVE
+0CEC KANNADA DIGIT SIX
+0CED KANNADA DIGIT SEVEN
+0CEE KANNADA DIGIT EIGHT
+0CEF KANNADA DIGIT NINE
+@@ 0D00 Malayalam 0D7F
+@ Based on ISCII 1988
+@ Various signs
+0D02 MALAYALAM SIGN ANUSVARA
+0D03 MALAYALAM SIGN VISARGA
+@ Independent vowels
+0D05 MALAYALAM LETTER A
+0D06 MALAYALAM LETTER AA
+0D07 MALAYALAM LETTER I
+0D08 MALAYALAM LETTER II
+0D09 MALAYALAM LETTER U
+0D0A MALAYALAM LETTER UU
+0D0B MALAYALAM LETTER VOCALIC R
+0D0C MALAYALAM LETTER VOCALIC L
+0D0E MALAYALAM LETTER E
+0D0F MALAYALAM LETTER EE
+0D10 MALAYALAM LETTER AI
+0D12 MALAYALAM LETTER O
+0D13 MALAYALAM LETTER OO
+0D14 MALAYALAM LETTER AU
+@ Consonants
+0D15 MALAYALAM LETTER KA
+0D16 MALAYALAM LETTER KHA
+0D17 MALAYALAM LETTER GA
+0D18 MALAYALAM LETTER GHA
+0D19 MALAYALAM LETTER NGA
+0D1A MALAYALAM LETTER CA
+0D1B MALAYALAM LETTER CHA
+0D1C MALAYALAM LETTER JA
+0D1D MALAYALAM LETTER JHA
+0D1E MALAYALAM LETTER NYA
+0D1F MALAYALAM LETTER TTA
+0D20 MALAYALAM LETTER TTHA
+0D21 MALAYALAM LETTER DDA
+0D22 MALAYALAM LETTER DDHA
+0D23 MALAYALAM LETTER NNA
+0D24 MALAYALAM LETTER TA
+0D25 MALAYALAM LETTER THA
+0D26 MALAYALAM LETTER DA
+0D27 MALAYALAM LETTER DHA
+0D28 MALAYALAM LETTER NA
+0D2A MALAYALAM LETTER PA
+0D2B MALAYALAM LETTER PHA
+0D2C MALAYALAM LETTER BA
+0D2D MALAYALAM LETTER BHA
+0D2E MALAYALAM LETTER MA
+0D2F MALAYALAM LETTER YA
+0D30 MALAYALAM LETTER RA
+0D31 MALAYALAM LETTER RRA
+0D32 MALAYALAM LETTER LA
+0D33 MALAYALAM LETTER LLA
+0D34 MALAYALAM LETTER LLLA
+0D35 MALAYALAM LETTER VA
+0D36 MALAYALAM LETTER SHA
+0D37 MALAYALAM LETTER SSA
+0D38 MALAYALAM LETTER SA
+0D39 MALAYALAM LETTER HA
+@ Dependent vowel signs
+0D3E MALAYALAM VOWEL SIGN AA
+0D3F MALAYALAM VOWEL SIGN I
+0D40 MALAYALAM VOWEL SIGN II
+0D41 MALAYALAM VOWEL SIGN U
+0D42 MALAYALAM VOWEL SIGN UU
+0D43 MALAYALAM VOWEL SIGN VOCALIC R
+0D46 MALAYALAM VOWEL SIGN E
+ * stands to the left of the consonant
+0D47 MALAYALAM VOWEL SIGN EE
+ * stands to the left of the consonant
+0D48 MALAYALAM VOWEL SIGN AI
+ * stands to the left of the consonant
+0D49 <reserved>
+0D4A MALAYALAM VOWEL SIGN O
+ * pieces on both sides of the consonant
+ : 0D46 0D3E
+0D4B MALAYALAM VOWEL SIGN OO
+ * pieces on both sides of the consonant
+ : 0D47 0D3E
+0D4C MALAYALAM VOWEL SIGN AU
+ * pieces on both sides of the consonant
+ : 0D46 0D57
+@ Various signs
+0D4D MALAYALAM SIGN VIRAMA
+ = vowel half-u
+0D57 MALAYALAM AU LENGTH MARK
+@ Generic additions
+0D60 MALAYALAM LETTER VOCALIC RR
+0D61 MALAYALAM LETTER VOCALIC LL
+@ Digits
+0D66 MALAYALAM DIGIT ZERO
+0D67 MALAYALAM DIGIT ONE
+0D68 MALAYALAM DIGIT TWO
+0D69 MALAYALAM DIGIT THREE
+0D6A MALAYALAM DIGIT FOUR
+0D6B MALAYALAM DIGIT FIVE
+0D6C MALAYALAM DIGIT SIX
+0D6D MALAYALAM DIGIT SEVEN
+0D6E MALAYALAM DIGIT EIGHT
+0D6F MALAYALAM DIGIT NINE
+@@ 0D80 Sinhala 0DFF
+@ Various signs
+0D82 SINHALA SIGN ANUSVARAYA
+ = anusvara
+0D83 SINHALA SIGN VISARGAYA
+ = visarga
+@ Independent vowels
+0D85 SINHALA LETTER AYANNA
+ = sinhala letter a
+0D86 SINHALA LETTER AAYANNA
+ = sinhala letter aa
+0D87 SINHALA LETTER AEYANNA
+ = sinhala letter ae
+0D88 SINHALA LETTER AEEYANNA
+ = sinhala letter aae
+0D89 SINHALA LETTER IYANNA
+ = sinhala letter i
+0D8A SINHALA LETTER IIYANNA
+ = sinhala letter ii
+0D8B SINHALA LETTER UYANNA
+ = sinhala letter u
+0D8C SINHALA LETTER UUYANNA
+ = sinhala letter uu
+0D8D SINHALA LETTER IRUYANNA
+ = sinhala letter vocalic r
+0D8E SINHALA LETTER IRUUYANNA
+ = sinhala letter vocalic rr
+0D8F SINHALA LETTER ILUYANNA
+ = sinhala letter vocalic l
+0D90 SINHALA LETTER ILUUYANNA
+ = sinhala letter vocalic ll
+0D91 SINHALA LETTER EYANNA
+ = sinhala letter e
+0D92 SINHALA LETTER EEYANNA
+ = sinhala letter ee
+0D93 SINHALA LETTER AIYANNA
+ = sinhala letter ai
+0D94 SINHALA LETTER OYANNA
+ = sinhala letter o
+0D95 SINHALA LETTER OOYANNA
+ = sinhala letter oo
+0D96 SINHALA LETTER AUYANNA
+ = sinhala letter au
+@ Consonants
+0D9A SINHALA LETTER ALPAPRAANA KAYANNA
+ = sinhala letter ka
+0D9B SINHALA LETTER MAHAAPRAANA KAYANNA
+ = sinhala letter kha
+0D9C SINHALA LETTER ALPAPRAANA GAYANNA
+ = sinhala letter ga
+0D9D SINHALA LETTER MAHAAPRAANA GAYANNA
+ = sinhala letter gha
+0D9E SINHALA LETTER KANTAJA NAASIKYAYA
+ = sinhala letter nga
+0D9F SINHALA LETTER SANYAKA GAYANNA
+ = sinhala letter nnga
+0DA0 SINHALA LETTER ALPAPRAANA CAYANNA
+ = sinhala letter ca
+0DA1 SINHALA LETTER MAHAAPRAANA CAYANNA
+ = sinhala letter cha
+0DA2 SINHALA LETTER ALPAPRAANA JAYANNA
+ = sinhala letter ja
+0DA3 SINHALA LETTER MAHAAPRAANA JAYANNA
+ = sinhala letter jha
+0DA4 SINHALA LETTER TAALUJA NAASIKYAYA
+ = sinhala letter nya
+0DA5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ = sinhala letter jnya
+0DA6 SINHALA LETTER SANYAKA JAYANNA
+ = sinhala letter nyja
+0DA7 SINHALA LETTER ALPAPRAANA TTAYANNA
+ = sinhala letter tta
+0DA8 SINHALA LETTER MAHAAPRAANA TTAYANNA
+ = sinhala letter ttha
+0DA9 SINHALA LETTER ALPAPRAANA DDAYANNA
+ = sinhala letter dda
+0DAA SINHALA LETTER MAHAAPRAANA DDAYANNA
+ = sinhala letter ddha
+0DAB SINHALA LETTER MUURDHAJA NAYANNA
+ = sinhala letter nna
+0DAC SINHALA LETTER SANYAKA DDAYANNA
+ = sinhala letter nndda
+0DAD SINHALA LETTER ALPAPRAANA TAYANNA
+ = sinhala letter ta
+0DAE SINHALA LETTER MAHAAPRAANA TAYANNA
+ = sinhala letter tha
+0DAF SINHALA LETTER ALPAPRAANA DAYANNA
+ = sinhala letter da
+0DB0 SINHALA LETTER MAHAAPRAANA DAYANNA
+ = sinhala letter dha
+0DB1 SINHALA LETTER DANTAJA NAYANNA
+ = sinhala letter na
+0DB3 SINHALA LETTER SANYAKA DAYANNA
+ = sinhala letter nda
+0DB4 SINHALA LETTER ALPAPRAANA PAYANNA
+ = sinhala letter pa
+0DB5 SINHALA LETTER MAHAAPRAANA PAYANNA
+ = sinhala letter pha
+0DB6 SINHALA LETTER ALPAPRAANA BAYANNA
+ = sinhala letter ba
+0DB7 SINHALA LETTER MAHAAPRAANA BAYANNA
+ = sinhala letter bha
+0DB8 SINHALA LETTER MAYANNA
+ = sinhala letter ma
+0DB9 SINHALA LETTER AMBA BAYANNA
+ = sinhala letter mba
+0DBA SINHALA LETTER YAYANNA
+ = sinhala letter ya
+0DBB SINHALA LETTER RAYANNA
+ = sinhala letter ra
+0DBD SINHALA LETTER DANTAJA LAYANNA
+ = sinhala letter la
+ * dental
+0DC0 SINHALA LETTER VAYANNA
+ = sinhala letter va
+0DC1 SINHALA LETTER TAALUJA SAYANNA
+ = sinhala letter sha
+0DC2 SINHALA LETTER MUURDHAJA SAYANNA
+ = sinhala letter ssa
+ * retroflex
+0DC3 SINHALA LETTER DANTAJA SAYANNA
+ = sinhala letter sa
+ * dental
+0DC4 SINHALA LETTER HAYANNA
+ = sinhala letter ha
+0DC5 SINHALA LETTER MUURDHAJA LAYANNA
+ = sinhala letter lla
+ * retroflex
+0DC6 SINHALA LETTER FAYANNA
+ = sinhala letter fa
+@ Sign
+0DCA SINHALA SIGN AL-LAKUNA
+ = virama
+@ Dependent vowel signs
+0DCF SINHALA VOWEL SIGN AELA-PILLA
+ = sinhala vowel sign aa
+0DD0 SINHALA VOWEL SIGN KETTI AEDA-PILLA
+ = sinhala vowel sign ae
+0DD1 SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ = sinhala vowel sign aae
+0DD2 SINHALA VOWEL SIGN KETTI IS-PILLA
+ = sinhala vowel sign i
+0DD3 SINHALA VOWEL SIGN DIGA IS-PILLA
+ = sinhala vowel sign ii
+0DD4 SINHALA VOWEL SIGN KETTI PAA-PILLA
+ = sinhala vowel sign u
+0DD6 SINHALA VOWEL SIGN DIGA PAA-PILLA
+ = sinhala vowel sign uu
+0DD8 SINHALA VOWEL SIGN GAETTA-PILLA
+ = sinhala vowel sign vocalic r
+0DD9 SINHALA VOWEL SIGN KOMBUVA
+ = sinhala vowel sign e
+0DDA SINHALA VOWEL SIGN DIGA KOMBUVA
+ = sinhala vowel sign ee
+ : 0DD9 0DCA
+0DDB SINHALA VOWEL SIGN KOMBU DEKA
+ = sinhala vowel sign ai
+0DDC SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+ = sinhala vowel sign o
+ : 0DD9 0DCF
+0DDD SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+ = sinhala vowel sign oo
+ : 0DDC 0DCA
+0DDE SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ = sinhala vowel sign au
+ : 0DD9 0DDF
+0DDF SINHALA VOWEL SIGN GAYANUKITTA
+ = sinhala vowel sign vocalic l
+@ Additional dependent vowel signs
+0DF2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+ = sinhala vowel sign vocalic rr
+0DF3 SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ = sinhala vowel sign vocalic ll
+@ Punctuation
+0DF4 SINHALA PUNCTUATION KUNDDALIYA
+@@ 0E00 Thai 0E7F
+@ Based on TIS 620-2533
+@ Consonants
+0E01 THAI CHARACTER KO KAI
+0E02 THAI CHARACTER KHO KHAI
+0E03 THAI CHARACTER KHO KHUAT
+0E04 THAI CHARACTER KHO KHWAI
+0E05 THAI CHARACTER KHO KHON
+0E06 THAI CHARACTER KHO RAKHANG
+0E07 THAI CHARACTER NGO NGU
+0E08 THAI CHARACTER CHO CHAN
+0E09 THAI CHARACTER CHO CHING
+0E0A THAI CHARACTER CHO CHANG
+0E0B THAI CHARACTER SO SO
+0E0C THAI CHARACTER CHO CHOE
+0E0D THAI CHARACTER YO YING
+0E0E THAI CHARACTER DO CHADA
+0E0F THAI CHARACTER TO PATAK
+0E10 THAI CHARACTER THO THAN
+0E11 THAI CHARACTER THO NANGMONTHO
+0E12 THAI CHARACTER THO PHUTHAO
+0E13 THAI CHARACTER NO NEN
+0E14 THAI CHARACTER DO DEK
+0E15 THAI CHARACTER TO TAO
+0E16 THAI CHARACTER THO THUNG
+0E17 THAI CHARACTER THO THAHAN
+0E18 THAI CHARACTER THO THONG
+0E19 THAI CHARACTER NO NU
+0E1A THAI CHARACTER BO BAIMAI
+0E1B THAI CHARACTER PO PLA
+0E1C THAI CHARACTER PHO PHUNG
+0E1D THAI CHARACTER FO FA
+0E1E THAI CHARACTER PHO PHAN
+0E1F THAI CHARACTER FO FAN
+0E20 THAI CHARACTER PHO SAMPHAO
+0E21 THAI CHARACTER MO MA
+0E22 THAI CHARACTER YO YAK
+0E23 THAI CHARACTER RO RUA
+0E24 THAI CHARACTER RU
+ * independent vowel letter used to write Sanskrit
+0E25 THAI CHARACTER LO LING
+0E26 THAI CHARACTER LU
+ * independent vowel letter used to write Sanskrit
+0E27 THAI CHARACTER WO WAEN
+0E28 THAI CHARACTER SO SALA
+0E29 THAI CHARACTER SO RUSI
+0E2A THAI CHARACTER SO SUA
+0E2B THAI CHARACTER HO HIP
+0E2C THAI CHARACTER LO CHULA
+0E2D THAI CHARACTER O ANG
+0E2E THAI CHARACTER HO NOKHUK
+@ Sign
+0E2F THAI CHARACTER PAIYANNOI (paiyan noi)
+ * ellipsis, abbreviation
+@ Vowels
+0E30 THAI CHARACTER SARA A
+0E31 THAI CHARACTER MAI HAN-AKAT
+0E32 THAI CHARACTER SARA AA
+0E33 THAI CHARACTER SARA AM
+ # 0E4D 0E32
+0E34 THAI CHARACTER SARA I
+0E35 THAI CHARACTER SARA II
+0E36 THAI CHARACTER SARA UE
+0E37 THAI CHARACTER SARA UEE (sara uue)
+ = sara uue
+0E38 THAI CHARACTER SARA U
+0E39 THAI CHARACTER SARA UU
+0E3A THAI CHARACTER PHINTHU
+ * Pali virama
+@ Currency symbol
+0E3F THAI CURRENCY SYMBOL BAHT
+@ Vowels
+0E40 THAI CHARACTER SARA E
+0E41 THAI CHARACTER SARA AE
+0E42 THAI CHARACTER SARA O
+0E43 THAI CHARACTER SARA AI MAIMUAN (sara ai mai muan)
+0E44 THAI CHARACTER SARA AI MAIMALAI (sara ai mai malai)
+@ Signs
+0E45 THAI CHARACTER LAKKHANGYAO (lakkhang yao)
+0E46 THAI CHARACTER MAIYAMOK (mai yamok)
+ * repetition
+@ Vowel
+0E47 THAI CHARACTER MAITAIKHU (mai taikhu)
+@ Tone marks
+0E48 THAI CHARACTER MAI EK
+0E49 THAI CHARACTER MAI THO
+0E4A THAI CHARACTER MAI TRI
+0E4B THAI CHARACTER MAI CHATTAWA
+@ Signs
+0E4C THAI CHARACTER THANTHAKHAT
+ * cancellation mark
+0E4D THAI CHARACTER NIKHAHIT (nikkhahit)
+ = nikkhahit
+ * final nasal
+0E4E THAI CHARACTER YAMAKKAN
+0E4F THAI CHARACTER FONGMAN
+ * used as a bullet
+ x (khmer sign phnaek muan - 17D9)
+@ Digits
+0E50 THAI DIGIT ZERO
+0E51 THAI DIGIT ONE
+0E52 THAI DIGIT TWO
+0E53 THAI DIGIT THREE
+0E54 THAI DIGIT FOUR
+0E55 THAI DIGIT FIVE
+0E56 THAI DIGIT SIX
+0E57 THAI DIGIT SEVEN
+0E58 THAI DIGIT EIGHT
+0E59 THAI DIGIT NINE
+@ Signs
+0E5A THAI CHARACTER ANGKHANKHU
+ * used to mark end of long sections
+ * used in combination with 0E30 to mark end of a verse
+0E5B THAI CHARACTER KHOMUT
+ * used to mark end of chapter or document
+ x (khmer sign koomuut - 17DA)
+@@ 0E80 Lao 0EFF
+@ Based on TIS 620-2529
+@ Consonants
+0E81 LAO LETTER KO
+0E82 LAO LETTER KHO SUNG
+0E84 LAO LETTER KHO TAM
+0E87 LAO LETTER NGO
+0E88 LAO LETTER CO
+0E8A LAO LETTER SO TAM
+0E8D LAO LETTER NYO
+0E94 LAO LETTER DO
+0E95 LAO LETTER TO
+0E96 LAO LETTER THO SUNG
+0E97 LAO LETTER THO TAM
+0E99 LAO LETTER NO
+0E9A LAO LETTER BO
+0E9B LAO LETTER PO
+0E9C LAO LETTER PHO SUNG
+0E9D LAO LETTER FO TAM
+0E9E LAO LETTER PHO TAM
+0E9F LAO LETTER FO SUNG
+0EA1 LAO LETTER MO
+0EA2 LAO LETTER YO
+0EA3 LAO LETTER LO LING
+0EA5 LAO LETTER LO LOOT
+0EA7 LAO LETTER WO
+0EAA LAO LETTER SO SUNG
+0EAB LAO LETTER HO SUNG
+0EAD LAO LETTER O
+0EAE LAO LETTER HO TAM
+@ Sign
+0EAF LAO ELLIPSIS
+@ Vowels
+0EB0 LAO VOWEL SIGN A
+0EB1 LAO VOWEL SIGN MAI KAN
+ * vowel shortener
+0EB2 LAO VOWEL SIGN AA
+0EB3 LAO VOWEL SIGN AM
+ # 0ECD 0EB2
+0EB4 LAO VOWEL SIGN I
+0EB5 LAO VOWEL SIGN II
+0EB6 LAO VOWEL SIGN Y
+0EB7 LAO VOWEL SIGN YY
+0EB8 LAO VOWEL SIGN U
+0EB9 LAO VOWEL SIGN UU
+0EBB LAO VOWEL SIGN MAI KON
+@ Signs
+0EBC LAO SEMIVOWEL SIGN LO
+0EBD LAO SEMIVOWEL SIGN NYO
+@ Vowels
+0EC0 LAO VOWEL SIGN E
+0EC1 LAO VOWEL SIGN EI
+0EC2 LAO VOWEL SIGN O
+0EC3 LAO VOWEL SIGN AY
+0EC4 LAO VOWEL SIGN AI
+@ Sign
+0EC6 LAO KO LA
+ * repetition
+@ Tone marks
+0EC8 LAO TONE MAI EK
+0EC9 LAO TONE MAI THO
+0ECA LAO TONE MAI TI
+0ECB LAO TONE MAI CATAWA
+@ Signs
+0ECC LAO CANCELLATION MARK
+0ECD LAO NIGGAHITA
+ * final nasal
+@ Digits
+0ED0 LAO DIGIT ZERO
+0ED1 LAO DIGIT ONE
+0ED2 LAO DIGIT TWO
+0ED3 LAO DIGIT THREE
+0ED4 LAO DIGIT FOUR
+0ED5 LAO DIGIT FIVE
+0ED6 LAO DIGIT SIX
+0ED7 LAO DIGIT SEVEN
+0ED8 LAO DIGIT EIGHT
+0ED9 LAO DIGIT NINE
+@ Digraphs
+0EDC LAO HO NO
+ # 0EAB 0E99
+0EDD LAO HO MO
+ # 0EAB 0EA1
+@@ 0F00 Tibetan 0FFF
+@ Syllable
+0F00 TIBETAN SYLLABLE OM
+@ Head marks
+0F01 TIBETAN MARK GTER YIG MGO TRUNCATED A (ter yik go a thung)
+0F02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA (ter yik go wum nam chey ma)
+0F03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA (ter yik go wum ter tsek ma)
+0F04 TIBETAN MARK INITIAL YIG MGO MDUN MA (yik go dun ma)
+ * honorific; marks beginning of text or start of new folio
+ x (mongolian birga - 1800)
+0F05 TIBETAN MARK CLOSING YIG MGO SGAB MA (yik go kab ma)
+ * follows and ligates with initial yig-mgo
+0F06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA (yik go pur shey ma)
+0F07 TIBETAN MARK YIG MGO TSHEG SHAD MA (yik go tsek shey ma)
+@ Marks and signs
+0F08 TIBETAN MARK SBRUL SHAD (drul shey)
+ * separates sections of meaning equivalent to topics and sub-topics
+0F09 TIBETAN MARK BSKUR YIG MGO (kur yik go)
+ * list enumerator, used in Bhutan
+0F0A TIBETAN MARK BKA- SHOG YIG MGO (ka sho yik go)
+ * petition honorific, used in Bhutan
+0F0B TIBETAN MARK INTERSYLLABIC TSHEG (tsek)
+ * morpheme delimiter (approximate meaning)
+ * the normal tsheg; provides a break opportunity
+ * character name is a misnomer
+0F0C TIBETAN MARK DELIMITER TSHEG BSTAR (tsek tar)
+ * a non-breaking tsheg; inhibits line breaking
+ * character name is a misnomer
+ # <noBreak> 0F0B
+0F0D TIBETAN MARK SHAD (shey)
+ * marks end of a section of text (tshig-grub)
+ x (devanagari danda - 0964)
+0F0E TIBETAN MARK NYIS SHAD (nyi shey)
+ * marks end of a whole topic (don-tshan)
+ x (devanagari double danda - 0965)
+0F0F TIBETAN MARK TSHEG SHAD (tsek shey)
+0F10 TIBETAN MARK NYIS TSHEG SHAD (nyi tsek shey)
+0F11 TIBETAN MARK RIN CHEN SPUNGS SHAD (rinchen pung shey)
+ * shad which follows a tsheg-bar that starts a new line
+0F12 TIBETAN MARK RGYA GRAM SHAD (gya tram shey)
+0F13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN (dzu ta me long chen)
+0F14 TIBETAN MARK GTER TSHEG (ter tsek)
+ * used as a comma-like text delimiter
+ x (khmer sign camnuc pii kuuh - 17D6)
+@ Astrological signs
+0F15 TIBETAN LOGOTYPE SIGN CHAD RTAGS (che ta)
+0F16 TIBETAN LOGOTYPE SIGN LHAG RTAGS (hlak ta)
+0F17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS (trachen char ta)
+0F18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA (kyu pa)
+ * combines with digits
+0F19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS (dong tsu)
+ * combines with digits
+0F1A TIBETAN SIGN RDEL DKAR GCIG (deka chig)
+0F1B TIBETAN SIGN RDEL DKAR GNYIS (deka nyi)
+0F1C TIBETAN SIGN RDEL DKAR GSUM (deka sum)
+0F1D TIBETAN SIGN RDEL NAG GCIG (dena chig)
+0F1E TIBETAN SIGN RDEL NAG GNYIS (dena nyi)
+0F1F TIBETAN SIGN RDEL DKAR RDEL NAG (deka dena)
+@ Digits
+0F20 TIBETAN DIGIT ZERO
+0F21 TIBETAN DIGIT ONE
+0F22 TIBETAN DIGIT TWO
+0F23 TIBETAN DIGIT THREE
+0F24 TIBETAN DIGIT FOUR
+0F25 TIBETAN DIGIT FIVE
+0F26 TIBETAN DIGIT SIX
+0F27 TIBETAN DIGIT SEVEN
+0F28 TIBETAN DIGIT EIGHT
+0F29 TIBETAN DIGIT NINE
+@ Digits minus half
+0F2A TIBETAN DIGIT HALF ONE
+0F2B TIBETAN DIGIT HALF TWO
+0F2C TIBETAN DIGIT HALF THREE
+0F2D TIBETAN DIGIT HALF FOUR
+0F2E TIBETAN DIGIT HALF FIVE
+0F2F TIBETAN DIGIT HALF SIX
+0F30 TIBETAN DIGIT HALF SEVEN
+0F31 TIBETAN DIGIT HALF EIGHT
+0F32 TIBETAN DIGIT HALF NINE
+0F33 TIBETAN DIGIT HALF ZERO
+@ Marks and signs
+0F34 TIBETAN MARK BSDUS RTAGS (du ta)
+ * repetition
+0F35 TIBETAN MARK NGAS BZUNG NYI ZLA (nge zung nyi da)
+ * honorific, emphasis; used like underlining
+0F36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN (dzu ta shi mig chen)
+ * marks point of text insertion or annotation
+0F37 TIBETAN MARK NGAS BZUNG SGOR RTAGS (nge zung gor ta)
+ * emphasis; used like underlining
+0F38 TIBETAN MARK CHE MGO (che go)
+0F39 TIBETAN MARK TSA -PHRU (tsa tru)
+ * a lenition mark
+@ Paired punctuation
+0F3A TIBETAN MARK GUG RTAGS GYON (gug ta yun)
+0F3B TIBETAN MARK GUG RTAGS GYAS (gug ta ye)
+ * brackets
+0F3C TIBETAN MARK ANG KHANG GYON (ang kang yun)
+0F3D TIBETAN MARK ANG KHANG GYAS (ang kang ye)
+ * used for bracketing with a roof over
+@ Astrological signs
+0F3E TIBETAN SIGN YAR TSHES (yar tse)
+0F3F TIBETAN SIGN MAR TSHES (mar tse)
+ * marks which combine with digits
+@ Consonants
+0F40 TIBETAN LETTER KA
+0F41 TIBETAN LETTER KHA
+0F42 TIBETAN LETTER GA
+0F43 TIBETAN LETTER GHA
+ : 0F42 0FB7
+0F44 TIBETAN LETTER NGA
+0F45 TIBETAN LETTER CA
+0F46 TIBETAN LETTER CHA
+0F47 TIBETAN LETTER JA
+0F49 TIBETAN LETTER NYA
+0F4A TIBETAN LETTER TTA
+0F4B TIBETAN LETTER TTHA
+0F4C TIBETAN LETTER DDA
+0F4D TIBETAN LETTER DDHA
+ : 0F4C 0FB7
+0F4E TIBETAN LETTER NNA
+0F4F TIBETAN LETTER TA
+0F50 TIBETAN LETTER THA
+0F51 TIBETAN LETTER DA
+0F52 TIBETAN LETTER DHA
+ : 0F51 0FB7
+0F53 TIBETAN LETTER NA
+0F54 TIBETAN LETTER PA
+0F55 TIBETAN LETTER PHA
+0F56 TIBETAN LETTER BA
+0F57 TIBETAN LETTER BHA
+ : 0F56 0FB7
+0F58 TIBETAN LETTER MA
+0F59 TIBETAN LETTER TSA
+0F5A TIBETAN LETTER TSHA
+0F5B TIBETAN LETTER DZA
+0F5C TIBETAN LETTER DZHA
+ : 0F5B 0FB7
+0F5D TIBETAN LETTER WA
+0F5E TIBETAN LETTER ZHA
+0F5F TIBETAN LETTER ZA
+0F60 TIBETAN LETTER -A
+0F61 TIBETAN LETTER YA
+0F62 TIBETAN LETTER RA *
+ * when followed by a subjoined letter = ra mgo
+0F63 TIBETAN LETTER LA
+0F64 TIBETAN LETTER SHA
+0F65 TIBETAN LETTER SSA
+ = reversed sha
+0F66 TIBETAN LETTER SA
+0F67 TIBETAN LETTER HA
+0F68 TIBETAN LETTER A
+ * base for dependent vowels
+0F69 TIBETAN LETTER KSSA
+ : 0F40 0FB5
+0F6A TIBETAN LETTER FIXED-FORM RA *
+ * used only in transliteration and transcription
+@ Dependent vowel signs
+0F71 TIBETAN VOWEL SIGN AA
+ = a-chung
+ * common, vowel-lengthening mark
+0F72 TIBETAN VOWEL SIGN I
+0F73 TIBETAN VOWEL SIGN II
+ * use of this character is discouraged
+ : 0F71 0F72
+0F74 TIBETAN VOWEL SIGN U
+0F75 TIBETAN VOWEL SIGN UU
+ * use of this character is discouraged
+ : 0F71 0F74
+0F76 TIBETAN VOWEL SIGN VOCALIC R
+ : 0FB2 0F80
+0F77 TIBETAN VOWEL SIGN VOCALIC RR
+ * use of this character is strongly discouraged
+ # 0FB2 0F81
+0F78 TIBETAN VOWEL SIGN VOCALIC L
+ : 0FB3 0F80
+0F79 TIBETAN VOWEL SIGN VOCALIC LL
+ * use of this character is strongly discouraged
+ # 0FB3 0F81
+0F7A TIBETAN VOWEL SIGN E
+0F7B TIBETAN VOWEL SIGN EE
+0F7C TIBETAN VOWEL SIGN O
+0F7D TIBETAN VOWEL SIGN OO
+@ Vocalic modification
+0F7E TIBETAN SIGN RJES SU NGA RO (je su nga ro)
+ = anusvara
+0F7F TIBETAN SIGN RNAM BCAD (nam chey)
+ = visarga
+@ Dependent vowel signs
+0F80 TIBETAN VOWEL SIGN REVERSED I
+0F81 TIBETAN VOWEL SIGN REVERSED II
+ * use of this character is discouraged
+ : 0F71 0F80
+@ Marks and signs
+0F82 TIBETAN SIGN NYI ZLA NAA DA (nyi da na da)
+0F83 TIBETAN SIGN SNA LDAN (nan de)
+ x (devanagari sign candrabindu - 0901)
+0F84 TIBETAN MARK HALANTA
+ = srog med
+ x (devanagari sign virama - 094D)
+0F85 TIBETAN MARK PALUTA
+0F86 TIBETAN SIGN LCI RTAGS (ji ta)
+0F87 TIBETAN SIGN YANG RTAGS (yang ta)
+@ Transliteration head letters
+0F88 TIBETAN SIGN LCE TSA CAN (che tsa chen)
+0F89 TIBETAN SIGN MCHU CAN (chu chen)
+0F8A TIBETAN SIGN GRU CAN RGYINGS (tru chen ging)
+ * always followed by 0F82
+0F8B TIBETAN SIGN GRU MED RGYINGS (tru me ging)
+@ Subjoined consonants
+0F90 TIBETAN SUBJOINED LETTER KA
+0F91 TIBETAN SUBJOINED LETTER KHA
+0F92 TIBETAN SUBJOINED LETTER GA
+0F93 TIBETAN SUBJOINED LETTER GHA
+ : 0F92 0FB7
+0F94 TIBETAN SUBJOINED LETTER NGA
+0F95 TIBETAN SUBJOINED LETTER CA
+0F96 TIBETAN SUBJOINED LETTER CHA
+0F97 TIBETAN SUBJOINED LETTER JA
+0F99 TIBETAN SUBJOINED LETTER NYA
+0F9A TIBETAN SUBJOINED LETTER TTA
+0F9B TIBETAN SUBJOINED LETTER TTHA
+0F9C TIBETAN SUBJOINED LETTER DDA
+0F9D TIBETAN SUBJOINED LETTER DDHA
+ : 0F9C 0FB7
+0F9E TIBETAN SUBJOINED LETTER NNA
+0F9F TIBETAN SUBJOINED LETTER TA
+0FA0 TIBETAN SUBJOINED LETTER THA
+0FA1 TIBETAN SUBJOINED LETTER DA
+0FA2 TIBETAN SUBJOINED LETTER DHA
+ : 0FA1 0FB7
+0FA3 TIBETAN SUBJOINED LETTER NA
+0FA4 TIBETAN SUBJOINED LETTER PA
+0FA5 TIBETAN SUBJOINED LETTER PHA
+0FA6 TIBETAN SUBJOINED LETTER BA
+0FA7 TIBETAN SUBJOINED LETTER BHA
+ : 0FA6 0FB7
+0FA8 TIBETAN SUBJOINED LETTER MA
+0FA9 TIBETAN SUBJOINED LETTER TSA
+0FAA TIBETAN SUBJOINED LETTER TSHA
+0FAB TIBETAN SUBJOINED LETTER DZA
+0FAC TIBETAN SUBJOINED LETTER DZHA
+ : 0FAB 0FB7
+0FAD TIBETAN SUBJOINED LETTER WA *
+ = wa-zur, wa-btags
+0FAE TIBETAN SUBJOINED LETTER ZHA
+0FAF TIBETAN SUBJOINED LETTER ZA
+0FB0 TIBETAN SUBJOINED LETTER -A
+ = a-chung
+ * rare, only used for full-sized subjoined letter
+ x (tibetan vowel sign aa - 0F71)
+0FB1 TIBETAN SUBJOINED LETTER YA *
+ = ya-btags
+0FB2 TIBETAN SUBJOINED LETTER RA *
+ = ra-btags
+0FB3 TIBETAN SUBJOINED LETTER LA
+0FB4 TIBETAN SUBJOINED LETTER SHA
+0FB5 TIBETAN SUBJOINED LETTER SSA
+ = reversed subjoined sha
+0FB6 TIBETAN SUBJOINED LETTER SA
+0FB7 TIBETAN SUBJOINED LETTER HA
+0FB8 TIBETAN SUBJOINED LETTER A
+0FB9 TIBETAN SUBJOINED LETTER KSSA
+ : 0F90 0FB5
+@ Fixed-form subjoined consonants
+@+ These characters are used only for transliteration and transcription.
+0FBA TIBETAN SUBJOINED LETTER FIXED-FORM WA *
+0FBB TIBETAN SUBJOINED LETTER FIXED-FORM YA *
+0FBC TIBETAN SUBJOINED LETTER FIXED-FORM RA *
+@ Signs
+0FBE TIBETAN KU RU KHA (kuruka)
+ * often repeated three times; indicates a refrain
+0FBF TIBETAN KU RU KHA BZHI MIG CAN (kuruka shi mik chen)
+ * marks point of text insertion or annotation
+ x (reference mark - 203B)
+@ Cantillation signs
+0FC0 TIBETAN CANTILLATION SIGN HEAVY BEAT
+ * marks a heavy drum beat
+0FC1 TIBETAN CANTILLATION SIGN LIGHT BEAT
+ * marks a light drum beat
+0FC2 TIBETAN CANTILLATION SIGN CANG TE-U (chang tyu)
+ * symbol of a small Tibetan hand drum
+0FC3 TIBETAN CANTILLATION SIGN SBUB -CHAL (bub chey)
+ * symbol of a Tibetan cymbal
+@ Symbols
+0FC4 TIBETAN SYMBOL DRIL BU (drilbu)
+ * symbol of a Tibetan hand bell
+0FC5 TIBETAN SYMBOL RDO RJE (dorje)
+0FC6 TIBETAN SYMBOL PADMA GDAN (pema den)
+0FC7 TIBETAN SYMBOL RDO RJE RGYA GRAM (dorje gya dram)
+0FC8 TIBETAN SYMBOL PHUR PA (phurba)
+0FC9 TIBETAN SYMBOL NOR BU (norbu)
+0FCA TIBETAN SYMBOL NOR BU NYIS -KHYIL (norbu nyi khyi)
+ * the double body symbol
+ x (yin yang - 262F)
+0FCB TIBETAN SYMBOL NOR BU GSUM -KHYIL (norbu sum khyi)
+ * the tri-kaya or triple body symbol
+0FCC TIBETAN SYMBOL NOR BU BZHI -KHYIL (norbu shi khyi)
+ * the quadruple body symbol, a form of the swastika
+ x (cjk unified ideograph-534D - 534D)
+@ Astrological sign
+0FCF TIBETAN SIGN RDEL NAG GSUM
+@@ 1000 Myanmar 109F
+@ Consonants
+1000 MYANMAR LETTER KA
+1001 MYANMAR LETTER KHA
+1002 MYANMAR LETTER GA
+1003 MYANMAR LETTER GHA
+1004 MYANMAR LETTER NGA
+1005 MYANMAR LETTER CA
+1006 MYANMAR LETTER CHA
+1007 MYANMAR LETTER JA
+1008 MYANMAR LETTER JHA
+1009 MYANMAR LETTER NYA
+100A MYANMAR LETTER NNYA
+100B MYANMAR LETTER TTA
+100C MYANMAR LETTER TTHA
+100D MYANMAR LETTER DDA
+100E MYANMAR LETTER DDHA
+100F MYANMAR LETTER NNA
+1010 MYANMAR LETTER TA
+1011 MYANMAR LETTER THA
+1012 MYANMAR LETTER DA
+1013 MYANMAR LETTER DHA
+1014 MYANMAR LETTER NA
+1015 MYANMAR LETTER PA
+1016 MYANMAR LETTER PHA
+1017 MYANMAR LETTER BA
+1018 MYANMAR LETTER BHA
+1019 MYANMAR LETTER MA
+101A MYANMAR LETTER YA
+101B MYANMAR LETTER RA
+101C MYANMAR LETTER LA
+101D MYANMAR LETTER WA
+101E MYANMAR LETTER SA
+101F MYANMAR LETTER HA
+1020 MYANMAR LETTER LLA
+@ Independent vowels
+1021 MYANMAR LETTER A
+1023 MYANMAR LETTER I
+1024 MYANMAR LETTER II
+1025 MYANMAR LETTER U
+1026 MYANMAR LETTER UU
+ : 1025 102E
+1027 MYANMAR LETTER E
+1029 MYANMAR LETTER O
+102A MYANMAR LETTER AU
+@ Dependent vowel signs
+102C MYANMAR VOWEL SIGN AA
+102D MYANMAR VOWEL SIGN I
+102E MYANMAR VOWEL SIGN II
+102F MYANMAR VOWEL SIGN U
+1030 MYANMAR VOWEL SIGN UU
+1031 MYANMAR VOWEL SIGN E
+ * stands to the left of the consonant
+1032 MYANMAR VOWEL SIGN AI
+@ Various signs
+1036 MYANMAR SIGN ANUSVARA
+1037 MYANMAR SIGN DOT BELOW
+ = aukmyit
+ * a tone mark
+1038 MYANMAR SIGN VISARGA
+1039 MYANMAR SIGN VIRAMA
+ = killer (when rendered visibly)
+@ Digits
+1040 MYANMAR DIGIT ZERO
+1041 MYANMAR DIGIT ONE
+1042 MYANMAR DIGIT TWO
+1043 MYANMAR DIGIT THREE
+1044 MYANMAR DIGIT FOUR
+1045 MYANMAR DIGIT FIVE
+1046 MYANMAR DIGIT SIX
+1047 MYANMAR DIGIT SEVEN
+1048 MYANMAR DIGIT EIGHT
+1049 MYANMAR DIGIT NINE
+@ Punctuation
+104A MYANMAR SIGN LITTLE SECTION
+ x (devanagari danda - 0964)
+104B MYANMAR SIGN SECTION
+ x (devanagari double danda - 0965)
+@ Various signs
+104C MYANMAR SYMBOL LOCATIVE
+104D MYANMAR SYMBOL COMPLETED
+104E MYANMAR SYMBOL AFOREMENTIONED
+104F MYANMAR SYMBOL GENITIVE
+@ Pali and Sanskrit extensions
+1050 MYANMAR LETTER SHA
+1051 MYANMAR LETTER SSA
+1052 MYANMAR LETTER VOCALIC R
+1053 MYANMAR LETTER VOCALIC RR
+1054 MYANMAR LETTER VOCALIC L
+1055 MYANMAR LETTER VOCALIC LL
+1056 MYANMAR VOWEL SIGN VOCALIC R
+1057 MYANMAR VOWEL SIGN VOCALIC RR
+1058 MYANMAR VOWEL SIGN VOCALIC L
+1059 MYANMAR VOWEL SIGN VOCALIC LL
+@@ 10A0 Georgian 10FF
+@ Khutsuri
+@+ This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli.
+10A0 GEORGIAN CAPITAL LETTER AN (Khutsuri)
+10A1 GEORGIAN CAPITAL LETTER BAN (Khutsuri)
+10A2 GEORGIAN CAPITAL LETTER GAN (Khutsuri)
+10A3 GEORGIAN CAPITAL LETTER DON (Khutsuri)
+10A4 GEORGIAN CAPITAL LETTER EN (Khutsuri)
+10A5 GEORGIAN CAPITAL LETTER VIN (Khutsuri)
+10A6 GEORGIAN CAPITAL LETTER ZEN (Khutsuri)
+10A7 GEORGIAN CAPITAL LETTER TAN (Khutsuri)
+10A8 GEORGIAN CAPITAL LETTER IN (Khutsuri)
+10A9 GEORGIAN CAPITAL LETTER KAN (Khutsuri)
+10AA GEORGIAN CAPITAL LETTER LAS (Khutsuri)
+10AB GEORGIAN CAPITAL LETTER MAN (Khutsuri)
+10AC GEORGIAN CAPITAL LETTER NAR (Khutsuri)
+10AD GEORGIAN CAPITAL LETTER ON (Khutsuri)
+10AE GEORGIAN CAPITAL LETTER PAR (Khutsuri)
+10AF GEORGIAN CAPITAL LETTER ZHAR (Khutsuri)
+10B0 GEORGIAN CAPITAL LETTER RAE (Khutsuri)
+10B1 GEORGIAN CAPITAL LETTER SAN (Khutsuri)
+10B2 GEORGIAN CAPITAL LETTER TAR (Khutsuri)
+10B3 GEORGIAN CAPITAL LETTER UN (Khutsuri)
+10B4 GEORGIAN CAPITAL LETTER PHAR (Khutsuri)
+10B5 GEORGIAN CAPITAL LETTER KHAR (Khutsuri)
+10B6 GEORGIAN CAPITAL LETTER GHAN (Khutsuri)
+10B7 GEORGIAN CAPITAL LETTER QAR (Khutsuri)
+10B8 GEORGIAN CAPITAL LETTER SHIN (Khutsuri)
+10B9 GEORGIAN CAPITAL LETTER CHIN (Khutsuri)
+10BA GEORGIAN CAPITAL LETTER CAN (Khutsuri)
+10BB GEORGIAN CAPITAL LETTER JIL (Khutsuri)
+10BC GEORGIAN CAPITAL LETTER CIL (Khutsuri)
+10BD GEORGIAN CAPITAL LETTER CHAR (Khutsuri)
+10BE GEORGIAN CAPITAL LETTER XAN (Khutsuri)
+10BF GEORGIAN CAPITAL LETTER JHAN (Khutsuri)
+10C0 GEORGIAN CAPITAL LETTER HAE (Khutsuri)
+10C1 GEORGIAN CAPITAL LETTER HE (Khutsuri)
+10C2 GEORGIAN CAPITAL LETTER HIE (Khutsuri)
+10C3 GEORGIAN CAPITAL LETTER WE (Khutsuri)
+10C4 GEORGIAN CAPITAL LETTER HAR (Khutsuri)
+10C5 GEORGIAN CAPITAL LETTER HOE (Khutsuri)
+@ Mkhedruli
+@+ This is the modern secular alphabet, which is caseless.
+10D0 GEORGIAN LETTER AN
+10D1 GEORGIAN LETTER BAN
+10D2 GEORGIAN LETTER GAN
+10D3 GEORGIAN LETTER DON
+10D4 GEORGIAN LETTER EN
+10D5 GEORGIAN LETTER VIN
+10D6 GEORGIAN LETTER ZEN
+10D7 GEORGIAN LETTER TAN
+10D8 GEORGIAN LETTER IN
+10D9 GEORGIAN LETTER KAN
+10DA GEORGIAN LETTER LAS
+10DB GEORGIAN LETTER MAN
+10DC GEORGIAN LETTER NAR
+10DD GEORGIAN LETTER ON
+10DE GEORGIAN LETTER PAR
+10DF GEORGIAN LETTER ZHAR
+10E0 GEORGIAN LETTER RAE
+10E1 GEORGIAN LETTER SAN
+10E2 GEORGIAN LETTER TAR
+10E3 GEORGIAN LETTER UN
+10E4 GEORGIAN LETTER PHAR
+10E5 GEORGIAN LETTER KHAR
+10E6 GEORGIAN LETTER GHAN
+10E7 GEORGIAN LETTER QAR
+10E8 GEORGIAN LETTER SHIN
+10E9 GEORGIAN LETTER CHIN
+10EA GEORGIAN LETTER CAN
+10EB GEORGIAN LETTER JIL
+10EC GEORGIAN LETTER CIL
+10ED GEORGIAN LETTER CHAR
+10EE GEORGIAN LETTER XAN
+10EF GEORGIAN LETTER JHAN
+10F0 GEORGIAN LETTER HAE
+@ Archaic letters
+10F1 GEORGIAN LETTER HE
+10F2 GEORGIAN LETTER HIE
+10F3 GEORGIAN LETTER WE
+10F4 GEORGIAN LETTER HAR
+10F5 GEORGIAN LETTER HOE
+10F6 GEORGIAN LETTER FI
+@ Punctuation
+10FB GEORGIAN PARAGRAPH SEPARATOR
+@@ 1100 Hangul Jamo 11FF
+@ Korean combining alphabet
+@ Initial consonants
+1100 HANGUL CHOSEONG KIYEOK (g) *
+1101 HANGUL CHOSEONG SSANGKIYEOK (gg) *
+1102 HANGUL CHOSEONG NIEUN (n) *
+1103 HANGUL CHOSEONG TIKEUT (d) *
+1104 HANGUL CHOSEONG SSANGTIKEUT (dd) *
+1105 HANGUL CHOSEONG RIEUL (r) *
+1106 HANGUL CHOSEONG MIEUM (m) *
+1107 HANGUL CHOSEONG PIEUP (b) *
+1108 HANGUL CHOSEONG SSANGPIEUP (bb) *
+1109 HANGUL CHOSEONG SIOS (s) *
+110A HANGUL CHOSEONG SSANGSIOS (ss) *
+110B HANGUL CHOSEONG IEUNG
+110C HANGUL CHOSEONG CIEUC (j) *
+110D HANGUL CHOSEONG SSANGCIEUC (jj) *
+110E HANGUL CHOSEONG CHIEUCH (c) *
+110F HANGUL CHOSEONG KHIEUKH (k) *
+1110 HANGUL CHOSEONG THIEUTH (t) *
+1111 HANGUL CHOSEONG PHIEUPH (p) *
+1112 HANGUL CHOSEONG HIEUH (h) *
+1113 HANGUL CHOSEONG NIEUN-KIYEOK
+1114 HANGUL CHOSEONG SSANGNIEUN
+1115 HANGUL CHOSEONG NIEUN-TIKEUT
+1116 HANGUL CHOSEONG NIEUN-PIEUP
+1117 HANGUL CHOSEONG TIKEUT-KIYEOK
+1118 HANGUL CHOSEONG RIEUL-NIEUN
+1119 HANGUL CHOSEONG SSANGRIEUL
+111A HANGUL CHOSEONG RIEUL-HIEUH
+111B HANGUL CHOSEONG KAPYEOUNRIEUL
+111C HANGUL CHOSEONG MIEUM-PIEUP
+111D HANGUL CHOSEONG KAPYEOUNMIEUM
+111E HANGUL CHOSEONG PIEUP-KIYEOK
+111F HANGUL CHOSEONG PIEUP-NIEUN
+1120 HANGUL CHOSEONG PIEUP-TIKEUT
+1121 HANGUL CHOSEONG PIEUP-SIOS
+1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125 HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127 HANGUL CHOSEONG PIEUP-CIEUC
+1128 HANGUL CHOSEONG PIEUP-CHIEUCH
+1129 HANGUL CHOSEONG PIEUP-THIEUTH
+112A HANGUL CHOSEONG PIEUP-PHIEUPH
+112B HANGUL CHOSEONG KAPYEOUNPIEUP
+112C HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112D HANGUL CHOSEONG SIOS-KIYEOK
+112E HANGUL CHOSEONG SIOS-NIEUN
+112F HANGUL CHOSEONG SIOS-TIKEUT
+1130 HANGUL CHOSEONG SIOS-RIEUL
+1131 HANGUL CHOSEONG SIOS-MIEUM
+1132 HANGUL CHOSEONG SIOS-PIEUP
+1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134 HANGUL CHOSEONG SIOS-SSANGSIOS
+1135 HANGUL CHOSEONG SIOS-IEUNG
+1136 HANGUL CHOSEONG SIOS-CIEUC
+1137 HANGUL CHOSEONG SIOS-CHIEUCH
+1138 HANGUL CHOSEONG SIOS-KHIEUKH
+1139 HANGUL CHOSEONG SIOS-THIEUTH
+113A HANGUL CHOSEONG SIOS-PHIEUPH
+113B HANGUL CHOSEONG SIOS-HIEUH
+113C HANGUL CHOSEONG CHITUEUMSIOS
+113D HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140 HANGUL CHOSEONG PANSIOS
+1141 HANGUL CHOSEONG IEUNG-KIYEOK
+1142 HANGUL CHOSEONG IEUNG-TIKEUT
+1143 HANGUL CHOSEONG IEUNG-MIEUM
+1144 HANGUL CHOSEONG IEUNG-PIEUP
+1145 HANGUL CHOSEONG IEUNG-SIOS
+1146 HANGUL CHOSEONG IEUNG-PANSIOS
+1147 HANGUL CHOSEONG SSANGIEUNG
+1148 HANGUL CHOSEONG IEUNG-CIEUC
+1149 HANGUL CHOSEONG IEUNG-CHIEUCH
+114A HANGUL CHOSEONG IEUNG-THIEUTH
+114B HANGUL CHOSEONG IEUNG-PHIEUPH
+114C HANGUL CHOSEONG YESIEUNG
+114D HANGUL CHOSEONG CIEUC-IEUNG
+114E HANGUL CHOSEONG CHITUEUMCIEUC
+114F HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153 HANGUL CHOSEONG CHIEUCH-HIEUH
+1154 HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156 HANGUL CHOSEONG PHIEUPH-PIEUP
+1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158 HANGUL CHOSEONG SSANGHIEUH
+1159 HANGUL CHOSEONG YEORINHIEUH
+115F HANGUL CHOSEONG FILLER
+@ Medial vowels
+1160 HANGUL JUNGSEONG FILLER
+1161 HANGUL JUNGSEONG A
+1162 HANGUL JUNGSEONG AE
+1163 HANGUL JUNGSEONG YA
+1164 HANGUL JUNGSEONG YAE
+1165 HANGUL JUNGSEONG EO
+1166 HANGUL JUNGSEONG E
+1167 HANGUL JUNGSEONG YEO
+1168 HANGUL JUNGSEONG YE
+1169 HANGUL JUNGSEONG O
+116A HANGUL JUNGSEONG WA
+116B HANGUL JUNGSEONG WAE
+116C HANGUL JUNGSEONG OE
+116D HANGUL JUNGSEONG YO
+116E HANGUL JUNGSEONG U
+116F HANGUL JUNGSEONG WEO
+1170 HANGUL JUNGSEONG WE
+1171 HANGUL JUNGSEONG WI
+1172 HANGUL JUNGSEONG YU
+1173 HANGUL JUNGSEONG EU
+1174 HANGUL JUNGSEONG YI
+1175 HANGUL JUNGSEONG I
+1176 HANGUL JUNGSEONG A-O
+1177 HANGUL JUNGSEONG A-U
+1178 HANGUL JUNGSEONG YA-O
+1179 HANGUL JUNGSEONG YA-YO
+117A HANGUL JUNGSEONG EO-O
+117B HANGUL JUNGSEONG EO-U
+117C HANGUL JUNGSEONG EO-EU
+117D HANGUL JUNGSEONG YEO-O
+117E HANGUL JUNGSEONG YEO-U
+117F HANGUL JUNGSEONG O-EO
+1180 HANGUL JUNGSEONG O-E
+1181 HANGUL JUNGSEONG O-YE
+1182 HANGUL JUNGSEONG O-O
+1183 HANGUL JUNGSEONG O-U
+1184 HANGUL JUNGSEONG YO-YA
+1185 HANGUL JUNGSEONG YO-YAE
+1186 HANGUL JUNGSEONG YO-YEO
+1187 HANGUL JUNGSEONG YO-O
+1188 HANGUL JUNGSEONG YO-I
+1189 HANGUL JUNGSEONG U-A
+118A HANGUL JUNGSEONG U-AE
+118B HANGUL JUNGSEONG U-EO-EU
+118C HANGUL JUNGSEONG U-YE
+118D HANGUL JUNGSEONG U-U
+118E HANGUL JUNGSEONG YU-A
+118F HANGUL JUNGSEONG YU-EO
+1190 HANGUL JUNGSEONG YU-E
+1191 HANGUL JUNGSEONG YU-YEO
+1192 HANGUL JUNGSEONG YU-YE
+1193 HANGUL JUNGSEONG YU-U
+1194 HANGUL JUNGSEONG YU-I
+1195 HANGUL JUNGSEONG EU-U
+1196 HANGUL JUNGSEONG EU-EU
+1197 HANGUL JUNGSEONG YI-U
+1198 HANGUL JUNGSEONG I-A
+1199 HANGUL JUNGSEONG I-YA
+119A HANGUL JUNGSEONG I-O
+119B HANGUL JUNGSEONG I-U
+119C HANGUL JUNGSEONG I-EU
+119D HANGUL JUNGSEONG I-ARAEA
+119E HANGUL JUNGSEONG ARAEA
+119F HANGUL JUNGSEONG ARAEA-EO
+11A0 HANGUL JUNGSEONG ARAEA-U
+11A1 HANGUL JUNGSEONG ARAEA-I
+11A2 HANGUL JUNGSEONG SSANGARAEA
+@ Final consonants
+11A8 HANGUL JONGSEONG KIYEOK (g) *
+11A9 HANGUL JONGSEONG SSANGKIYEOK (gg) *
+11AA HANGUL JONGSEONG KIYEOK-SIOS (gs) *
+11AB HANGUL JONGSEONG NIEUN (n) *
+11AC HANGUL JONGSEONG NIEUN-CIEUC (nj) *
+11AD HANGUL JONGSEONG NIEUN-HIEUH (nh) *
+11AE HANGUL JONGSEONG TIKEUT (d) *
+11AF HANGUL JONGSEONG RIEUL (l) *
+11B0 HANGUL JONGSEONG RIEUL-KIYEOK (lg) *
+11B1 HANGUL JONGSEONG RIEUL-MIEUM (lm) *
+11B2 HANGUL JONGSEONG RIEUL-PIEUP (lb) *
+11B3 HANGUL JONGSEONG RIEUL-SIOS (ls) *
+11B4 HANGUL JONGSEONG RIEUL-THIEUTH (lt) *
+11B5 HANGUL JONGSEONG RIEUL-PHIEUPH (lp) *
+11B6 HANGUL JONGSEONG RIEUL-HIEUH (lh) *
+11B7 HANGUL JONGSEONG MIEUM (m) *
+11B8 HANGUL JONGSEONG PIEUP (b) *
+11B9 HANGUL JONGSEONG PIEUP-SIOS (bs) *
+11BA HANGUL JONGSEONG SIOS (s) *
+11BB HANGUL JONGSEONG SSANGSIOS (ss) *
+11BC HANGUL JONGSEONG IEUNG (ng) *
+11BD HANGUL JONGSEONG CIEUC (j) *
+11BE HANGUL JONGSEONG CHIEUCH (c) *
+11BF HANGUL JONGSEONG KHIEUKH (k) *
+11C0 HANGUL JONGSEONG THIEUTH (t) *
+11C1 HANGUL JONGSEONG PHIEUPH (p) *
+11C2 HANGUL JONGSEONG HIEUH (h) *
+11C3 HANGUL JONGSEONG KIYEOK-RIEUL
+11C4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5 HANGUL JONGSEONG NIEUN-KIYEOK
+11C6 HANGUL JONGSEONG NIEUN-TIKEUT
+11C7 HANGUL JONGSEONG NIEUN-SIOS
+11C8 HANGUL JONGSEONG NIEUN-PANSIOS
+11C9 HANGUL JONGSEONG NIEUN-THIEUTH
+11CA HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB HANGUL JONGSEONG TIKEUT-RIEUL
+11CC HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11CD HANGUL JONGSEONG RIEUL-NIEUN
+11CE HANGUL JONGSEONG RIEUL-TIKEUT
+11CF HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0 HANGUL JONGSEONG SSANGRIEUL
+11D1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11D4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6 HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7 HANGUL JONGSEONG RIEUL-PANSIOS
+11D8 HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9 HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11DA HANGUL JONGSEONG MIEUM-KIYEOK
+11DB HANGUL JONGSEONG MIEUM-RIEUL
+11DC HANGUL JONGSEONG MIEUM-PIEUP
+11DD HANGUL JONGSEONG MIEUM-SIOS
+11DE HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF HANGUL JONGSEONG MIEUM-PANSIOS
+11E0 HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1 HANGUL JONGSEONG MIEUM-HIEUH
+11E2 HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3 HANGUL JONGSEONG PIEUP-RIEUL
+11E4 HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5 HANGUL JONGSEONG PIEUP-HIEUH
+11E6 HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7 HANGUL JONGSEONG SIOS-KIYEOK
+11E8 HANGUL JONGSEONG SIOS-TIKEUT
+11E9 HANGUL JONGSEONG SIOS-RIEUL
+11EA HANGUL JONGSEONG SIOS-PIEUP
+11EB HANGUL JONGSEONG PANSIOS
+11EC HANGUL JONGSEONG IEUNG-KIYEOK
+11ED HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE HANGUL JONGSEONG SSANGIEUNG
+11EF HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0 HANGUL JONGSEONG YESIEUNG
+11F1 HANGUL JONGSEONG YESIEUNG-SIOS
+11F2 HANGUL JONGSEONG YESIEUNG-PANSIOS
+11F3 HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4 HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5 HANGUL JONGSEONG HIEUH-NIEUN
+11F6 HANGUL JONGSEONG HIEUH-RIEUL
+11F7 HANGUL JONGSEONG HIEUH-MIEUM
+11F8 HANGUL JONGSEONG HIEUH-PIEUP
+11F9 HANGUL JONGSEONG YEORINHIEUH
+@@ 1200 Ethiopic 137F
+@ Syllables
+1200 ETHIOPIC SYLLABLE HA
+1201 ETHIOPIC SYLLABLE HU
+1202 ETHIOPIC SYLLABLE HI
+1203 ETHIOPIC SYLLABLE HAA
+1204 ETHIOPIC SYLLABLE HEE
+1205 ETHIOPIC SYLLABLE HE
+1206 ETHIOPIC SYLLABLE HO
+1208 ETHIOPIC SYLLABLE LA
+1209 ETHIOPIC SYLLABLE LU
+120A ETHIOPIC SYLLABLE LI
+120B ETHIOPIC SYLLABLE LAA
+120C ETHIOPIC SYLLABLE LEE
+120D ETHIOPIC SYLLABLE LE
+120E ETHIOPIC SYLLABLE LO
+120F ETHIOPIC SYLLABLE LWA
+1210 ETHIOPIC SYLLABLE HHA
+1211 ETHIOPIC SYLLABLE HHU
+1212 ETHIOPIC SYLLABLE HHI
+1213 ETHIOPIC SYLLABLE HHAA
+1214 ETHIOPIC SYLLABLE HHEE
+1215 ETHIOPIC SYLLABLE HHE
+1216 ETHIOPIC SYLLABLE HHO
+1217 ETHIOPIC SYLLABLE HHWA
+1218 ETHIOPIC SYLLABLE MA
+1219 ETHIOPIC SYLLABLE MU
+121A ETHIOPIC SYLLABLE MI
+121B ETHIOPIC SYLLABLE MAA
+121C ETHIOPIC SYLLABLE MEE
+121D ETHIOPIC SYLLABLE ME
+121E ETHIOPIC SYLLABLE MO
+121F ETHIOPIC SYLLABLE MWA
+1220 ETHIOPIC SYLLABLE SZA
+1221 ETHIOPIC SYLLABLE SZU
+1222 ETHIOPIC SYLLABLE SZI
+1223 ETHIOPIC SYLLABLE SZAA
+1224 ETHIOPIC SYLLABLE SZEE
+1225 ETHIOPIC SYLLABLE SZE
+1226 ETHIOPIC SYLLABLE SZO
+1227 ETHIOPIC SYLLABLE SZWA
+1228 ETHIOPIC SYLLABLE RA
+1229 ETHIOPIC SYLLABLE RU
+122A ETHIOPIC SYLLABLE RI
+122B ETHIOPIC SYLLABLE RAA
+122C ETHIOPIC SYLLABLE REE
+122D ETHIOPIC SYLLABLE RE
+122E ETHIOPIC SYLLABLE RO
+122F ETHIOPIC SYLLABLE RWA
+1230 ETHIOPIC SYLLABLE SA
+1231 ETHIOPIC SYLLABLE SU
+1232 ETHIOPIC SYLLABLE SI
+1233 ETHIOPIC SYLLABLE SAA
+1234 ETHIOPIC SYLLABLE SEE
+1235 ETHIOPIC SYLLABLE SE
+1236 ETHIOPIC SYLLABLE SO
+1237 ETHIOPIC SYLLABLE SWA
+1238 ETHIOPIC SYLLABLE SHA
+1239 ETHIOPIC SYLLABLE SHU
+123A ETHIOPIC SYLLABLE SHI
+123B ETHIOPIC SYLLABLE SHAA
+123C ETHIOPIC SYLLABLE SHEE
+123D ETHIOPIC SYLLABLE SHE
+123E ETHIOPIC SYLLABLE SHO
+123F ETHIOPIC SYLLABLE SHWA
+1240 ETHIOPIC SYLLABLE QA
+1241 ETHIOPIC SYLLABLE QU
+1242 ETHIOPIC SYLLABLE QI
+1243 ETHIOPIC SYLLABLE QAA
+1244 ETHIOPIC SYLLABLE QEE
+1245 ETHIOPIC SYLLABLE QE
+1246 ETHIOPIC SYLLABLE QO
+1248 ETHIOPIC SYLLABLE QWA
+124A ETHIOPIC SYLLABLE QWI
+124B ETHIOPIC SYLLABLE QWAA
+124C ETHIOPIC SYLLABLE QWEE
+124D ETHIOPIC SYLLABLE QWE
+1250 ETHIOPIC SYLLABLE QHA
+1251 ETHIOPIC SYLLABLE QHU
+1252 ETHIOPIC SYLLABLE QHI
+1253 ETHIOPIC SYLLABLE QHAA
+1254 ETHIOPIC SYLLABLE QHEE
+1255 ETHIOPIC SYLLABLE QHE
+1256 ETHIOPIC SYLLABLE QHO
+1258 ETHIOPIC SYLLABLE QHWA
+125A ETHIOPIC SYLLABLE QHWI
+125B ETHIOPIC SYLLABLE QHWAA
+125C ETHIOPIC SYLLABLE QHWEE
+125D ETHIOPIC SYLLABLE QHWE
+1260 ETHIOPIC SYLLABLE BA
+1261 ETHIOPIC SYLLABLE BU
+1262 ETHIOPIC SYLLABLE BI
+1263 ETHIOPIC SYLLABLE BAA
+1264 ETHIOPIC SYLLABLE BEE
+1265 ETHIOPIC SYLLABLE BE
+1266 ETHIOPIC SYLLABLE BO
+1267 ETHIOPIC SYLLABLE BWA
+1268 ETHIOPIC SYLLABLE VA
+1269 ETHIOPIC SYLLABLE VU
+126A ETHIOPIC SYLLABLE VI
+126B ETHIOPIC SYLLABLE VAA
+126C ETHIOPIC SYLLABLE VEE
+126D ETHIOPIC SYLLABLE VE
+126E ETHIOPIC SYLLABLE VO
+126F ETHIOPIC SYLLABLE VWA
+1270 ETHIOPIC SYLLABLE TA
+1271 ETHIOPIC SYLLABLE TU
+1272 ETHIOPIC SYLLABLE TI
+1273 ETHIOPIC SYLLABLE TAA
+1274 ETHIOPIC SYLLABLE TEE
+1275 ETHIOPIC SYLLABLE TE
+1276 ETHIOPIC SYLLABLE TO
+1277 ETHIOPIC SYLLABLE TWA
+1278 ETHIOPIC SYLLABLE CA
+1279 ETHIOPIC SYLLABLE CU
+127A ETHIOPIC SYLLABLE CI
+127B ETHIOPIC SYLLABLE CAA
+127C ETHIOPIC SYLLABLE CEE
+127D ETHIOPIC SYLLABLE CE
+127E ETHIOPIC SYLLABLE CO
+127F ETHIOPIC SYLLABLE CWA
+1280 ETHIOPIC SYLLABLE XA
+1281 ETHIOPIC SYLLABLE XU
+1282 ETHIOPIC SYLLABLE XI
+1283 ETHIOPIC SYLLABLE XAA
+1284 ETHIOPIC SYLLABLE XEE
+1285 ETHIOPIC SYLLABLE XE
+1286 ETHIOPIC SYLLABLE XO
+1288 ETHIOPIC SYLLABLE XWA
+128A ETHIOPIC SYLLABLE XWI
+128B ETHIOPIC SYLLABLE XWAA
+128C ETHIOPIC SYLLABLE XWEE
+128D ETHIOPIC SYLLABLE XWE
+1290 ETHIOPIC SYLLABLE NA
+1291 ETHIOPIC SYLLABLE NU
+1292 ETHIOPIC SYLLABLE NI
+1293 ETHIOPIC SYLLABLE NAA
+1294 ETHIOPIC SYLLABLE NEE
+1295 ETHIOPIC SYLLABLE NE
+1296 ETHIOPIC SYLLABLE NO
+1297 ETHIOPIC SYLLABLE NWA
+1298 ETHIOPIC SYLLABLE NYA
+1299 ETHIOPIC SYLLABLE NYU
+129A ETHIOPIC SYLLABLE NYI
+129B ETHIOPIC SYLLABLE NYAA
+129C ETHIOPIC SYLLABLE NYEE
+129D ETHIOPIC SYLLABLE NYE
+129E ETHIOPIC SYLLABLE NYO
+129F ETHIOPIC SYLLABLE NYWA
+12A0 ETHIOPIC SYLLABLE GLOTTAL A
+12A1 ETHIOPIC SYLLABLE GLOTTAL U
+12A2 ETHIOPIC SYLLABLE GLOTTAL I
+12A3 ETHIOPIC SYLLABLE GLOTTAL AA
+12A4 ETHIOPIC SYLLABLE GLOTTAL EE
+12A5 ETHIOPIC SYLLABLE GLOTTAL E
+12A6 ETHIOPIC SYLLABLE GLOTTAL O
+12A7 ETHIOPIC SYLLABLE GLOTTAL WA
+12A8 ETHIOPIC SYLLABLE KA
+12A9 ETHIOPIC SYLLABLE KU
+12AA ETHIOPIC SYLLABLE KI
+12AB ETHIOPIC SYLLABLE KAA
+12AC ETHIOPIC SYLLABLE KEE
+12AD ETHIOPIC SYLLABLE KE
+12AE ETHIOPIC SYLLABLE KO
+12B0 ETHIOPIC SYLLABLE KWA
+12B2 ETHIOPIC SYLLABLE KWI
+12B3 ETHIOPIC SYLLABLE KWAA
+12B4 ETHIOPIC SYLLABLE KWEE
+12B5 ETHIOPIC SYLLABLE KWE
+12B8 ETHIOPIC SYLLABLE KXA
+12B9 ETHIOPIC SYLLABLE KXU
+12BA ETHIOPIC SYLLABLE KXI
+12BB ETHIOPIC SYLLABLE KXAA
+12BC ETHIOPIC SYLLABLE KXEE
+12BD ETHIOPIC SYLLABLE KXE
+12BE ETHIOPIC SYLLABLE KXO
+12C0 ETHIOPIC SYLLABLE KXWA
+12C2 ETHIOPIC SYLLABLE KXWI
+12C3 ETHIOPIC SYLLABLE KXWAA
+12C4 ETHIOPIC SYLLABLE KXWEE
+12C5 ETHIOPIC SYLLABLE KXWE
+12C8 ETHIOPIC SYLLABLE WA
+12C9 ETHIOPIC SYLLABLE WU
+12CA ETHIOPIC SYLLABLE WI
+12CB ETHIOPIC SYLLABLE WAA
+12CC ETHIOPIC SYLLABLE WEE
+12CD ETHIOPIC SYLLABLE WE
+12CE ETHIOPIC SYLLABLE WO
+12D0 ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1 ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2 ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3 ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4 ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5 ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6 ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8 ETHIOPIC SYLLABLE ZA
+12D9 ETHIOPIC SYLLABLE ZU
+12DA ETHIOPIC SYLLABLE ZI
+12DB ETHIOPIC SYLLABLE ZAA
+12DC ETHIOPIC SYLLABLE ZEE
+12DD ETHIOPIC SYLLABLE ZE
+12DE ETHIOPIC SYLLABLE ZO
+12DF ETHIOPIC SYLLABLE ZWA
+12E0 ETHIOPIC SYLLABLE ZHA
+12E1 ETHIOPIC SYLLABLE ZHU
+12E2 ETHIOPIC SYLLABLE ZHI
+12E3 ETHIOPIC SYLLABLE ZHAA
+12E4 ETHIOPIC SYLLABLE ZHEE
+12E5 ETHIOPIC SYLLABLE ZHE
+12E6 ETHIOPIC SYLLABLE ZHO
+12E7 ETHIOPIC SYLLABLE ZHWA
+12E8 ETHIOPIC SYLLABLE YA
+12E9 ETHIOPIC SYLLABLE YU
+12EA ETHIOPIC SYLLABLE YI
+12EB ETHIOPIC SYLLABLE YAA
+12EC ETHIOPIC SYLLABLE YEE
+12ED ETHIOPIC SYLLABLE YE
+12EE ETHIOPIC SYLLABLE YO
+12F0 ETHIOPIC SYLLABLE DA
+12F1 ETHIOPIC SYLLABLE DU
+12F2 ETHIOPIC SYLLABLE DI
+12F3 ETHIOPIC SYLLABLE DAA
+12F4 ETHIOPIC SYLLABLE DEE
+12F5 ETHIOPIC SYLLABLE DE
+12F6 ETHIOPIC SYLLABLE DO
+12F7 ETHIOPIC SYLLABLE DWA
+12F8 ETHIOPIC SYLLABLE DDA
+12F9 ETHIOPIC SYLLABLE DDU
+12FA ETHIOPIC SYLLABLE DDI
+12FB ETHIOPIC SYLLABLE DDAA
+12FC ETHIOPIC SYLLABLE DDEE
+12FD ETHIOPIC SYLLABLE DDE
+12FE ETHIOPIC SYLLABLE DDO
+12FF ETHIOPIC SYLLABLE DDWA
+1300 ETHIOPIC SYLLABLE JA
+1301 ETHIOPIC SYLLABLE JU
+1302 ETHIOPIC SYLLABLE JI
+1303 ETHIOPIC SYLLABLE JAA
+1304 ETHIOPIC SYLLABLE JEE
+1305 ETHIOPIC SYLLABLE JE
+1306 ETHIOPIC SYLLABLE JO
+1307 ETHIOPIC SYLLABLE JWA
+1308 ETHIOPIC SYLLABLE GA
+1309 ETHIOPIC SYLLABLE GU
+130A ETHIOPIC SYLLABLE GI
+130B ETHIOPIC SYLLABLE GAA
+130C ETHIOPIC SYLLABLE GEE
+130D ETHIOPIC SYLLABLE GE
+130E ETHIOPIC SYLLABLE GO
+1310 ETHIOPIC SYLLABLE GWA
+1312 ETHIOPIC SYLLABLE GWI
+1313 ETHIOPIC SYLLABLE GWAA
+1314 ETHIOPIC SYLLABLE GWEE
+1315 ETHIOPIC SYLLABLE GWE
+1318 ETHIOPIC SYLLABLE GGA
+1319 ETHIOPIC SYLLABLE GGU
+131A ETHIOPIC SYLLABLE GGI
+131B ETHIOPIC SYLLABLE GGAA
+131C ETHIOPIC SYLLABLE GGEE
+131D ETHIOPIC SYLLABLE GGE
+131E ETHIOPIC SYLLABLE GGO
+1320 ETHIOPIC SYLLABLE THA
+1321 ETHIOPIC SYLLABLE THU
+1322 ETHIOPIC SYLLABLE THI
+1323 ETHIOPIC SYLLABLE THAA
+1324 ETHIOPIC SYLLABLE THEE
+1325 ETHIOPIC SYLLABLE THE
+1326 ETHIOPIC SYLLABLE THO
+1327 ETHIOPIC SYLLABLE THWA
+1328 ETHIOPIC SYLLABLE CHA
+1329 ETHIOPIC SYLLABLE CHU
+132A ETHIOPIC SYLLABLE CHI
+132B ETHIOPIC SYLLABLE CHAA
+132C ETHIOPIC SYLLABLE CHEE
+132D ETHIOPIC SYLLABLE CHE
+132E ETHIOPIC SYLLABLE CHO
+132F ETHIOPIC SYLLABLE CHWA
+1330 ETHIOPIC SYLLABLE PHA
+1331 ETHIOPIC SYLLABLE PHU
+1332 ETHIOPIC SYLLABLE PHI
+1333 ETHIOPIC SYLLABLE PHAA
+1334 ETHIOPIC SYLLABLE PHEE
+1335 ETHIOPIC SYLLABLE PHE
+1336 ETHIOPIC SYLLABLE PHO
+1337 ETHIOPIC SYLLABLE PHWA
+1338 ETHIOPIC SYLLABLE TSA
+1339 ETHIOPIC SYLLABLE TSU
+133A ETHIOPIC SYLLABLE TSI
+133B ETHIOPIC SYLLABLE TSAA
+133C ETHIOPIC SYLLABLE TSEE
+133D ETHIOPIC SYLLABLE TSE
+133E ETHIOPIC SYLLABLE TSO
+133F ETHIOPIC SYLLABLE TSWA
+1340 ETHIOPIC SYLLABLE TZA
+1341 ETHIOPIC SYLLABLE TZU
+1342 ETHIOPIC SYLLABLE TZI
+1343 ETHIOPIC SYLLABLE TZAA
+1344 ETHIOPIC SYLLABLE TZEE
+1345 ETHIOPIC SYLLABLE TZE
+1346 ETHIOPIC SYLLABLE TZO
+1348 ETHIOPIC SYLLABLE FA
+1349 ETHIOPIC SYLLABLE FU
+134A ETHIOPIC SYLLABLE FI
+134B ETHIOPIC SYLLABLE FAA
+134C ETHIOPIC SYLLABLE FEE
+134D ETHIOPIC SYLLABLE FE
+134E ETHIOPIC SYLLABLE FO
+134F ETHIOPIC SYLLABLE FWA
+1350 ETHIOPIC SYLLABLE PA
+1351 ETHIOPIC SYLLABLE PU
+1352 ETHIOPIC SYLLABLE PI
+1353 ETHIOPIC SYLLABLE PAA
+1354 ETHIOPIC SYLLABLE PEE
+1355 ETHIOPIC SYLLABLE PE
+1356 ETHIOPIC SYLLABLE PO
+1357 ETHIOPIC SYLLABLE PWA
+1358 ETHIOPIC SYLLABLE RYA
+1359 ETHIOPIC SYLLABLE MYA
+135A ETHIOPIC SYLLABLE FYA
+@ Punctuation
+1361 ETHIOPIC WORDSPACE
+1362 ETHIOPIC FULL STOP
+1363 ETHIOPIC COMMA
+1364 ETHIOPIC SEMICOLON
+1365 ETHIOPIC COLON
+1366 ETHIOPIC PREFACE COLON
+1367 ETHIOPIC QUESTION MARK
+1368 ETHIOPIC PARAGRAPH SEPARATOR
+@ Digits
+1369 ETHIOPIC DIGIT ONE
+136A ETHIOPIC DIGIT TWO
+136B ETHIOPIC DIGIT THREE
+136C ETHIOPIC DIGIT FOUR
+136D ETHIOPIC DIGIT FIVE
+136E ETHIOPIC DIGIT SIX
+136F ETHIOPIC DIGIT SEVEN
+1370 ETHIOPIC DIGIT EIGHT
+1371 ETHIOPIC DIGIT NINE
+@ Numbers
+1372 ETHIOPIC NUMBER TEN
+1373 ETHIOPIC NUMBER TWENTY
+1374 ETHIOPIC NUMBER THIRTY
+1375 ETHIOPIC NUMBER FORTY
+1376 ETHIOPIC NUMBER FIFTY
+1377 ETHIOPIC NUMBER SIXTY
+1378 ETHIOPIC NUMBER SEVENTY
+1379 ETHIOPIC NUMBER EIGHTY
+137A ETHIOPIC NUMBER NINETY
+137B ETHIOPIC NUMBER HUNDRED
+137C ETHIOPIC NUMBER TEN THOUSAND
+@@ 13A0 Cherokee 13FF
+@ Syllables
+13A0 CHEROKEE LETTER A
+13A1 CHEROKEE LETTER E
+13A2 CHEROKEE LETTER I
+13A3 CHEROKEE LETTER O
+13A4 CHEROKEE LETTER U
+13A5 CHEROKEE LETTER V
+13A6 CHEROKEE LETTER GA
+13A7 CHEROKEE LETTER KA
+13A8 CHEROKEE LETTER GE
+13A9 CHEROKEE LETTER GI
+13AA CHEROKEE LETTER GO
+13AB CHEROKEE LETTER GU
+13AC CHEROKEE LETTER GV
+13AD CHEROKEE LETTER HA
+13AE CHEROKEE LETTER HE
+13AF CHEROKEE LETTER HI
+13B0 CHEROKEE LETTER HO
+13B1 CHEROKEE LETTER HU
+13B2 CHEROKEE LETTER HV
+13B3 CHEROKEE LETTER LA
+13B4 CHEROKEE LETTER LE
+13B5 CHEROKEE LETTER LI
+13B6 CHEROKEE LETTER LO
+13B7 CHEROKEE LETTER LU
+13B8 CHEROKEE LETTER LV
+13B9 CHEROKEE LETTER MA
+13BA CHEROKEE LETTER ME
+13BB CHEROKEE LETTER MI
+13BC CHEROKEE LETTER MO
+13BD CHEROKEE LETTER MU
+13BE CHEROKEE LETTER NA
+13BF CHEROKEE LETTER HNA
+13C0 CHEROKEE LETTER NAH
+13C1 CHEROKEE LETTER NE
+13C2 CHEROKEE LETTER NI
+13C3 CHEROKEE LETTER NO
+13C4 CHEROKEE LETTER NU
+13C5 CHEROKEE LETTER NV
+13C6 CHEROKEE LETTER QUA
+13C7 CHEROKEE LETTER QUE
+13C8 CHEROKEE LETTER QUI
+13C9 CHEROKEE LETTER QUO
+13CA CHEROKEE LETTER QUU
+13CB CHEROKEE LETTER QUV
+13CC CHEROKEE LETTER SA
+13CD CHEROKEE LETTER S
+13CE CHEROKEE LETTER SE
+13CF CHEROKEE LETTER SI
+13D0 CHEROKEE LETTER SO
+13D1 CHEROKEE LETTER SU
+13D2 CHEROKEE LETTER SV
+13D3 CHEROKEE LETTER DA
+13D4 CHEROKEE LETTER TA
+13D5 CHEROKEE LETTER DE
+13D6 CHEROKEE LETTER TE
+13D7 CHEROKEE LETTER DI
+13D8 CHEROKEE LETTER TI
+13D9 CHEROKEE LETTER DO
+13DA CHEROKEE LETTER DU
+13DB CHEROKEE LETTER DV
+13DC CHEROKEE LETTER DLA
+13DD CHEROKEE LETTER TLA
+13DE CHEROKEE LETTER TLE
+13DF CHEROKEE LETTER TLI
+13E0 CHEROKEE LETTER TLO
+13E1 CHEROKEE LETTER TLU
+13E2 CHEROKEE LETTER TLV
+13E3 CHEROKEE LETTER TSA
+13E4 CHEROKEE LETTER TSE
+13E5 CHEROKEE LETTER TSI
+13E6 CHEROKEE LETTER TSO
+13E7 CHEROKEE LETTER TSU
+13E8 CHEROKEE LETTER TSV
+13E9 CHEROKEE LETTER WA
+13EA CHEROKEE LETTER WE
+13EB CHEROKEE LETTER WI
+13EC CHEROKEE LETTER WO
+13ED CHEROKEE LETTER WU
+13EE CHEROKEE LETTER WV
+13EF CHEROKEE LETTER YA
+13F0 CHEROKEE LETTER YE
+13F1 CHEROKEE LETTER YI
+13F2 CHEROKEE LETTER YO
+13F3 CHEROKEE LETTER YU
+13F4 CHEROKEE LETTER YV
+@@ 1400 Unified Canadian Aboriginal Syllabics 167F
+@ Syllables
+1401 CANADIAN SYLLABICS E
+1402 CANADIAN SYLLABICS AAI
+1403 CANADIAN SYLLABICS I
+1404 CANADIAN SYLLABICS II
+1405 CANADIAN SYLLABICS O
+1406 CANADIAN SYLLABICS OO
+1407 CANADIAN SYLLABICS Y-CREE OO
+1408 CANADIAN SYLLABICS CARRIER EE
+1409 CANADIAN SYLLABICS CARRIER I
+140A CANADIAN SYLLABICS A
+140B CANADIAN SYLLABICS AA
+140C CANADIAN SYLLABICS WE
+140D CANADIAN SYLLABICS WEST-CREE WE
+140E CANADIAN SYLLABICS WI
+140F CANADIAN SYLLABICS WEST-CREE WI
+1410 CANADIAN SYLLABICS WII
+1411 CANADIAN SYLLABICS WEST-CREE WII
+1412 CANADIAN SYLLABICS WO
+1413 CANADIAN SYLLABICS WEST-CREE WO
+1414 CANADIAN SYLLABICS WOO
+1415 CANADIAN SYLLABICS WEST-CREE WOO
+1416 CANADIAN SYLLABICS NASKAPI WOO
+1417 CANADIAN SYLLABICS WA
+1418 CANADIAN SYLLABICS WEST-CREE WA
+1419 CANADIAN SYLLABICS WAA
+141A CANADIAN SYLLABICS WEST-CREE WAA
+141B CANADIAN SYLLABICS NASKAPI WAA
+141C CANADIAN SYLLABICS AI
+141D CANADIAN SYLLABICS Y-CREE W
+141E CANADIAN SYLLABICS GLOTTAL STOP
+141F CANADIAN SYLLABICS FINAL ACUTE
+1420 CANADIAN SYLLABICS FINAL GRAVE
+1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422 CANADIAN SYLLABICS FINAL TOP HALF RING
+1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424 CANADIAN SYLLABICS FINAL RING
+1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427 CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429 CANADIAN SYLLABICS FINAL PLUS
+142A CANADIAN SYLLABICS FINAL DOWN TACK
+142B CANADIAN SYLLABICS EN
+142C CANADIAN SYLLABICS IN
+142D CANADIAN SYLLABICS ON
+142E CANADIAN SYLLABICS AN
+142F CANADIAN SYLLABICS PE
+1430 CANADIAN SYLLABICS PAAI
+1431 CANADIAN SYLLABICS PI
+1432 CANADIAN SYLLABICS PII
+1433 CANADIAN SYLLABICS PO
+1434 CANADIAN SYLLABICS POO
+1435 CANADIAN SYLLABICS Y-CREE POO
+1436 CANADIAN SYLLABICS CARRIER HEE
+1437 CANADIAN SYLLABICS CARRIER HI
+1438 CANADIAN SYLLABICS PA
+1439 CANADIAN SYLLABICS PAA
+143A CANADIAN SYLLABICS PWE
+143B CANADIAN SYLLABICS WEST-CREE PWE
+143C CANADIAN SYLLABICS PWI
+143D CANADIAN SYLLABICS WEST-CREE PWI
+143E CANADIAN SYLLABICS PWII
+143F CANADIAN SYLLABICS WEST-CREE PWII
+1440 CANADIAN SYLLABICS PWO
+1441 CANADIAN SYLLABICS WEST-CREE PWO
+1442 CANADIAN SYLLABICS PWOO
+1443 CANADIAN SYLLABICS WEST-CREE PWOO
+1444 CANADIAN SYLLABICS PWA
+1445 CANADIAN SYLLABICS WEST-CREE PWA
+1446 CANADIAN SYLLABICS PWAA
+1447 CANADIAN SYLLABICS WEST-CREE PWAA
+1448 CANADIAN SYLLABICS Y-CREE PWAA
+1449 CANADIAN SYLLABICS P
+144A CANADIAN SYLLABICS WEST-CREE P
+144B CANADIAN SYLLABICS CARRIER H
+144C CANADIAN SYLLABICS TE
+144D CANADIAN SYLLABICS TAAI
+144E CANADIAN SYLLABICS TI
+144F CANADIAN SYLLABICS TII
+1450 CANADIAN SYLLABICS TO
+1451 CANADIAN SYLLABICS TOO
+1452 CANADIAN SYLLABICS Y-CREE TOO
+1453 CANADIAN SYLLABICS CARRIER DEE
+1454 CANADIAN SYLLABICS CARRIER DI
+1455 CANADIAN SYLLABICS TA
+1456 CANADIAN SYLLABICS TAA
+1457 CANADIAN SYLLABICS TWE
+1458 CANADIAN SYLLABICS WEST-CREE TWE
+1459 CANADIAN SYLLABICS TWI
+145A CANADIAN SYLLABICS WEST-CREE TWI
+145B CANADIAN SYLLABICS TWII
+145C CANADIAN SYLLABICS WEST-CREE TWII
+145D CANADIAN SYLLABICS TWO
+145E CANADIAN SYLLABICS WEST-CREE TWO
+145F CANADIAN SYLLABICS TWOO
+1460 CANADIAN SYLLABICS WEST-CREE TWOO
+1461 CANADIAN SYLLABICS TWA
+1462 CANADIAN SYLLABICS WEST-CREE TWA
+1463 CANADIAN SYLLABICS TWAA
+1464 CANADIAN SYLLABICS WEST-CREE TWAA
+1465 CANADIAN SYLLABICS NASKAPI TWAA
+1466 CANADIAN SYLLABICS T
+1467 CANADIAN SYLLABICS TTE
+1468 CANADIAN SYLLABICS TTI
+1469 CANADIAN SYLLABICS TTO
+146A CANADIAN SYLLABICS TTA
+146B CANADIAN SYLLABICS KE
+146C CANADIAN SYLLABICS KAAI
+146D CANADIAN SYLLABICS KI
+146E CANADIAN SYLLABICS KII
+146F CANADIAN SYLLABICS KO
+1470 CANADIAN SYLLABICS KOO
+1471 CANADIAN SYLLABICS Y-CREE KOO
+1472 CANADIAN SYLLABICS KA
+1473 CANADIAN SYLLABICS KAA
+1474 CANADIAN SYLLABICS KWE
+1475 CANADIAN SYLLABICS WEST-CREE KWE
+1476 CANADIAN SYLLABICS KWI
+1477 CANADIAN SYLLABICS WEST-CREE KWI
+1478 CANADIAN SYLLABICS KWII
+1479 CANADIAN SYLLABICS WEST-CREE KWII
+147A CANADIAN SYLLABICS KWO
+147B CANADIAN SYLLABICS WEST-CREE KWO
+147C CANADIAN SYLLABICS KWOO
+147D CANADIAN SYLLABICS WEST-CREE KWOO
+147E CANADIAN SYLLABICS KWA
+147F CANADIAN SYLLABICS WEST-CREE KWA
+1480 CANADIAN SYLLABICS KWAA
+1481 CANADIAN SYLLABICS WEST-CREE KWAA
+1482 CANADIAN SYLLABICS NASKAPI KWAA
+1483 CANADIAN SYLLABICS K
+1484 CANADIAN SYLLABICS KW
+1485 CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486 CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487 CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488 CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489 CANADIAN SYLLABICS CE
+148A CANADIAN SYLLABICS CAAI
+148B CANADIAN SYLLABICS CI
+148C CANADIAN SYLLABICS CII
+148D CANADIAN SYLLABICS CO
+148E CANADIAN SYLLABICS COO
+148F CANADIAN SYLLABICS Y-CREE COO
+1490 CANADIAN SYLLABICS CA
+1491 CANADIAN SYLLABICS CAA
+1492 CANADIAN SYLLABICS CWE
+1493 CANADIAN SYLLABICS WEST-CREE CWE
+1494 CANADIAN SYLLABICS CWI
+1495 CANADIAN SYLLABICS WEST-CREE CWI
+1496 CANADIAN SYLLABICS CWII
+1497 CANADIAN SYLLABICS WEST-CREE CWII
+1498 CANADIAN SYLLABICS CWO
+1499 CANADIAN SYLLABICS WEST-CREE CWO
+149A CANADIAN SYLLABICS CWOO
+149B CANADIAN SYLLABICS WEST-CREE CWOO
+149C CANADIAN SYLLABICS CWA
+149D CANADIAN SYLLABICS WEST-CREE CWA
+149E CANADIAN SYLLABICS CWAA
+149F CANADIAN SYLLABICS WEST-CREE CWAA
+14A0 CANADIAN SYLLABICS NASKAPI CWAA
+14A1 CANADIAN SYLLABICS C
+14A2 CANADIAN SYLLABICS SAYISI TH
+14A3 CANADIAN SYLLABICS ME
+14A4 CANADIAN SYLLABICS MAAI
+14A5 CANADIAN SYLLABICS MI
+14A6 CANADIAN SYLLABICS MII
+14A7 CANADIAN SYLLABICS MO
+14A8 CANADIAN SYLLABICS MOO
+14A9 CANADIAN SYLLABICS Y-CREE MOO
+14AA CANADIAN SYLLABICS MA
+14AB CANADIAN SYLLABICS MAA
+14AC CANADIAN SYLLABICS MWE
+14AD CANADIAN SYLLABICS WEST-CREE MWE
+14AE CANADIAN SYLLABICS MWI
+14AF CANADIAN SYLLABICS WEST-CREE MWI
+14B0 CANADIAN SYLLABICS MWII
+14B1 CANADIAN SYLLABICS WEST-CREE MWII
+14B2 CANADIAN SYLLABICS MWO
+14B3 CANADIAN SYLLABICS WEST-CREE MWO
+14B4 CANADIAN SYLLABICS MWOO
+14B5 CANADIAN SYLLABICS WEST-CREE MWOO
+14B6 CANADIAN SYLLABICS MWA
+14B7 CANADIAN SYLLABICS WEST-CREE MWA
+14B8 CANADIAN SYLLABICS MWAA
+14B9 CANADIAN SYLLABICS WEST-CREE MWAA
+14BA CANADIAN SYLLABICS NASKAPI MWAA
+14BB CANADIAN SYLLABICS M
+14BC CANADIAN SYLLABICS WEST-CREE M
+14BD CANADIAN SYLLABICS MH
+14BE CANADIAN SYLLABICS ATHAPASCAN M
+14BF CANADIAN SYLLABICS SAYISI M
+14C0 CANADIAN SYLLABICS NE
+14C1 CANADIAN SYLLABICS NAAI
+14C2 CANADIAN SYLLABICS NI
+14C3 CANADIAN SYLLABICS NII
+14C4 CANADIAN SYLLABICS NO
+14C5 CANADIAN SYLLABICS NOO
+14C6 CANADIAN SYLLABICS Y-CREE NOO
+14C7 CANADIAN SYLLABICS NA
+14C8 CANADIAN SYLLABICS NAA
+14C9 CANADIAN SYLLABICS NWE
+14CA CANADIAN SYLLABICS WEST-CREE NWE
+14CB CANADIAN SYLLABICS NWA
+14CC CANADIAN SYLLABICS WEST-CREE NWA
+14CD CANADIAN SYLLABICS NWAA
+14CE CANADIAN SYLLABICS WEST-CREE NWAA
+14CF CANADIAN SYLLABICS NASKAPI NWAA
+14D0 CANADIAN SYLLABICS N
+14D1 CANADIAN SYLLABICS CARRIER NG
+14D2 CANADIAN SYLLABICS NH
+14D3 CANADIAN SYLLABICS LE
+14D4 CANADIAN SYLLABICS LAAI
+14D5 CANADIAN SYLLABICS LI
+14D6 CANADIAN SYLLABICS LII
+14D7 CANADIAN SYLLABICS LO
+14D8 CANADIAN SYLLABICS LOO
+14D9 CANADIAN SYLLABICS Y-CREE LOO
+14DA CANADIAN SYLLABICS LA
+14DB CANADIAN SYLLABICS LAA
+14DC CANADIAN SYLLABICS LWE
+14DD CANADIAN SYLLABICS WEST-CREE LWE
+14DE CANADIAN SYLLABICS LWI
+14DF CANADIAN SYLLABICS WEST-CREE LWI
+14E0 CANADIAN SYLLABICS LWII
+14E1 CANADIAN SYLLABICS WEST-CREE LWII
+14E2 CANADIAN SYLLABICS LWO
+14E3 CANADIAN SYLLABICS WEST-CREE LWO
+14E4 CANADIAN SYLLABICS LWOO
+14E5 CANADIAN SYLLABICS WEST-CREE LWOO
+14E6 CANADIAN SYLLABICS LWA
+14E7 CANADIAN SYLLABICS WEST-CREE LWA
+14E8 CANADIAN SYLLABICS LWAA
+14E9 CANADIAN SYLLABICS WEST-CREE LWAA
+14EA CANADIAN SYLLABICS L
+14EB CANADIAN SYLLABICS WEST-CREE L
+14EC CANADIAN SYLLABICS MEDIAL L
+14ED CANADIAN SYLLABICS SE
+14EE CANADIAN SYLLABICS SAAI
+14EF CANADIAN SYLLABICS SI
+14F0 CANADIAN SYLLABICS SII
+14F1 CANADIAN SYLLABICS SO
+14F2 CANADIAN SYLLABICS SOO
+14F3 CANADIAN SYLLABICS Y-CREE SOO
+14F4 CANADIAN SYLLABICS SA
+14F5 CANADIAN SYLLABICS SAA
+14F6 CANADIAN SYLLABICS SWE
+14F7 CANADIAN SYLLABICS WEST-CREE SWE
+14F8 CANADIAN SYLLABICS SWI
+14F9 CANADIAN SYLLABICS WEST-CREE SWI
+14FA CANADIAN SYLLABICS SWII
+14FB CANADIAN SYLLABICS WEST-CREE SWII
+14FC CANADIAN SYLLABICS SWO
+14FD CANADIAN SYLLABICS WEST-CREE SWO
+14FE CANADIAN SYLLABICS SWOO
+14FF CANADIAN SYLLABICS WEST-CREE SWOO
+1500 CANADIAN SYLLABICS SWA
+1501 CANADIAN SYLLABICS WEST-CREE SWA
+1502 CANADIAN SYLLABICS SWAA
+1503 CANADIAN SYLLABICS WEST-CREE SWAA
+1504 CANADIAN SYLLABICS NASKAPI SWAA
+1505 CANADIAN SYLLABICS S
+1506 CANADIAN SYLLABICS ATHAPASCAN S
+1507 CANADIAN SYLLABICS SW
+1508 CANADIAN SYLLABICS BLACKFOOT S
+1509 CANADIAN SYLLABICS MOOSE-CREE SK
+150A CANADIAN SYLLABICS NASKAPI SKW
+150B CANADIAN SYLLABICS NASKAPI S-W
+150C CANADIAN SYLLABICS NASKAPI SPWA
+150D CANADIAN SYLLABICS NASKAPI STWA
+150E CANADIAN SYLLABICS NASKAPI SKWA
+150F CANADIAN SYLLABICS NASKAPI SCWA
+1510 CANADIAN SYLLABICS SHE
+1511 CANADIAN SYLLABICS SHI
+1512 CANADIAN SYLLABICS SHII
+1513 CANADIAN SYLLABICS SHO
+1514 CANADIAN SYLLABICS SHOO
+1515 CANADIAN SYLLABICS SHA
+1516 CANADIAN SYLLABICS SHAA
+1517 CANADIAN SYLLABICS SHWE
+1518 CANADIAN SYLLABICS WEST-CREE SHWE
+1519 CANADIAN SYLLABICS SHWI
+151A CANADIAN SYLLABICS WEST-CREE SHWI
+151B CANADIAN SYLLABICS SHWII
+151C CANADIAN SYLLABICS WEST-CREE SHWII
+151D CANADIAN SYLLABICS SHWO
+151E CANADIAN SYLLABICS WEST-CREE SHWO
+151F CANADIAN SYLLABICS SHWOO
+1520 CANADIAN SYLLABICS WEST-CREE SHWOO
+1521 CANADIAN SYLLABICS SHWA
+1522 CANADIAN SYLLABICS WEST-CREE SHWA
+1523 CANADIAN SYLLABICS SHWAA
+1524 CANADIAN SYLLABICS WEST-CREE SHWAA
+1525 CANADIAN SYLLABICS SH
+1526 CANADIAN SYLLABICS YE
+1527 CANADIAN SYLLABICS YAAI
+1528 CANADIAN SYLLABICS YI
+1529 CANADIAN SYLLABICS YII
+152A CANADIAN SYLLABICS YO
+152B CANADIAN SYLLABICS YOO
+152C CANADIAN SYLLABICS Y-CREE YOO
+152D CANADIAN SYLLABICS YA
+152E CANADIAN SYLLABICS YAA
+152F CANADIAN SYLLABICS YWE
+1530 CANADIAN SYLLABICS WEST-CREE YWE
+1531 CANADIAN SYLLABICS YWI
+1532 CANADIAN SYLLABICS WEST-CREE YWI
+1533 CANADIAN SYLLABICS YWII
+1534 CANADIAN SYLLABICS WEST-CREE YWII
+1535 CANADIAN SYLLABICS YWO
+1536 CANADIAN SYLLABICS WEST-CREE YWO
+1537 CANADIAN SYLLABICS YWOO
+1538 CANADIAN SYLLABICS WEST-CREE YWOO
+1539 CANADIAN SYLLABICS YWA
+153A CANADIAN SYLLABICS WEST-CREE YWA
+153B CANADIAN SYLLABICS YWAA
+153C CANADIAN SYLLABICS WEST-CREE YWAA
+153D CANADIAN SYLLABICS NASKAPI YWAA
+153E CANADIAN SYLLABICS Y
+153F CANADIAN SYLLABICS BIBLE-CREE Y
+1540 CANADIAN SYLLABICS WEST-CREE Y
+1541 CANADIAN SYLLABICS SAYISI YI
+1542 CANADIAN SYLLABICS RE
+1543 CANADIAN SYLLABICS R-CREE RE
+1544 CANADIAN SYLLABICS WEST-CREE LE
+1545 CANADIAN SYLLABICS RAAI
+1546 CANADIAN SYLLABICS RI
+1547 CANADIAN SYLLABICS RII
+1548 CANADIAN SYLLABICS RO
+1549 CANADIAN SYLLABICS ROO
+154A CANADIAN SYLLABICS WEST-CREE LO
+154B CANADIAN SYLLABICS RA
+154C CANADIAN SYLLABICS RAA
+154D CANADIAN SYLLABICS WEST-CREE LA
+154E CANADIAN SYLLABICS RWAA
+154F CANADIAN SYLLABICS WEST-CREE RWAA
+1550 CANADIAN SYLLABICS R
+1551 CANADIAN SYLLABICS WEST-CREE R
+1552 CANADIAN SYLLABICS MEDIAL R
+1553 CANADIAN SYLLABICS FE
+1554 CANADIAN SYLLABICS FAAI
+1555 CANADIAN SYLLABICS FI
+1556 CANADIAN SYLLABICS FII
+1557 CANADIAN SYLLABICS FO
+1558 CANADIAN SYLLABICS FOO
+1559 CANADIAN SYLLABICS FA
+155A CANADIAN SYLLABICS FAA
+155B CANADIAN SYLLABICS FWAA
+155C CANADIAN SYLLABICS WEST-CREE FWAA
+155D CANADIAN SYLLABICS F
+155E CANADIAN SYLLABICS THE
+155F CANADIAN SYLLABICS N-CREE THE
+1560 CANADIAN SYLLABICS THI
+1561 CANADIAN SYLLABICS N-CREE THI
+1562 CANADIAN SYLLABICS THII
+1563 CANADIAN SYLLABICS N-CREE THII
+1564 CANADIAN SYLLABICS THO
+1565 CANADIAN SYLLABICS THOO
+1566 CANADIAN SYLLABICS THA
+1567 CANADIAN SYLLABICS THAA
+1568 CANADIAN SYLLABICS THWAA
+1569 CANADIAN SYLLABICS WEST-CREE THWAA
+156A CANADIAN SYLLABICS TH
+156B CANADIAN SYLLABICS TTHE
+156C CANADIAN SYLLABICS TTHI
+156D CANADIAN SYLLABICS TTHO
+156E CANADIAN SYLLABICS TTHA
+156F CANADIAN SYLLABICS TTH
+1570 CANADIAN SYLLABICS TYE
+1571 CANADIAN SYLLABICS TYI
+1572 CANADIAN SYLLABICS TYO
+1573 CANADIAN SYLLABICS TYA
+1574 CANADIAN SYLLABICS NUNAVIK HE
+1575 CANADIAN SYLLABICS NUNAVIK HI
+1576 CANADIAN SYLLABICS NUNAVIK HII
+1577 CANADIAN SYLLABICS NUNAVIK HO
+1578 CANADIAN SYLLABICS NUNAVIK HOO
+1579 CANADIAN SYLLABICS NUNAVIK HA
+157A CANADIAN SYLLABICS NUNAVIK HAA
+157B CANADIAN SYLLABICS NUNAVIK H
+157C CANADIAN SYLLABICS NUNAVUT H
+157D CANADIAN SYLLABICS HK
+157E CANADIAN SYLLABICS QAAI
+157F CANADIAN SYLLABICS QI
+1580 CANADIAN SYLLABICS QII
+1581 CANADIAN SYLLABICS QO
+1582 CANADIAN SYLLABICS QOO
+1583 CANADIAN SYLLABICS QA
+1584 CANADIAN SYLLABICS QAA
+1585 CANADIAN SYLLABICS Q
+1586 CANADIAN SYLLABICS TLHE
+1587 CANADIAN SYLLABICS TLHI
+1588 CANADIAN SYLLABICS TLHO
+1589 CANADIAN SYLLABICS TLHA
+158A CANADIAN SYLLABICS WEST-CREE RE
+158B CANADIAN SYLLABICS WEST-CREE RI
+158C CANADIAN SYLLABICS WEST-CREE RO
+158D CANADIAN SYLLABICS WEST-CREE RA
+158E CANADIAN SYLLABICS NGAAI
+158F CANADIAN SYLLABICS NGI
+1590 CANADIAN SYLLABICS NGII
+1591 CANADIAN SYLLABICS NGO
+1592 CANADIAN SYLLABICS NGOO
+1593 CANADIAN SYLLABICS NGA
+1594 CANADIAN SYLLABICS NGAA
+1595 CANADIAN SYLLABICS NG
+1596 CANADIAN SYLLABICS NNG
+1597 CANADIAN SYLLABICS SAYISI SHE
+1598 CANADIAN SYLLABICS SAYISI SHI
+1599 CANADIAN SYLLABICS SAYISI SHO
+159A CANADIAN SYLLABICS SAYISI SHA
+159B CANADIAN SYLLABICS WOODS-CREE THE
+159C CANADIAN SYLLABICS WOODS-CREE THI
+159D CANADIAN SYLLABICS WOODS-CREE THO
+159E CANADIAN SYLLABICS WOODS-CREE THA
+159F CANADIAN SYLLABICS WOODS-CREE TH
+15A0 CANADIAN SYLLABICS LHI
+15A1 CANADIAN SYLLABICS LHII
+15A2 CANADIAN SYLLABICS LHO
+15A3 CANADIAN SYLLABICS LHOO
+15A4 CANADIAN SYLLABICS LHA
+15A5 CANADIAN SYLLABICS LHAA
+15A6 CANADIAN SYLLABICS LH
+15A7 CANADIAN SYLLABICS TH-CREE THE
+15A8 CANADIAN SYLLABICS TH-CREE THI
+15A9 CANADIAN SYLLABICS TH-CREE THII
+15AA CANADIAN SYLLABICS TH-CREE THO
+15AB CANADIAN SYLLABICS TH-CREE THOO
+15AC CANADIAN SYLLABICS TH-CREE THA
+15AD CANADIAN SYLLABICS TH-CREE THAA
+15AE CANADIAN SYLLABICS TH-CREE TH
+15AF CANADIAN SYLLABICS AIVILIK B
+15B0 CANADIAN SYLLABICS BLACKFOOT E
+15B1 CANADIAN SYLLABICS BLACKFOOT I
+15B2 CANADIAN SYLLABICS BLACKFOOT O
+15B3 CANADIAN SYLLABICS BLACKFOOT A
+15B4 CANADIAN SYLLABICS BLACKFOOT WE
+15B5 CANADIAN SYLLABICS BLACKFOOT WI
+15B6 CANADIAN SYLLABICS BLACKFOOT WO
+15B7 CANADIAN SYLLABICS BLACKFOOT WA
+15B8 CANADIAN SYLLABICS BLACKFOOT NE
+15B9 CANADIAN SYLLABICS BLACKFOOT NI
+15BA CANADIAN SYLLABICS BLACKFOOT NO
+15BB CANADIAN SYLLABICS BLACKFOOT NA
+15BC CANADIAN SYLLABICS BLACKFOOT KE
+15BD CANADIAN SYLLABICS BLACKFOOT KI
+15BE CANADIAN SYLLABICS BLACKFOOT KO
+15BF CANADIAN SYLLABICS BLACKFOOT KA
+15C0 CANADIAN SYLLABICS SAYISI HE
+15C1 CANADIAN SYLLABICS SAYISI HI
+15C2 CANADIAN SYLLABICS SAYISI HO
+15C3 CANADIAN SYLLABICS SAYISI HA
+15C4 CANADIAN SYLLABICS CARRIER GHU
+15C5 CANADIAN SYLLABICS CARRIER GHO
+15C6 CANADIAN SYLLABICS CARRIER GHE
+15C7 CANADIAN SYLLABICS CARRIER GHEE
+15C8 CANADIAN SYLLABICS CARRIER GHI
+15C9 CANADIAN SYLLABICS CARRIER GHA
+15CA CANADIAN SYLLABICS CARRIER RU
+15CB CANADIAN SYLLABICS CARRIER RO
+15CC CANADIAN SYLLABICS CARRIER RE
+15CD CANADIAN SYLLABICS CARRIER REE
+15CE CANADIAN SYLLABICS CARRIER RI
+15CF CANADIAN SYLLABICS CARRIER RA
+15D0 CANADIAN SYLLABICS CARRIER WU
+15D1 CANADIAN SYLLABICS CARRIER WO
+15D2 CANADIAN SYLLABICS CARRIER WE
+15D3 CANADIAN SYLLABICS CARRIER WEE
+15D4 CANADIAN SYLLABICS CARRIER WI
+15D5 CANADIAN SYLLABICS CARRIER WA
+15D6 CANADIAN SYLLABICS CARRIER HWU
+15D7 CANADIAN SYLLABICS CARRIER HWO
+15D8 CANADIAN SYLLABICS CARRIER HWE
+15D9 CANADIAN SYLLABICS CARRIER HWEE
+15DA CANADIAN SYLLABICS CARRIER HWI
+15DB CANADIAN SYLLABICS CARRIER HWA
+15DC CANADIAN SYLLABICS CARRIER THU
+15DD CANADIAN SYLLABICS CARRIER THO
+15DE CANADIAN SYLLABICS CARRIER THE
+15DF CANADIAN SYLLABICS CARRIER THEE
+15E0 CANADIAN SYLLABICS CARRIER THI
+15E1 CANADIAN SYLLABICS CARRIER THA
+15E2 CANADIAN SYLLABICS CARRIER TTU
+15E3 CANADIAN SYLLABICS CARRIER TTO
+15E4 CANADIAN SYLLABICS CARRIER TTE
+15E5 CANADIAN SYLLABICS CARRIER TTEE
+15E6 CANADIAN SYLLABICS CARRIER TTI
+15E7 CANADIAN SYLLABICS CARRIER TTA
+15E8 CANADIAN SYLLABICS CARRIER PU
+15E9 CANADIAN SYLLABICS CARRIER PO
+15EA CANADIAN SYLLABICS CARRIER PE
+15EB CANADIAN SYLLABICS CARRIER PEE
+15EC CANADIAN SYLLABICS CARRIER PI
+15ED CANADIAN SYLLABICS CARRIER PA
+15EE CANADIAN SYLLABICS CARRIER P
+15EF CANADIAN SYLLABICS CARRIER GU
+15F0 CANADIAN SYLLABICS CARRIER GO
+15F1 CANADIAN SYLLABICS CARRIER GE
+15F2 CANADIAN SYLLABICS CARRIER GEE
+15F3 CANADIAN SYLLABICS CARRIER GI
+15F4 CANADIAN SYLLABICS CARRIER GA
+15F5 CANADIAN SYLLABICS CARRIER KHU
+15F6 CANADIAN SYLLABICS CARRIER KHO
+15F7 CANADIAN SYLLABICS CARRIER KHE
+15F8 CANADIAN SYLLABICS CARRIER KHEE
+15F9 CANADIAN SYLLABICS CARRIER KHI
+15FA CANADIAN SYLLABICS CARRIER KHA
+15FB CANADIAN SYLLABICS CARRIER KKU
+15FC CANADIAN SYLLABICS CARRIER KKO
+15FD CANADIAN SYLLABICS CARRIER KKE
+15FE CANADIAN SYLLABICS CARRIER KKEE
+15FF CANADIAN SYLLABICS CARRIER KKI
+1600 CANADIAN SYLLABICS CARRIER KKA
+1601 CANADIAN SYLLABICS CARRIER KK
+1602 CANADIAN SYLLABICS CARRIER NU
+1603 CANADIAN SYLLABICS CARRIER NO
+1604 CANADIAN SYLLABICS CARRIER NE
+1605 CANADIAN SYLLABICS CARRIER NEE
+1606 CANADIAN SYLLABICS CARRIER NI
+1607 CANADIAN SYLLABICS CARRIER NA
+1608 CANADIAN SYLLABICS CARRIER MU
+1609 CANADIAN SYLLABICS CARRIER MO
+160A CANADIAN SYLLABICS CARRIER ME
+160B CANADIAN SYLLABICS CARRIER MEE
+160C CANADIAN SYLLABICS CARRIER MI
+160D CANADIAN SYLLABICS CARRIER MA
+160E CANADIAN SYLLABICS CARRIER YU
+160F CANADIAN SYLLABICS CARRIER YO
+1610 CANADIAN SYLLABICS CARRIER YE
+1611 CANADIAN SYLLABICS CARRIER YEE
+1612 CANADIAN SYLLABICS CARRIER YI
+1613 CANADIAN SYLLABICS CARRIER YA
+1614 CANADIAN SYLLABICS CARRIER JU
+1615 CANADIAN SYLLABICS SAYISI JU
+1616 CANADIAN SYLLABICS CARRIER JO
+1617 CANADIAN SYLLABICS CARRIER JE
+1618 CANADIAN SYLLABICS CARRIER JEE
+1619 CANADIAN SYLLABICS CARRIER JI
+161A CANADIAN SYLLABICS SAYISI JI
+161B CANADIAN SYLLABICS CARRIER JA
+161C CANADIAN SYLLABICS CARRIER JJU
+161D CANADIAN SYLLABICS CARRIER JJO
+161E CANADIAN SYLLABICS CARRIER JJE
+161F CANADIAN SYLLABICS CARRIER JJEE
+1620 CANADIAN SYLLABICS CARRIER JJI
+1621 CANADIAN SYLLABICS CARRIER JJA
+1622 CANADIAN SYLLABICS CARRIER LU
+1623 CANADIAN SYLLABICS CARRIER LO
+1624 CANADIAN SYLLABICS CARRIER LE
+1625 CANADIAN SYLLABICS CARRIER LEE
+1626 CANADIAN SYLLABICS CARRIER LI
+1627 CANADIAN SYLLABICS CARRIER LA
+1628 CANADIAN SYLLABICS CARRIER DLU
+1629 CANADIAN SYLLABICS CARRIER DLO
+162A CANADIAN SYLLABICS CARRIER DLE
+162B CANADIAN SYLLABICS CARRIER DLEE
+162C CANADIAN SYLLABICS CARRIER DLI
+162D CANADIAN SYLLABICS CARRIER DLA
+162E CANADIAN SYLLABICS CARRIER LHU
+162F CANADIAN SYLLABICS CARRIER LHO
+1630 CANADIAN SYLLABICS CARRIER LHE
+1631 CANADIAN SYLLABICS CARRIER LHEE
+1632 CANADIAN SYLLABICS CARRIER LHI
+1633 CANADIAN SYLLABICS CARRIER LHA
+1634 CANADIAN SYLLABICS CARRIER TLHU
+1635 CANADIAN SYLLABICS CARRIER TLHO
+1636 CANADIAN SYLLABICS CARRIER TLHE
+1637 CANADIAN SYLLABICS CARRIER TLHEE
+1638 CANADIAN SYLLABICS CARRIER TLHI
+1639 CANADIAN SYLLABICS CARRIER TLHA
+163A CANADIAN SYLLABICS CARRIER TLU
+163B CANADIAN SYLLABICS CARRIER TLO
+163C CANADIAN SYLLABICS CARRIER TLE
+163D CANADIAN SYLLABICS CARRIER TLEE
+163E CANADIAN SYLLABICS CARRIER TLI
+163F CANADIAN SYLLABICS CARRIER TLA
+1640 CANADIAN SYLLABICS CARRIER ZU
+1641 CANADIAN SYLLABICS CARRIER ZO
+1642 CANADIAN SYLLABICS CARRIER ZE
+1643 CANADIAN SYLLABICS CARRIER ZEE
+1644 CANADIAN SYLLABICS CARRIER ZI
+1645 CANADIAN SYLLABICS CARRIER ZA
+1646 CANADIAN SYLLABICS CARRIER Z
+1647 CANADIAN SYLLABICS CARRIER INITIAL Z
+1648 CANADIAN SYLLABICS CARRIER DZU
+1649 CANADIAN SYLLABICS CARRIER DZO
+164A CANADIAN SYLLABICS CARRIER DZE
+164B CANADIAN SYLLABICS CARRIER DZEE
+164C CANADIAN SYLLABICS CARRIER DZI
+164D CANADIAN SYLLABICS CARRIER DZA
+164E CANADIAN SYLLABICS CARRIER SU
+164F CANADIAN SYLLABICS CARRIER SO
+1650 CANADIAN SYLLABICS CARRIER SE
+1651 CANADIAN SYLLABICS CARRIER SEE
+1652 CANADIAN SYLLABICS CARRIER SI
+1653 CANADIAN SYLLABICS CARRIER SA
+1654 CANADIAN SYLLABICS CARRIER SHU
+1655 CANADIAN SYLLABICS CARRIER SHO
+1656 CANADIAN SYLLABICS CARRIER SHE
+1657 CANADIAN SYLLABICS CARRIER SHEE
+1658 CANADIAN SYLLABICS CARRIER SHI
+1659 CANADIAN SYLLABICS CARRIER SHA
+165A CANADIAN SYLLABICS CARRIER SH
+165B CANADIAN SYLLABICS CARRIER TSU
+165C CANADIAN SYLLABICS CARRIER TSO
+165D CANADIAN SYLLABICS CARRIER TSE
+165E CANADIAN SYLLABICS CARRIER TSEE
+165F CANADIAN SYLLABICS CARRIER TSI
+1660 CANADIAN SYLLABICS CARRIER TSA
+1661 CANADIAN SYLLABICS CARRIER CHU
+1662 CANADIAN SYLLABICS CARRIER CHO
+1663 CANADIAN SYLLABICS CARRIER CHE
+1664 CANADIAN SYLLABICS CARRIER CHEE
+1665 CANADIAN SYLLABICS CARRIER CHI
+1666 CANADIAN SYLLABICS CARRIER CHA
+1667 CANADIAN SYLLABICS CARRIER TTSU
+1668 CANADIAN SYLLABICS CARRIER TTSO
+1669 CANADIAN SYLLABICS CARRIER TTSE
+166A CANADIAN SYLLABICS CARRIER TTSEE
+166B CANADIAN SYLLABICS CARRIER TTSI
+166C CANADIAN SYLLABICS CARRIER TTSA
+@ Punctuation
+166D CANADIAN SYLLABICS CHI SIGN
+166E CANADIAN SYLLABICS FULL STOP
+@ Syllables
+166F CANADIAN SYLLABICS QAI
+1670 CANADIAN SYLLABICS NGAI
+1671 CANADIAN SYLLABICS NNGI
+1672 CANADIAN SYLLABICS NNGII
+1673 CANADIAN SYLLABICS NNGO
+1674 CANADIAN SYLLABICS NNGOO
+1675 CANADIAN SYLLABICS NNGA
+1676 CANADIAN SYLLABICS NNGAA
+@@ 1680 Ogham 169F
+@ Punctuation
+1680 OGHAM SPACE MARK
+ * glyph is blank in "stemless" style fonts
+@ Traditional letters
+1681 OGHAM LETTER BEITH
+1682 OGHAM LETTER LUIS
+1683 OGHAM LETTER FEARN
+1684 OGHAM LETTER SAIL
+1685 OGHAM LETTER NION
+1686 OGHAM LETTER UATH
+1687 OGHAM LETTER DAIR
+1688 OGHAM LETTER TINNE
+1689 OGHAM LETTER COLL
+168A OGHAM LETTER CEIRT
+168B OGHAM LETTER MUIN
+168C OGHAM LETTER GORT
+168D OGHAM LETTER NGEADAL
+168E OGHAM LETTER STRAIF
+168F OGHAM LETTER RUIS
+1690 OGHAM LETTER AILM
+1691 OGHAM LETTER ONN
+1692 OGHAM LETTER UR
+1693 OGHAM LETTER EADHADH
+1694 OGHAM LETTER IODHADH
+@ Forfeda (supplementary letters)
+1695 OGHAM LETTER EABHADH
+1696 OGHAM LETTER OR
+1697 OGHAM LETTER UILLEANN
+1698 OGHAM LETTER IFIN
+1699 OGHAM LETTER EAMHANCHOLL
+169A OGHAM LETTER PEITH
+@ Punctuation
+169B OGHAM FEATHER MARK
+ * marks beginning of Ogham text
+169C OGHAM REVERSED FEATHER MARK
+ * marks end of Ogham text
+@@ 16A0 Runic 16FF
+@ Letters
+16A0 RUNIC LETTER FEHU FEOH FE F
+16A1 RUNIC LETTER V
+16A2 RUNIC LETTER URUZ UR U
+16A3 RUNIC LETTER YR
+16A4 RUNIC LETTER Y
+16A5 RUNIC LETTER W
+16A6 RUNIC LETTER THURISAZ THURS THORN
+ x (latin small letter thorn - 00FE)
+16A7 RUNIC LETTER ETH
+16A8 RUNIC LETTER ANSUZ A
+16A9 RUNIC LETTER OS O
+16AA RUNIC LETTER AC A
+16AB RUNIC LETTER AESC
+16AC RUNIC LETTER LONG-BRANCH-OSS O
+16AD RUNIC LETTER SHORT-TWIG-OSS O
+16AE RUNIC LETTER O
+16AF RUNIC LETTER OE
+16B0 RUNIC LETTER ON
+16B1 RUNIC LETTER RAIDO RAD REID R
+16B2 RUNIC LETTER KAUNA
+16B3 RUNIC LETTER CEN
+16B4 RUNIC LETTER KAUN K
+16B5 RUNIC LETTER G
+16B6 RUNIC LETTER ENG
+16B7 RUNIC LETTER GEBO GYFU G
+16B8 RUNIC LETTER GAR
+16B9 RUNIC LETTER WUNJO WYNN W
+ x (latin letter wynn - 01BF)
+16BA RUNIC LETTER HAGLAZ H
+16BB RUNIC LETTER HAEGL H
+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+16C0 RUNIC LETTER DOTTED-N
+16C1 RUNIC LETTER ISAZ IS ISS I
+16C2 RUNIC LETTER E
+16C3 RUNIC LETTER JERAN J
+16C4 RUNIC LETTER GER
+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+16C6 RUNIC LETTER SHORT-TWIG-AR A
+16C7 RUNIC LETTER IWAZ EOH
+16C8 RUNIC LETTER PERTHO PEORTH P
+16C9 RUNIC LETTER ALGIZ EOLHX
+16CA RUNIC LETTER SOWILO S
+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16CC RUNIC LETTER SHORT-TWIG-SOL S
+16CD RUNIC LETTER C
+16CE RUNIC LETTER Z
+16CF RUNIC LETTER TIWAZ TIR TYR T
+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+16D1 RUNIC LETTER D
+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4 RUNIC LETTER DOTTED-P
+16D5 RUNIC LETTER OPEN-P
+16D6 RUNIC LETTER EHWAZ EH E
+16D7 RUNIC LETTER MANNAZ MAN M
+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB RUNIC LETTER DOTTED-L
+16DC RUNIC LETTER INGWAZ
+16DD RUNIC LETTER ING
+16DE RUNIC LETTER DAGAZ DAEG D
+16DF RUNIC LETTER OTHALAN ETHEL O
+16E0 RUNIC LETTER EAR
+16E1 RUNIC LETTER IOR
+16E2 RUNIC LETTER CWEORTH
+16E3 RUNIC LETTER CALC
+16E4 RUNIC LETTER CEALC
+16E5 RUNIC LETTER STAN
+16E6 RUNIC LETTER LONG-BRANCH-YR
+16E7 RUNIC LETTER SHORT-TWIG-YR
+16E8 RUNIC LETTER ICELANDIC-YR
+16E9 RUNIC LETTER Q
+16EA RUNIC LETTER X
+@ Punctuation
+16EB RUNIC SINGLE PUNCTUATION
+16EC RUNIC MULTIPLE PUNCTUATION
+16ED RUNIC CROSS PUNCTUATION
+@ Golden number runes
+16EE RUNIC ARLAUG SYMBOL (golden number 17)
+ * golden number 17
+16EF RUNIC TVIMADUR SYMBOL (golden number 18)
+ * golden number 18
+16F0 RUNIC BELGTHOR SYMBOL (golden number 19)
+ * golden number 19
+@@ 1780 Khmer 17FF
+@ Consonants
+1780 KHMER LETTER KA
+1781 KHMER LETTER KHA
+1782 KHMER LETTER KO
+1783 KHMER LETTER KHO
+1784 KHMER LETTER NGO
+1785 KHMER LETTER CA
+1786 KHMER LETTER CHA
+1787 KHMER LETTER CO
+1788 KHMER LETTER CHO
+1789 KHMER LETTER NYO
+178A KHMER LETTER DA
+178B KHMER LETTER TTHA
+178C KHMER LETTER DO
+178D KHMER LETTER TTHO
+178E KHMER LETTER NNO
+178F KHMER LETTER TA
+1790 KHMER LETTER THA
+1791 KHMER LETTER TO
+1792 KHMER LETTER THO
+1793 KHMER LETTER NO
+1794 KHMER LETTER BA
+1795 KHMER LETTER PHA
+1796 KHMER LETTER PO
+1797 KHMER LETTER PHO
+1798 KHMER LETTER MO
+1799 KHMER LETTER YO
+179A KHMER LETTER RO
+179B KHMER LETTER LO
+179C KHMER LETTER VO
+179D KHMER LETTER SHA
+ * used only for Pali/Sanskrit transliteration
+179E KHMER LETTER SSO
+ * used only for Pali/Sanskrit transliteration
+179F KHMER LETTER SA
+17A0 KHMER LETTER HA
+17A1 KHMER LETTER LA
+17A2 KHMER LETTER QA
+ * glottal stop
+@ Independent vowels
+17A3 KHMER INDEPENDENT VOWEL QAQ
+ * used only for Pali/Sanskrit transliteration
+17A4 KHMER INDEPENDENT VOWEL QAA
+ * used only for Pali/Sanskrit transliteration
+17A5 KHMER INDEPENDENT VOWEL QI
+17A6 KHMER INDEPENDENT VOWEL QII
+17A7 KHMER INDEPENDENT VOWEL QU
+17A8 KHMER INDEPENDENT VOWEL QUK
+ * obsolete
+17A9 KHMER INDEPENDENT VOWEL QUU
+17AA KHMER INDEPENDENT VOWEL QUUV
+17AB KHMER INDEPENDENT VOWEL RY
+17AC KHMER INDEPENDENT VOWEL RYY
+17AD KHMER INDEPENDENT VOWEL LY
+17AE KHMER INDEPENDENT VOWEL LYY
+17AF KHMER INDEPENDENT VOWEL QE
+17B0 KHMER INDEPENDENT VOWEL QAI
+17B1 KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2 KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3 KHMER INDEPENDENT VOWEL QAU
+@ Inherent vowels
+@+ These are for phonetic transcription to distinguish Indic language inherent vowels from Khmer inherent vowels.
+17B4 KHMER VOWEL INHERENT AQ
+17B5 KHMER VOWEL INHERENT AA
+@ Dependent vowel signs
+17B6 KHMER VOWEL SIGN AA
+17B7 KHMER VOWEL SIGN I
+17B8 KHMER VOWEL SIGN II
+17B9 KHMER VOWEL SIGN Y
+17BA KHMER VOWEL SIGN YY
+17BB KHMER VOWEL SIGN U
+17BC KHMER VOWEL SIGN UU
+17BD KHMER VOWEL SIGN UA
+17BE KHMER VOWEL SIGN OE
+17BF KHMER VOWEL SIGN YA
+17C0 KHMER VOWEL SIGN IE
+17C1 KHMER VOWEL SIGN E
+17C2 KHMER VOWEL SIGN AE
+17C3 KHMER VOWEL SIGN AI
+17C4 KHMER VOWEL SIGN OO
+17C5 KHMER VOWEL SIGN AU
+@ Various signs
+17C6 KHMER SIGN NIKAHIT
+ = anusvara
+ * final nasalization
+ x (thai character nikhahit - 0E4D)
+ x (myanmar sign anusvara - 1036)
+17C7 KHMER SIGN REAHMUK
+ = visarga
+ x (myanmar sign visarga - 1038)
+17C8 KHMER SIGN YUUKALEAPINTU
+ * inserts a short inherent vowel with abrupt glottal stop
+@ Consonant shifters
+@+ These signs shift the base consonant between registers.
+17C9 KHMER SIGN MUUSIKATOAN
+ * change second register to first
+17CA KHMER SIGN TRIISAP
+ * change first register to second
+@ Various signs
+17CB KHMER SIGN BANTOC
+ * shortens preceding vowel
+17CC KHMER SIGN ROBAT
+ * corresponds to initial r in Indian loan words, but treated as a diacritic
+17CD KHMER SIGN TOANDAKHIAT
+ * marks character not to be pronounced
+17CE KHMER SIGN KAKABAT
+ * sign used with some exclamations
+17CF KHMER SIGN AHSDA
+ * conjoined sign used in spelling of two single-consonant words
+17D0 KHMER SIGN SAMYOK SANNYA
+ * used with 17A4 to indicate shortened inherent vowel
+17D1 KHMER SIGN VIRIAM
+ * mostly obsolete
+ * indicates the base character is part of the previous word
+17D2 KHMER SIGN COENG
+ * functions as virama
+ * shape shown is arbitrary and not rendered
+17D3 KHMER SIGN BATHAMASAT
+ * very rare sign used in historic lunar dates
+17D4 KHMER SIGN KHAN
+ * functions as full stop, ellipsis, abbreviation
+ x (thai character paiyannoi - 0E2F)
+ x (thai character angkhankhu - 0E5A)
+ x (myanmar sign little section - 104A)
+17D5 KHMER SIGN BARIYOOSAN
+ * end of section
+ x (myanmar sign section - 104B)
+17D6 KHMER SIGN CAMNUC PII KUUH
+ * functions as colon or semicolon
+ x (division sign - 00F7)
+ x (tibetan mark gter tsheg - 0F14)
+17D7 KHMER SIGN LEK TOO
+ * repetition sign
+17D8 KHMER SIGN BEYYAL
+ * et cetera
+17D9 KHMER SIGN PHNAEK MUAN
+ * a list bullet
+ x (thai character fongman - 0E4F)
+17DA KHMER SIGN KOOMUUT
+ * indicates end of book or treatise
+ x (thai character khomut - 0E5B)
+@ Currency symbol
+17DB KHMER CURRENCY SYMBOL RIEL
+@ Sign
+17DC KHMER SIGN AVAKRAHASANYA
+ * rare, shows a deleted Sanskrit vowel, like an apostrophe
+@ Digits
+17E0 KHMER DIGIT ZERO
+17E1 KHMER DIGIT ONE
+17E2 KHMER DIGIT TWO
+17E3 KHMER DIGIT THREE
+17E4 KHMER DIGIT FOUR
+17E5 KHMER DIGIT FIVE
+17E6 KHMER DIGIT SIX
+17E7 KHMER DIGIT SEVEN
+17E8 KHMER DIGIT EIGHT
+17E9 KHMER DIGIT NINE
+@@ 1800 Mongolian 18AF
+@ Punctuation
+1800 MONGOLIAN BIRGA
+ x (tibetan mark initial yig mgo mdun ma - 0F04)
+1801 MONGOLIAN ELLIPSIS
+1802 MONGOLIAN COMMA
+1803 MONGOLIAN FULL STOP
+1804 MONGOLIAN COLON
+1805 MONGOLIAN FOUR DOTS
+ * marks the end of a chapter
+1806 MONGOLIAN TODO SOFT HYPHEN
+1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808 MONGOLIAN MANCHU COMMA
+1809 MONGOLIAN MANCHU FULL STOP
+180A MONGOLIAN NIRUGU
+@ Format controls
+180B MONGOLIAN FREE VARIATION SELECTOR ONE
+180C MONGOLIAN FREE VARIATION SELECTOR TWO
+180D MONGOLIAN FREE VARIATION SELECTOR THREE
+180E MONGOLIAN VOWEL SEPARATOR
+@ Digits
+1810 MONGOLIAN DIGIT ZERO
+1811 MONGOLIAN DIGIT ONE
+1812 MONGOLIAN DIGIT TWO
+1813 MONGOLIAN DIGIT THREE
+1814 MONGOLIAN DIGIT FOUR
+1815 MONGOLIAN DIGIT FIVE
+1816 MONGOLIAN DIGIT SIX
+1817 MONGOLIAN DIGIT SEVEN
+1818 MONGOLIAN DIGIT EIGHT
+1819 MONGOLIAN DIGIT NINE
+@ Basic letters
+1820 MONGOLIAN LETTER A
+ x (cyrillic small letter a - 0430)
+1821 MONGOLIAN LETTER E
+ x (cyrillic small letter e - 044D)
+1822 MONGOLIAN LETTER I
+ x (cyrillic small letter i - 0438)
+1823 MONGOLIAN LETTER O
+ x (cyrillic small letter o - 043E)
+1824 MONGOLIAN LETTER U
+ x (cyrillic small letter u - 0443)
+1825 MONGOLIAN LETTER OE
+ x (cyrillic small letter barred o - 04E9)
+1826 MONGOLIAN LETTER UE
+ x (cyrillic small letter straight u - 04AF)
+1827 MONGOLIAN LETTER EE
+1828 MONGOLIAN LETTER NA
+ x (cyrillic small letter en - 043D)
+1829 MONGOLIAN LETTER ANG
+182A MONGOLIAN LETTER BA
+ x (cyrillic small letter be - 0431)
+182B MONGOLIAN LETTER PA
+ x (cyrillic small letter pe - 043F)
+182C MONGOLIAN LETTER QA
+ x (cyrillic small letter ha - 0445)
+182D MONGOLIAN LETTER GA
+ x (cyrillic small letter ghe - 0433)
+182E MONGOLIAN LETTER MA
+ x (cyrillic small letter em - 043C)
+182F MONGOLIAN LETTER LA
+ x (cyrillic small letter el - 043B)
+1830 MONGOLIAN LETTER SA
+ x (cyrillic small letter es - 0441)
+1831 MONGOLIAN LETTER SHA
+ x (cyrillic small letter sha - 0448)
+1832 MONGOLIAN LETTER TA
+ x (cyrillic small letter te - 0442)
+1833 MONGOLIAN LETTER DA
+ x (cyrillic small letter de - 0434)
+1834 MONGOLIAN LETTER CHA
+ x (cyrillic small letter che - 0447)
+1835 MONGOLIAN LETTER JA
+ x (cyrillic small letter zhe - 0436)
+1836 MONGOLIAN LETTER YA
+ x (cyrillic small letter short i - 0439)
+1837 MONGOLIAN LETTER RA
+ x (cyrillic small letter er - 0440)
+1838 MONGOLIAN LETTER WA
+ x (cyrillic small letter ve - 0432)
+1839 MONGOLIAN LETTER FA
+ x (cyrillic small letter ef - 0444)
+183A MONGOLIAN LETTER KA
+ x (cyrillic small letter ha - 0445)
+183B MONGOLIAN LETTER KHA
+ x (cyrillic small letter ka - 043A)
+183C MONGOLIAN LETTER TSA
+ x (cyrillic small letter tse - 0446)
+183D MONGOLIAN LETTER ZA
+ x (cyrillic small letter ze - 0437)
+183E MONGOLIAN LETTER HAA
+ x (cyrillic small letter ha - 0445)
+183F MONGOLIAN LETTER ZRA
+ x (cyrillic small letter zhe - 0436)
+1840 MONGOLIAN LETTER LHA
+1841 MONGOLIAN LETTER ZHI
+1842 MONGOLIAN LETTER CHI
+@ Todo letters
+1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844 MONGOLIAN LETTER TODO E
+1845 MONGOLIAN LETTER TODO I
+1846 MONGOLIAN LETTER TODO O
+1847 MONGOLIAN LETTER TODO U
+1848 MONGOLIAN LETTER TODO OE
+1849 MONGOLIAN LETTER TODO UE
+184A MONGOLIAN LETTER TODO ANG
+184B MONGOLIAN LETTER TODO BA
+184C MONGOLIAN LETTER TODO PA
+184D MONGOLIAN LETTER TODO QA
+184E MONGOLIAN LETTER TODO GA
+184F MONGOLIAN LETTER TODO MA
+1850 MONGOLIAN LETTER TODO TA
+1851 MONGOLIAN LETTER TODO DA
+1852 MONGOLIAN LETTER TODO CHA
+1853 MONGOLIAN LETTER TODO JA
+1854 MONGOLIAN LETTER TODO TSA
+1855 MONGOLIAN LETTER TODO YA
+1856 MONGOLIAN LETTER TODO WA
+1857 MONGOLIAN LETTER TODO KA
+1858 MONGOLIAN LETTER TODO GAA
+1859 MONGOLIAN LETTER TODO HAA
+185A MONGOLIAN LETTER TODO JIA
+185B MONGOLIAN LETTER TODO NIA
+185C MONGOLIAN LETTER TODO DZA
+@ Sibe letters
+185D MONGOLIAN LETTER SIBE E
+185E MONGOLIAN LETTER SIBE I
+185F MONGOLIAN LETTER SIBE IY
+1860 MONGOLIAN LETTER SIBE UE
+1861 MONGOLIAN LETTER SIBE U
+1862 MONGOLIAN LETTER SIBE ANG
+1863 MONGOLIAN LETTER SIBE KA
+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
+1869 MONGOLIAN LETTER SIBE DA
+186A MONGOLIAN LETTER SIBE JA
+186B MONGOLIAN LETTER SIBE FA
+186C MONGOLIAN LETTER SIBE GAA
+186D MONGOLIAN LETTER SIBE HAA
+186E MONGOLIAN LETTER SIBE TSA
+186F MONGOLIAN LETTER SIBE ZA
+1870 MONGOLIAN LETTER SIBE RAA
+1871 MONGOLIAN LETTER SIBE CHA
+1872 MONGOLIAN LETTER SIBE ZHA
+@ Manchu letters
+1873 MONGOLIAN LETTER MANCHU I
+1874 MONGOLIAN LETTER MANCHU KA
+1875 MONGOLIAN LETTER MANCHU RA
+1876 MONGOLIAN LETTER MANCHU FA
+1877 MONGOLIAN LETTER MANCHU ZHA
+@ Extensions for Sanskrit and Tibetan
+1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882 MONGOLIAN LETTER ALI GALI DAMARU
+1883 MONGOLIAN LETTER ALI GALI UBADAMA
+1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885 MONGOLIAN LETTER ALI GALI BALUDA
+1886 MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887 MONGOLIAN LETTER ALI GALI A
+1888 MONGOLIAN LETTER ALI GALI I
+1889 MONGOLIAN LETTER ALI GALI KA
+188A MONGOLIAN LETTER ALI GALI NGA
+188B MONGOLIAN LETTER ALI GALI CA
+188C MONGOLIAN LETTER ALI GALI TTA
+188D MONGOLIAN LETTER ALI GALI TTHA
+188E MONGOLIAN LETTER ALI GALI DDA
+188F MONGOLIAN LETTER ALI GALI NNA
+1890 MONGOLIAN LETTER ALI GALI TA
+1891 MONGOLIAN LETTER ALI GALI DA
+1892 MONGOLIAN LETTER ALI GALI PA
+1893 MONGOLIAN LETTER ALI GALI PHA
+1894 MONGOLIAN LETTER ALI GALI SSA
+1895 MONGOLIAN LETTER ALI GALI ZHA
+1896 MONGOLIAN LETTER ALI GALI ZA
+1897 MONGOLIAN LETTER ALI GALI AH
+1898 MONGOLIAN LETTER TODO ALI GALI TA
+1899 MONGOLIAN LETTER TODO ALI GALI ZHA
+189A MONGOLIAN LETTER MANCHU ALI GALI GHA
+189B MONGOLIAN LETTER MANCHU ALI GALI NGA
+189C MONGOLIAN LETTER MANCHU ALI GALI CA
+189D MONGOLIAN LETTER MANCHU ALI GALI JHA
+189E MONGOLIAN LETTER MANCHU ALI GALI TTA
+189F MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18A0 MONGOLIAN LETTER MANCHU ALI GALI TA
+18A1 MONGOLIAN LETTER MANCHU ALI GALI DHA
+18A2 MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A3 MONGOLIAN LETTER MANCHU ALI GALI CYA
+18A4 MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5 MONGOLIAN LETTER MANCHU ALI GALI ZA
+18A6 MONGOLIAN LETTER ALI GALI HALF U
+18A7 MONGOLIAN LETTER ALI GALI HALF YA
+18A8 MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9 MONGOLIAN LETTER ALI GALI DAGALGA
+@@ 1E00 Latin Extended Additional 1EFF
+@ Latin general use extensions
+1E00 LATIN CAPITAL LETTER A WITH RING BELOW
+ : 0041 0325
+1E01 LATIN SMALL LETTER A WITH RING BELOW
+ : 0061 0325
+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE
+ : 0042 0307
+1E03 LATIN SMALL LETTER B WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0062 0307
+1E04 LATIN CAPITAL LETTER B WITH DOT BELOW
+ : 0042 0323
+1E05 LATIN SMALL LETTER B WITH DOT BELOW
+ : 0062 0323
+1E06 LATIN CAPITAL LETTER B WITH LINE BELOW
+ : 0042 0331
+1E07 LATIN SMALL LETTER B WITH LINE BELOW
+ : 0062 0331
+1E08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ : 00C7 0301
+1E09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+ : 00E7 0301
+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE
+ : 0044 0307
+1E0B LATIN SMALL LETTER D WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0064 0307
+1E0C LATIN CAPITAL LETTER D WITH DOT BELOW
+ : 0044 0323
+1E0D LATIN SMALL LETTER D WITH DOT BELOW
+ * Indic transliteration
+ : 0064 0323
+1E0E LATIN CAPITAL LETTER D WITH LINE BELOW
+ : 0044 0331
+1E0F LATIN SMALL LETTER D WITH LINE BELOW
+ : 0064 0331
+1E10 LATIN CAPITAL LETTER D WITH CEDILLA
+ : 0044 0327
+1E11 LATIN SMALL LETTER D WITH CEDILLA
+ * Livonian
+ : 0064 0327
+1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ : 0044 032D
+1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+ : 0064 032D
+1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ : 0112 0300
+1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE
+ : 0113 0300
+1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ : 0112 0301
+1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE
+ : 0113 0301
+1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ : 0045 032D
+1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+ : 0065 032D
+1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW
+ : 0045 0330
+1E1B LATIN SMALL LETTER E WITH TILDE BELOW
+ : 0065 0330
+1E1C LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ : 0228 0306
+1E1D LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+ : 0229 0306
+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE
+ : 0046 0307
+1E1F LATIN SMALL LETTER F WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0066 0307
+1E20 LATIN CAPITAL LETTER G WITH MACRON
+ : 0047 0304
+1E21 LATIN SMALL LETTER G WITH MACRON
+ : 0067 0304
+1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE
+ : 0048 0307
+1E23 LATIN SMALL LETTER H WITH DOT ABOVE
+ : 0068 0307
+1E24 LATIN CAPITAL LETTER H WITH DOT BELOW
+ : 0048 0323
+1E25 LATIN SMALL LETTER H WITH DOT BELOW
+ * Indic transliteration
+ : 0068 0323
+1E26 LATIN CAPITAL LETTER H WITH DIAERESIS
+ : 0048 0308
+1E27 LATIN SMALL LETTER H WITH DIAERESIS
+ : 0068 0308
+1E28 LATIN CAPITAL LETTER H WITH CEDILLA
+ : 0048 0327
+1E29 LATIN SMALL LETTER H WITH CEDILLA
+ : 0068 0327
+1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW
+ : 0048 032E
+1E2B LATIN SMALL LETTER H WITH BREVE BELOW
+ * Semitic transliteration
+ : 0068 032E
+1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW
+ : 0049 0330
+1E2D LATIN SMALL LETTER I WITH TILDE BELOW
+ : 0069 0330
+1E2E LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ : 00CF 0301
+1E2F LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+ : 00EF 0301
+1E30 LATIN CAPITAL LETTER K WITH ACUTE
+ : 004B 0301
+1E31 LATIN SMALL LETTER K WITH ACUTE
+ : 006B 0301
+1E32 LATIN CAPITAL LETTER K WITH DOT BELOW
+ : 004B 0323
+1E33 LATIN SMALL LETTER K WITH DOT BELOW
+ : 006B 0323
+1E34 LATIN CAPITAL LETTER K WITH LINE BELOW
+ : 004B 0331
+1E35 LATIN SMALL LETTER K WITH LINE BELOW
+ : 006B 0331
+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW
+ : 004C 0323
+1E37 LATIN SMALL LETTER L WITH DOT BELOW
+ * Indic transliteration
+ : 006C 0323
+1E38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ : 1E36 0304
+1E39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+ * Indic transliteration
+ : 1E37 0304
+1E3A LATIN CAPITAL LETTER L WITH LINE BELOW
+ : 004C 0331
+1E3B LATIN SMALL LETTER L WITH LINE BELOW
+ * Indic transliteration
+ : 006C 0331
+1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ : 004C 032D
+1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+ : 006C 032D
+1E3E LATIN CAPITAL LETTER M WITH ACUTE
+ : 004D 0301
+1E3F LATIN SMALL LETTER M WITH ACUTE
+ : 006D 0301
+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE
+ : 004D 0307
+1E41 LATIN SMALL LETTER M WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 006D 0307
+1E42 LATIN CAPITAL LETTER M WITH DOT BELOW
+ : 004D 0323
+1E43 LATIN SMALL LETTER M WITH DOT BELOW
+ * Indic transliteration
+ : 006D 0323
+1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE
+ : 004E 0307
+1E45 LATIN SMALL LETTER N WITH DOT ABOVE
+ * Indic transliteration
+ : 006E 0307
+1E46 LATIN CAPITAL LETTER N WITH DOT BELOW
+ : 004E 0323
+1E47 LATIN SMALL LETTER N WITH DOT BELOW
+ * Indic transliteration
+ : 006E 0323
+1E48 LATIN CAPITAL LETTER N WITH LINE BELOW
+ : 004E 0331
+1E49 LATIN SMALL LETTER N WITH LINE BELOW
+ * Indic transliteration
+ : 006E 0331
+1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ : 004E 032D
+1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+ : 006E 032D
+1E4C LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ : 00D5 0301
+1E4D LATIN SMALL LETTER O WITH TILDE AND ACUTE
+ : 00F5 0301
+1E4E LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ : 00D5 0308
+1E4F LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+ : 00F5 0308
+1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ : 014C 0300
+1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE
+ : 014D 0300
+1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ : 014C 0301
+1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE
+ : 014D 0301
+1E54 LATIN CAPITAL LETTER P WITH ACUTE
+ : 0050 0301
+1E55 LATIN SMALL LETTER P WITH ACUTE
+ : 0070 0301
+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE
+ : 0050 0307
+1E57 LATIN SMALL LETTER P WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0070 0307
+1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE
+ : 0052 0307
+1E59 LATIN SMALL LETTER R WITH DOT ABOVE
+ : 0072 0307
+1E5A LATIN CAPITAL LETTER R WITH DOT BELOW
+ : 0052 0323
+1E5B LATIN SMALL LETTER R WITH DOT BELOW
+ * Indic transliteration
+ : 0072 0323
+1E5C LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ : 1E5A 0304
+1E5D LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+ * Indic transliteration
+ : 1E5B 0304
+1E5E LATIN CAPITAL LETTER R WITH LINE BELOW
+ : 0052 0331
+1E5F LATIN SMALL LETTER R WITH LINE BELOW
+ * Indic transliteration
+ : 0072 0331
+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE
+ : 0053 0307
+1E61 LATIN SMALL LETTER S WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0073 0307
+1E62 LATIN CAPITAL LETTER S WITH DOT BELOW
+ : 0053 0323
+1E63 LATIN SMALL LETTER S WITH DOT BELOW
+ * Indic transliteration
+ : 0073 0323
+1E64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ : 015A 0307
+1E65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+ : 015B 0307
+1E66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ : 0160 0307
+1E67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+ : 0161 0307
+1E68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ : 1E62 0307
+1E69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+ : 1E63 0307
+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE
+ : 0054 0307
+1E6B LATIN SMALL LETTER T WITH DOT ABOVE
+ * Irish Gaelic (old orthography)
+ : 0074 0307
+1E6C LATIN CAPITAL LETTER T WITH DOT BELOW
+ : 0054 0323
+1E6D LATIN SMALL LETTER T WITH DOT BELOW
+ * Indic transliteration
+ : 0074 0323
+1E6E LATIN CAPITAL LETTER T WITH LINE BELOW
+ : 0054 0331
+1E6F LATIN SMALL LETTER T WITH LINE BELOW
+ * Semitic transliteration
+ : 0074 0331
+1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ : 0054 032D
+1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+ : 0074 032D
+1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ : 0055 0324
+1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW
+ : 0075 0324
+1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW
+ : 0055 0330
+1E75 LATIN SMALL LETTER U WITH TILDE BELOW
+ : 0075 0330
+1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ : 0055 032D
+1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+ : 0075 032D
+1E78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ : 0168 0301
+1E79 LATIN SMALL LETTER U WITH TILDE AND ACUTE
+ : 0169 0301
+1E7A LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ : 016A 0308
+1E7B LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+ : 016B 0308
+1E7C LATIN CAPITAL LETTER V WITH TILDE
+ : 0056 0303
+1E7D LATIN SMALL LETTER V WITH TILDE
+ : 0076 0303
+1E7E LATIN CAPITAL LETTER V WITH DOT BELOW
+ : 0056 0323
+1E7F LATIN SMALL LETTER V WITH DOT BELOW
+ : 0076 0323
+1E80 LATIN CAPITAL LETTER W WITH GRAVE
+ : 0057 0300
+1E81 LATIN SMALL LETTER W WITH GRAVE
+ * Welsh
+ : 0077 0300
+1E82 LATIN CAPITAL LETTER W WITH ACUTE
+ : 0057 0301
+1E83 LATIN SMALL LETTER W WITH ACUTE
+ * Welsh
+ : 0077 0301
+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS
+ : 0057 0308
+1E85 LATIN SMALL LETTER W WITH DIAERESIS
+ * Welsh
+ : 0077 0308
+1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE
+ : 0057 0307
+1E87 LATIN SMALL LETTER W WITH DOT ABOVE
+ : 0077 0307
+1E88 LATIN CAPITAL LETTER W WITH DOT BELOW
+ : 0057 0323
+1E89 LATIN SMALL LETTER W WITH DOT BELOW
+ : 0077 0323
+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE
+ : 0058 0307
+1E8B LATIN SMALL LETTER X WITH DOT ABOVE
+ : 0078 0307
+1E8C LATIN CAPITAL LETTER X WITH DIAERESIS
+ : 0058 0308
+1E8D LATIN SMALL LETTER X WITH DIAERESIS
+ : 0078 0308
+1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ : 0059 0307
+1E8F LATIN SMALL LETTER Y WITH DOT ABOVE
+ : 0079 0307
+1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ : 005A 0302
+1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX
+ : 007A 0302
+1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW
+ : 005A 0323
+1E93 LATIN SMALL LETTER Z WITH DOT BELOW
+ * Indic transliteration
+ : 007A 0323
+1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW
+ : 005A 0331
+1E95 LATIN SMALL LETTER Z WITH LINE BELOW
+ * Semitic transliteration
+ : 007A 0331
+1E96 LATIN SMALL LETTER H WITH LINE BELOW
+ * Semitic transliteration
+ : 0068 0331
+1E97 LATIN SMALL LETTER T WITH DIAERESIS
+ : 0074 0308
+1E98 LATIN SMALL LETTER W WITH RING ABOVE
+ : 0077 030A
+1E99 LATIN SMALL LETTER Y WITH RING ABOVE
+ : 0079 030A
+1E9A LATIN SMALL LETTER A WITH RIGHT HALF RING
+ # 0061 02BE
+1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ * in current use in Gaelic types (as glyph variant of 1E61)
+ : 017F 0307
+@ Latin extensions for Vietnamese
+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW
+ : 0041 0323
+1EA1 LATIN SMALL LETTER A WITH DOT BELOW
+ : 0061 0323
+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ : 0041 0309
+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE
+ : 0061 0309
+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ : 00C2 0301
+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ : 00E2 0301
+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ : 00C2 0300
+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ : 00E2 0300
+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00C2 0309
+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00E2 0309
+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ : 00C2 0303
+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ : 00E2 0303
+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ : 1EA0 0302
+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ : 1EA1 0302
+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ : 0102 0301
+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ : 0103 0301
+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ : 0102 0300
+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ : 0103 0300
+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ : 0102 0309
+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ : 0103 0309
+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ : 0102 0303
+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE
+ : 0103 0303
+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ : 1EA0 0306
+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ : 1EA1 0306
+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW
+ : 0045 0323
+1EB9 LATIN SMALL LETTER E WITH DOT BELOW
+ : 0065 0323
+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ : 0045 0309
+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE
+ : 0065 0309
+1EBC LATIN CAPITAL LETTER E WITH TILDE
+ : 0045 0303
+1EBD LATIN SMALL LETTER E WITH TILDE
+ : 0065 0303
+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ : 00CA 0301
+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ : 00EA 0301
+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ : 00CA 0300
+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ : 00EA 0300
+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00CA 0309
+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00EA 0309
+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ : 00CA 0303
+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ : 00EA 0303
+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ : 1EB8 0302
+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ : 1EB9 0302
+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ : 0049 0309
+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE
+ : 0069 0309
+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW
+ : 0049 0323
+1ECB LATIN SMALL LETTER I WITH DOT BELOW
+ : 0069 0323
+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW
+ : 004F 0323
+1ECD LATIN SMALL LETTER O WITH DOT BELOW
+ : 006F 0323
+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ : 004F 0309
+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE
+ : 006F 0309
+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ : 00D4 0301
+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ : 00F4 0301
+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ : 00D4 0300
+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ : 00F4 0300
+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00D4 0309
+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ : 00F4 0309
+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ : 00D4 0303
+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ : 00F4 0303
+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ : 1ECC 0302
+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ : 1ECD 0302
+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ : 01A0 0301
+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE
+ : 01A1 0301
+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ : 01A0 0300
+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE
+ : 01A1 0300
+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ : 01A0 0309
+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ : 01A1 0309
+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ : 01A0 0303
+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE
+ : 01A1 0303
+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ : 01A0 0323
+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ : 01A1 0323
+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW
+ : 0055 0323
+1EE5 LATIN SMALL LETTER U WITH DOT BELOW
+ : 0075 0323
+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ : 0055 0309
+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE
+ : 0075 0309
+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ : 01AF 0301
+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE
+ : 01B0 0301
+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ : 01AF 0300
+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE
+ : 01B0 0300
+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ : 01AF 0309
+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ : 01B0 0309
+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ : 01AF 0303
+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE
+ : 01B0 0303
+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ : 01AF 0323
+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ : 01B0 0323
+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE
+ : 0059 0300
+1EF3 LATIN SMALL LETTER Y WITH GRAVE
+ * Welsh
+ : 0079 0300
+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW
+ : 0059 0323
+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW
+ : 0079 0323
+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ : 0059 0309
+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE
+ : 0079 0309
+1EF8 LATIN CAPITAL LETTER Y WITH TILDE
+ : 0059 0303
+1EF9 LATIN SMALL LETTER Y WITH TILDE
+ : 0079 0303
+@@ 1F00 Greek Extended 1FFF
+@ Precomposed polytonic Greek
+1F00 GREEK SMALL LETTER ALPHA WITH PSILI
+ : 03B1 0313
+1F01 GREEK SMALL LETTER ALPHA WITH DASIA
+ : 03B1 0314
+1F02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+ : 1F00 0300
+1F03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+ : 1F01 0300
+1F04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+ : 1F00 0301
+1F05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+ : 1F01 0301
+1F06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ : 1F00 0342
+1F07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ : 1F01 0342
+1F08 GREEK CAPITAL LETTER ALPHA WITH PSILI
+ : 0391 0313
+1F09 GREEK CAPITAL LETTER ALPHA WITH DASIA
+ : 0391 0314
+1F0A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+ : 1F08 0300
+1F0B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+ : 1F09 0300
+1F0C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+ : 1F08 0301
+1F0D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+ : 1F09 0301
+1F0E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ : 1F08 0342
+1F0F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ : 1F09 0342
+1F10 GREEK SMALL LETTER EPSILON WITH PSILI
+ : 03B5 0313
+1F11 GREEK SMALL LETTER EPSILON WITH DASIA
+ : 03B5 0314
+1F12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+ : 1F10 0300
+1F13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+ : 1F11 0300
+1F14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+ : 1F10 0301
+1F15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ : 1F11 0301
+1F18 GREEK CAPITAL LETTER EPSILON WITH PSILI
+ : 0395 0313
+1F19 GREEK CAPITAL LETTER EPSILON WITH DASIA
+ : 0395 0314
+1F1A GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+ : 1F18 0300
+1F1B GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+ : 1F19 0300
+1F1C GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+ : 1F18 0301
+1F1D GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ : 1F19 0301
+1F20 GREEK SMALL LETTER ETA WITH PSILI
+ : 03B7 0313
+1F21 GREEK SMALL LETTER ETA WITH DASIA
+ : 03B7 0314
+1F22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+ : 1F20 0300
+1F23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+ : 1F21 0300
+1F24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+ : 1F20 0301
+1F25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+ : 1F21 0301
+1F26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+ : 1F20 0342
+1F27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ : 1F21 0342
+1F28 GREEK CAPITAL LETTER ETA WITH PSILI
+ : 0397 0313
+1F29 GREEK CAPITAL LETTER ETA WITH DASIA
+ : 0397 0314
+1F2A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+ : 1F28 0300
+1F2B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+ : 1F29 0300
+1F2C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+ : 1F28 0301
+1F2D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+ : 1F29 0301
+1F2E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+ : 1F28 0342
+1F2F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ : 1F29 0342
+1F30 GREEK SMALL LETTER IOTA WITH PSILI
+ : 03B9 0313
+1F31 GREEK SMALL LETTER IOTA WITH DASIA
+ : 03B9 0314
+1F32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+ : 1F30 0300
+1F33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+ : 1F31 0300
+1F34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+ : 1F30 0301
+1F35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+ : 1F31 0301
+1F36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+ : 1F30 0342
+1F37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ : 1F31 0342
+1F38 GREEK CAPITAL LETTER IOTA WITH PSILI
+ : 0399 0313
+1F39 GREEK CAPITAL LETTER IOTA WITH DASIA
+ : 0399 0314
+1F3A GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+ : 1F38 0300
+1F3B GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+ : 1F39 0300
+1F3C GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+ : 1F38 0301
+1F3D GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+ : 1F39 0301
+1F3E GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+ : 1F38 0342
+1F3F GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ : 1F39 0342
+1F40 GREEK SMALL LETTER OMICRON WITH PSILI
+ : 03BF 0313
+1F41 GREEK SMALL LETTER OMICRON WITH DASIA
+ : 03BF 0314
+1F42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+ : 1F40 0300
+1F43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+ : 1F41 0300
+1F44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+ : 1F40 0301
+1F45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ : 1F41 0301
+1F48 GREEK CAPITAL LETTER OMICRON WITH PSILI
+ : 039F 0313
+1F49 GREEK CAPITAL LETTER OMICRON WITH DASIA
+ : 039F 0314
+1F4A GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+ : 1F48 0300
+1F4B GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+ : 1F49 0300
+1F4C GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+ : 1F48 0301
+1F4D GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ : 1F49 0301
+1F50 GREEK SMALL LETTER UPSILON WITH PSILI
+ : 03C5 0313
+1F51 GREEK SMALL LETTER UPSILON WITH DASIA
+ : 03C5 0314
+1F52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+ : 1F50 0300
+1F53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+ : 1F51 0300
+1F54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+ : 1F50 0301
+1F55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+ : 1F51 0301
+1F56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+ : 1F50 0342
+1F57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ : 1F51 0342
+1F59 GREEK CAPITAL LETTER UPSILON WITH DASIA
+ : 03A5 0314
+1F5B GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ : 1F59 0300
+1F5D GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ : 1F59 0301
+1F5F GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ : 1F59 0342
+1F60 GREEK SMALL LETTER OMEGA WITH PSILI
+ : 03C9 0313
+1F61 GREEK SMALL LETTER OMEGA WITH DASIA
+ : 03C9 0314
+1F62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+ : 1F60 0300
+1F63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+ : 1F61 0300
+1F64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+ : 1F60 0301
+1F65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+ : 1F61 0301
+1F66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ : 1F60 0342
+1F67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ : 1F61 0342
+1F68 GREEK CAPITAL LETTER OMEGA WITH PSILI
+ : 03A9 0313
+1F69 GREEK CAPITAL LETTER OMEGA WITH DASIA
+ : 03A9 0314
+1F6A GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+ : 1F68 0300
+1F6B GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+ : 1F69 0300
+1F6C GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+ : 1F68 0301
+1F6D GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+ : 1F69 0301
+1F6E GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ : 1F68 0342
+1F6F GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ : 1F69 0342
+1F70 GREEK SMALL LETTER ALPHA WITH VARIA
+ : 03B1 0300
+1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+ : 03AC greek small letter alpha with tonos
+1F72 GREEK SMALL LETTER EPSILON WITH VARIA
+ : 03B5 0300
+1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+ : 03AD greek small letter epsilon with tonos
+1F74 GREEK SMALL LETTER ETA WITH VARIA
+ : 03B7 0300
+1F75 GREEK SMALL LETTER ETA WITH OXIA
+ : 03AE greek small letter eta with tonos
+1F76 GREEK SMALL LETTER IOTA WITH VARIA
+ : 03B9 0300
+1F77 GREEK SMALL LETTER IOTA WITH OXIA
+ : 03AF greek small letter iota with tonos
+1F78 GREEK SMALL LETTER OMICRON WITH VARIA
+ : 03BF 0300
+1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+ : 03CC greek small letter omicron with tonos
+1F7A GREEK SMALL LETTER UPSILON WITH VARIA
+ : 03C5 0300
+1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+ : 03CD greek small letter upsilon with tonos
+1F7C GREEK SMALL LETTER OMEGA WITH VARIA
+ : 03C9 0300
+1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+ : 03CE greek small letter omega with tonos
+1F80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+ : 1F00 0345
+1F81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+ : 1F01 0345
+1F82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ : 1F02 0345
+1F83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ : 1F03 0345
+1F84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ : 1F04 0345
+1F85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ : 1F05 0345
+1F86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F06 0345
+1F87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F07 0345
+1F88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+ : 1F08 0345
+1F89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+ : 1F09 0345
+1F8A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ : 1F0A 0345
+1F8B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ : 1F0B 0345
+1F8C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ : 1F0C 0345
+1F8D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ : 1F0D 0345
+1F8E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F0E 0345
+1F8F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F0F 0345
+1F90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+ : 1F20 0345
+1F91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+ : 1F21 0345
+1F92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ : 1F22 0345
+1F93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ : 1F23 0345
+1F94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ : 1F24 0345
+1F95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ : 1F25 0345
+1F96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F26 0345
+1F97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F27 0345
+1F98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+ : 1F28 0345
+1F99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+ : 1F29 0345
+1F9A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ : 1F2A 0345
+1F9B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ : 1F2B 0345
+1F9C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ : 1F2C 0345
+1F9D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ : 1F2D 0345
+1F9E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F2E 0345
+1F9F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F2F 0345
+1FA0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+ : 1F60 0345
+1FA1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+ : 1F61 0345
+1FA2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ : 1F62 0345
+1FA3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ : 1F63 0345
+1FA4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ : 1F64 0345
+1FA5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ : 1F65 0345
+1FA6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F66 0345
+1FA7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ : 1F67 0345
+1FA8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+ : 1F68 0345
+1FA9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+ : 1F69 0345
+1FAA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ : 1F6A 0345
+1FAB GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ : 1F6B 0345
+1FAC GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ : 1F6C 0345
+1FAD GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ : 1F6D 0345
+1FAE GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F6E 0345
+1FAF GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ : 1F6F 0345
+1FB0 GREEK SMALL LETTER ALPHA WITH VRACHY
+ : 03B1 0306
+1FB1 GREEK SMALL LETTER ALPHA WITH MACRON
+ : 03B1 0304
+1FB2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ : 1F70 0345
+1FB3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+ : 03B1 0345
+1FB4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ : 03AC 0345
+1FB6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+ : 03B1 0342
+1FB7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ : 1FB6 0345
+1FB8 GREEK CAPITAL LETTER ALPHA WITH VRACHY
+ : 0391 0306
+1FB9 GREEK CAPITAL LETTER ALPHA WITH MACRON
+ : 0391 0304
+1FBA GREEK CAPITAL LETTER ALPHA WITH VARIA
+ : 0391 0300
+1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+ : 0386 greek capital letter alpha with tonos
+1FBC GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ : 0391 0345
+1FBD GREEK KORONIS
+ # 0020 0313
+1FBE GREEK PROSGEGRAMMENI
+ : 03B9 greek small letter iota
+1FBF GREEK PSILI
+ # 0020 0313
+1FC0 GREEK PERISPOMENI
+ # 0020 0342
+1FC1 GREEK DIALYTIKA AND PERISPOMENI
+ : 00A8 0342
+1FC2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ : 1F74 0345
+1FC3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+ : 03B7 0345
+1FC4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ : 03AE 0345
+1FC6 GREEK SMALL LETTER ETA WITH PERISPOMENI
+ : 03B7 0342
+1FC7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ : 1FC6 0345
+1FC8 GREEK CAPITAL LETTER EPSILON WITH VARIA
+ : 0395 0300
+1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+ : 0388 greek capital letter epsilon with tonos
+1FCA GREEK CAPITAL LETTER ETA WITH VARIA
+ : 0397 0300
+1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+ : 0389 greek capital letter eta with tonos
+1FCC GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ : 0397 0345
+1FCD GREEK PSILI AND VARIA
+ : 1FBF 0300
+1FCE GREEK PSILI AND OXIA
+ : 1FBF 0301
+1FCF GREEK PSILI AND PERISPOMENI
+ : 1FBF 0342
+1FD0 GREEK SMALL LETTER IOTA WITH VRACHY
+ : 03B9 0306
+1FD1 GREEK SMALL LETTER IOTA WITH MACRON
+ : 03B9 0304
+1FD2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+ : 03CA 0300
+1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ : 0390 greek small letter iota with dialytika and tonos
+1FD6 GREEK SMALL LETTER IOTA WITH PERISPOMENI
+ : 03B9 0342
+1FD7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ : 03CA 0342
+1FD8 GREEK CAPITAL LETTER IOTA WITH VRACHY
+ : 0399 0306
+1FD9 GREEK CAPITAL LETTER IOTA WITH MACRON
+ : 0399 0304
+1FDA GREEK CAPITAL LETTER IOTA WITH VARIA
+ : 0399 0300
+1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+ : 038A greek capital letter iota with tonos
+1FDD GREEK DASIA AND VARIA
+ : 1FFE 0300
+1FDE GREEK DASIA AND OXIA
+ : 1FFE 0301
+1FDF GREEK DASIA AND PERISPOMENI
+ : 1FFE 0342
+1FE0 GREEK SMALL LETTER UPSILON WITH VRACHY
+ : 03C5 0306
+1FE1 GREEK SMALL LETTER UPSILON WITH MACRON
+ : 03C5 0304
+1FE2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+ : 03CB 0300
+1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ : 03B0 greek small letter upsilon with dialytika and tonos
+1FE4 GREEK SMALL LETTER RHO WITH PSILI
+ : 03C1 0313
+1FE5 GREEK SMALL LETTER RHO WITH DASIA
+ : 03C1 0314
+1FE6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+ : 03C5 0342
+1FE7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ : 03CB 0342
+1FE8 GREEK CAPITAL LETTER UPSILON WITH VRACHY
+ : 03A5 0306
+1FE9 GREEK CAPITAL LETTER UPSILON WITH MACRON
+ : 03A5 0304
+1FEA GREEK CAPITAL LETTER UPSILON WITH VARIA
+ : 03A5 0300
+1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+ : 038E greek capital letter upsilon with tonos
+1FEC GREEK CAPITAL LETTER RHO WITH DASIA
+ : 03A1 0314
+1FED GREEK DIALYTIKA AND VARIA
+ : 00A8 0300
+1FEE GREEK DIALYTIKA AND OXIA
+ : 0385 greek dialytika tonos
+1FEF GREEK VARIA
+ : 0060 grave accent
+1FF2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ : 1F7C 0345
+1FF3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+ : 03C9 0345
+1FF4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ : 03CE 0345
+1FF6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+ : 03C9 0342
+1FF7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ : 1FF6 0345
+1FF8 GREEK CAPITAL LETTER OMICRON WITH VARIA
+ : 039F 0300
+1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+ : 038C greek capital letter omicron with tonos
+1FFA GREEK CAPITAL LETTER OMEGA WITH VARIA
+ : 03A9 0300
+1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+ : 038F greek capital letter omega with tonos
+1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ : 03A9 0345
+1FFD GREEK OXIA
+ : 00B4 acute accent
+1FFE GREEK DASIA
+ # 0020 0314
+@@ 2000 General Punctuation 206F
+@ Spaces
+2000 EN QUAD
+ : 2002 en space
+2001 EM QUAD
+ = mutton quad
+ : 2003 em space
+2002 EN SPACE
+ = nut
+ * half an em
+ # 0020 space
+2003 EM SPACE
+ = mutton
+ * nominally, a space equal to the type size in points
+ * may scale by the condensation factor of a font
+ # 0020 space
+2004 THREE-PER-EM SPACE
+ = thick space
+ # 0020 space
+2005 FOUR-PER-EM SPACE
+ = mid space
+ # 0020 space
+2006 SIX-PER-EM SPACE
+ * in computer typography sometimes equated to thin space
+ # 0020 space
+2007 FIGURE SPACE
+ * space equal to tabular width of a font
+ * this is equivalent to the digit width of fonts with fixed-width digits
+ # <noBreak> 0020
+2008 PUNCTUATION SPACE
+ * space equal to narrow punctuation of a font
+ # 0020 space
+2009 THIN SPACE
+ * a fifth of an em (or sometimes a sixth)
+ # 0020 space
+200A HAIR SPACE
+ * thinner than a thin space
+ * in traditional typography, the thinnest space available
+ # 0020 space
+200B ZERO WIDTH SPACE
+ * nominally zero width, but may expand in justification
+@ Formatting characters
+200C ZERO WIDTH NON-JOINER
+ = ZWNJ
+200D ZERO WIDTH JOINER
+ = ZWJ
+200E LEFT-TO-RIGHT MARK
+ = LRM
+200F RIGHT-TO-LEFT MARK
+ = RLM
+@ Dashes
+2010 HYPHEN
+ x (hyphen-minus - 002D)
+2011 NON-BREAKING HYPHEN
+ x (hyphen-minus - 002D)
+ # <noBreak> 2010
+2012 FIGURE DASH
+2013 EN DASH
+2014 EM DASH
+ * may be used in pairs to offset parenthetical text
+ x (katakana-hiragana prolonged sound mark - 30FC)
+2015 HORIZONTAL BAR
+ = QUOTATION DASH
+ * long dash introducing quoted text
+@ General punctuation
+2016 DOUBLE VERTICAL LINE
+ * used in pairs to indicate norm of a matrix
+ x (parallel to - 2225)
+2017 DOUBLE LOW LINE
+ * this is a spacing character
+ x (low line - 005F)
+ x (combining double low line - 0333)
+ # 0020 0333
+2018 LEFT SINGLE QUOTATION MARK
+ = SINGLE TURNED COMMA QUOTATION MARK
+ * this is the preferred glyph (as opposed to 201B)
+ x (apostrophe - 0027)
+ x (modifier letter turned comma - 02BB)
+ x (heavy single turned comma quotation mark ornament - 275B)
+2019 RIGHT SINGLE QUOTATION MARK
+ = SINGLE COMMA QUOTATION MARK
+ * this is the preferred character to use for apostrophe
+ x (apostrophe - 0027)
+ x (modifier letter apostrophe - 02BC)
+ x (heavy single comma quotation mark ornament - 275C)
+201A SINGLE LOW-9 QUOTATION MARK
+ = LOW SINGLE COMMA QUOTATION MARK
+ * used as opening single quotation mark in some languages
+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ = SINGLE REVERSED COMMA QUOTATION MARK
+ * glyph variant of 2018
+ x (modifier letter reversed comma - 02BD)
+201C LEFT DOUBLE QUOTATION MARK
+ = DOUBLE TURNED COMMA QUOTATION MARK
+ * this is the preferred glyph (as opposed to 201F)
+ x (quotation mark - 0022)
+ x (heavy double turned comma quotation mark ornament - 275D)
+ x (reversed double prime quotation mark - 301D)
+201D RIGHT DOUBLE QUOTATION MARK
+ = DOUBLE COMMA QUOTATION MARK
+ x (quotation mark - 0022)
+ x (double prime - 2033)
+ x (heavy double comma quotation mark ornament - 275E)
+ x (double prime quotation mark - 301E)
+201E DOUBLE LOW-9 QUOTATION MARK
+ = LOW DOUBLE COMMA QUOTATION MARK
+ * used as opening double quotation mark in some languages
+ x (low double prime quotation mark - 301F)
+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ = DOUBLE REVERSED COMMA QUOTATION MARK
+ * glyph variant of 201C
+2020 DAGGER
+ = obelisk, obelus, long cross
+2021 DOUBLE DAGGER
+ = diesis, double obelisk
+2022 BULLET
+ = black small circle
+ x (middle dot - 00B7)
+ x (one dot leader - 2024)
+ x (bullet operator - 2219)
+ x (inverse bullet - 25D8)
+ x (white bullet - 25E6)
+2023 TRIANGULAR BULLET
+ x (end of proof - 220E)
+ x (black right-pointing small triangle - 25B8)
+2024 ONE DOT LEADER
+ x (middle dot - 00B7)
+ x (bullet - 2022)
+ x (bullet operator - 2219)
+ # 002E full stop
+2025 TWO DOT LEADER
+ # 002E 002E
+2026 HORIZONTAL ELLIPSIS
+ = three dot leader
+ x (vertical ellipsis - 22EE)
+ # 002E 002E 002E
+2027 HYPHENATION POINT
+@ Formatting characters
+2028 LINE SEPARATOR
+ * may be used to represent this semantic unambiguously
+2029 PARAGRAPH SEPARATOR
+ * may be used to represent this semantic unambiguously
+202A LEFT-TO-RIGHT EMBEDDING
+ = LRE
+202B RIGHT-TO-LEFT EMBEDDING
+ = RLE
+202C POP DIRECTIONAL FORMATTING
+ = PDF
+202D LEFT-TO-RIGHT OVERRIDE
+ = LRO
+202E RIGHT-TO-LEFT OVERRIDE
+ = RLO
+202F NARROW NO-BREAK SPACE
+ x (no-break space - 00A0)
+ # <noBreak> 0020
+@ General punctuation
+2030 PER MILLE SIGN
+ x (percent sign - 0025)
+2031 PER TEN THOUSAND SIGN
+ x (percent sign - 0025)
+2032 PRIME
+ = minutes, feet
+ x (apostrophe - 0027)
+ x (acute accent - 00B4)
+ x (modifier letter prime - 02B9)
+2033 DOUBLE PRIME
+ = seconds, inches
+ x (quotation mark - 0022)
+ x (modifier letter double prime - 02BA)
+ x (right double quotation mark - 201D)
+ x (ditto mark - 3003)
+ x (double prime quotation mark - 301E)
+ # 2032 2032
+2034 TRIPLE PRIME
+ # 2032 2032 2032
+2035 REVERSED PRIME
+ x (grave accent - 0060)
+2036 REVERSED DOUBLE PRIME
+ x (reversed double prime quotation mark - 301D)
+ # 2035 2035
+2037 REVERSED TRIPLE PRIME
+ # 2035 2035 2035
+2038 CARET
+ x (up arrowhead - 2303)
+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ = LEFT POINTING SINGLE GUILLEMET
+ * usually opening, sometimes closing
+ x (less-than sign - 003C)
+ x (left-pointing angle bracket - 2329)
+ x (left angle bracket - 3008)
+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ = RIGHT POINTING SINGLE GUILLEMET
+ * usually closing, sometimes opening
+ x (greater-than sign - 003E)
+ x (right-pointing angle bracket - 232A)
+ x (right angle bracket - 3009)
+203B REFERENCE MARK
+ = Japanese kome
+ = Urdu paragraph separator
+ x (tibetan ku ru kha bzhi mig can - 0FBF)
+203C DOUBLE EXCLAMATION MARK
+ x (exclamation mark - 0021)
+ # 0021 0021
+203D INTERROBANG
+ x (exclamation mark - 0021)
+ x (question mark - 003F)
+203E OVERLINE
+ = SPACING OVERSCORE
+ # 0020 0305
+203F UNDERTIE (Enotikon)
+ = Greek enotikon
+ x (smile - 2323)
+2040 CHARACTER TIE
+ x (frown - 2322)
+2041 CARET INSERTION POINT
+ * proofreader's mark: insert here
+ x (right semidirect product - 22CC)
+2042 ASTERISM
+2043 HYPHEN BULLET
+2044 FRACTION SLASH
+ = solidus (in typography)
+ * for composing arbitrary fractions
+ x (solidus - 002F)
+ x (division slash - 2215)
+2045 LEFT SQUARE BRACKET WITH QUILL
+2046 RIGHT SQUARE BRACKET WITH QUILL
+2048 QUESTION EXCLAMATION MARK
+ * designed for use in vertical text
+ # 003F 0021
+2049 EXCLAMATION QUESTION MARK
+ * designed for use in vertical text
+ # 0021 003F
+204A TIRONIAN SIGN ET
+ * Irish Gaelic, ...
+204B REVERSED PILCROW SIGN
+ x (pilcrow sign - 00B6)
+204C BLACK LEFTWARDS BULLET
+204D BLACK RIGHTWARDS BULLET
+@ Deprecated
+206A INHIBIT SYMMETRIC SWAPPING
+206B ACTIVATE SYMMETRIC SWAPPING
+206C INHIBIT ARABIC FORM SHAPING
+206D ACTIVATE ARABIC FORM SHAPING
+206E NATIONAL DIGIT SHAPES
+206F NOMINAL DIGIT SHAPES
+@@ 2070 Superscripts and Subscripts 209F
+@ Superscripts
+2070 SUPERSCRIPT ZERO
+ # <super> 0030
+2071 <reserved>
+ x (superscript one - 00B9)
+2072 <reserved>
+ x (superscript two - 00B2)
+2073 <reserved>
+ x (superscript three - 00B3)
+2074 SUPERSCRIPT FOUR
+ # <super> 0034
+2075 SUPERSCRIPT FIVE
+ # <super> 0035
+2076 SUPERSCRIPT SIX
+ # <super> 0036
+2077 SUPERSCRIPT SEVEN
+ # <super> 0037
+2078 SUPERSCRIPT EIGHT
+ # <super> 0038
+2079 SUPERSCRIPT NINE
+ # <super> 0039
+207A SUPERSCRIPT PLUS SIGN
+ # <super> 002B
+207B SUPERSCRIPT MINUS
+ # <super> 2212
+207C SUPERSCRIPT EQUALS SIGN
+ # <super> 003D
+207D SUPERSCRIPT LEFT PARENTHESIS
+ # <super> 0028
+207E SUPERSCRIPT RIGHT PARENTHESIS
+ # <super> 0029
+207F SUPERSCRIPT LATIN SMALL LETTER N
+ # <super> 006E
+@ Subscripts
+2080 SUBSCRIPT ZERO
+ # <sub> 0030
+2081 SUBSCRIPT ONE
+ # <sub> 0031
+2082 SUBSCRIPT TWO
+ # <sub> 0032
+2083 SUBSCRIPT THREE
+ # <sub> 0033
+2084 SUBSCRIPT FOUR
+ # <sub> 0034
+2085 SUBSCRIPT FIVE
+ # <sub> 0035
+2086 SUBSCRIPT SIX
+ # <sub> 0036
+2087 SUBSCRIPT SEVEN
+ # <sub> 0037
+2088 SUBSCRIPT EIGHT
+ # <sub> 0038
+2089 SUBSCRIPT NINE
+ # <sub> 0039
+208A SUBSCRIPT PLUS SIGN
+ # <sub> 002B
+208B SUBSCRIPT MINUS
+ # <sub> 2212
+208C SUBSCRIPT EQUALS SIGN
+ # <sub> 003D
+208D SUBSCRIPT LEFT PARENTHESIS
+ # <sub> 0028
+208E SUBSCRIPT RIGHT PARENTHESIS
+ # <sub> 0029
+@@ 20A0 Currency Symbols 20CF
+@ Currency symbols
+@+ A number of currency symbols are found in other blocks.
+ x (dollar sign - 0024)
+ x (cent sign - 00A2)
+ x (pound sign - 00A3)
+ x (currency sign - 00A4)
+ x (yen sign - 00A5)
+ x (bengali rupee mark - 09F2)
+ x (bengali rupee sign - 09F3)
+ x (thai currency symbol baht - 0E3F)
+ x (khmer currency symbol riel - 17DB)
+20A0 EURO-CURRENCY SIGN
+ * intended for ECU, but not widely used
+ * historical character, this is NOT the euro!
+ x (euro sign - 20AC)
+20A1 COLON SIGN
+ * Costa Rica, El Salvador
+20A2 CRUZEIRO SIGN
+ * Brazil
+20A3 FRENCH FRANC SIGN
+ * France
+20A4 LIRA SIGN
+ * Italy, Turkey
+ x (pound sign - 00A3)
+20A5 MILL SIGN
+ * USA (1/10 cent)
+20A6 NAIRA SIGN
+ * Nigeria
+20A7 PESETA SIGN
+ * Spain
+20A8 RUPEE SIGN
+ * India
+ # 0052 0073
+20A9 WON SIGN
+ * Korea
+20AA NEW SHEQEL SIGN
+ * Israel
+20AB DONG SIGN
+ * Vietnam
+20AC EURO SIGN
+ * currency sign for the European Monetary Union
+ * euro, not ECU
+ x (euro-currency sign - 20A0)
+20AD KIP SIGN
+ * Laos
+20AE TUGRIK SIGN
+ * Mongolia
+ * also transliterated as tugrug, tugric, tugrog, togrog
+20AF DRACHMA SIGN
+ * Greece
+@@ 20D0 Combining Diacritical Marks for Symbols 20FF
+@ Combining diacritical marks for symbols
+20D0 COMBINING LEFT HARPOON ABOVE
+20D1 COMBINING RIGHT HARPOON ABOVE
+ * vector
+20D2 COMBINING LONG VERTICAL LINE OVERLAY
+20D3 COMBINING SHORT VERTICAL LINE OVERLAY
+ * negation
+20D4 COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5 COMBINING CLOCKWISE ARROW ABOVE
+ * rotation
+20D6 COMBINING LEFT ARROW ABOVE
+20D7 COMBINING RIGHT ARROW ABOVE
+ * vector
+20D8 COMBINING RING OVERLAY
+20D9 COMBINING CLOCKWISE RING OVERLAY
+20DA COMBINING ANTICLOCKWISE RING OVERLAY
+20DB COMBINING THREE DOTS ABOVE
+ = third derivative
+20DC COMBINING FOUR DOTS ABOVE
+ = fourth derivative
+@ Enclosing diacritics
+20DD COMBINING ENCLOSING CIRCLE
+ = JIS composition circle
+ x (white circle - 25CB)
+ x (large circle - 25EF)
+ x (ideographic number zero - 3007)
+20DE COMBINING ENCLOSING SQUARE
+ x (white square - 25A1)
+20DF COMBINING ENCLOSING DIAMOND
+ x (white diamond - 25C7)
+20E0 COMBINING ENCLOSING CIRCLE BACKSLASH
+ * prohibition
+@ Additional diacritical mark for symbols
+20E1 COMBINING LEFT RIGHT ARROW ABOVE
+ * tensor
+@ Additional enclosing diacritics
+20E2 COMBINING ENCLOSING SCREEN
+ x (clear screen symbol - 239A)
+20E3 COMBINING ENCLOSING KEYCAP
+@@ 2100 Letterlike Symbols 214F
+@ Letterlike symbols
+2100 ACCOUNT OF
+ # 0061 002F 0063
+2101 ADDRESSED TO THE SUBJECT
+ # 0061 002F 0073
+2102 DOUBLE-STRUCK CAPITAL C
+ = the set of complex numbers
+ # <font> 0043 latin capital letter c
+2103 DEGREE CELSIUS
+ = degrees Centigrade
+ # 00B0 0043
+2104 CENTRE LINE SYMBOL
+ = clone
+2105 CARE OF
+ # 0063 002F 006F
+2106 CADA UNA
+ # 0063 002F 0075
+2107 EULER CONSTANT
+ x (latin capital letter e - 0045)
+ # 0190 latin capital letter open e
+2108 SCRUPLE
+2109 DEGREE FAHRENHEIT
+ # 00B0 0046
+210A SCRIPT SMALL G
+ = real number symbol
+ # <font> 0067 latin small letter g
+210B SCRIPT CAPITAL H
+ = Hamiltonian function
+ # <font> 0048 latin capital letter h
+210C BLACK-LETTER CAPITAL H
+ = Hilbert space
+ # <font> 0048 latin capital letter h
+210D DOUBLE-STRUCK CAPITAL H
+ # <font> 0048 latin capital letter h
+210E PLANCK CONSTANT
+ # <font> 0068 latin small letter h
+210F PLANCK CONSTANT OVER TWO PI
+ x (cyrillic small letter tshe - 045B)
+ # <font> 0127 latin small letter h with stroke
+2110 SCRIPT CAPITAL I
+ # <font> 0049 latin capital letter i
+2111 BLACK-LETTER CAPITAL I
+ = imaginary part
+ # <font> 0049 latin capital letter i
+2112 SCRIPT CAPITAL L
+ = Laplace symbol
+ # <font> 004C latin capital letter l
+2113 SCRIPT SMALL L
+ = liter (not an official SI recommendation)
+ # <font> 006C latin small letter l
+2114 L B BAR SYMBOL
+ = pounds
+2115 DOUBLE-STRUCK CAPITAL N
+ = natural number
+ # <font> 004E latin capital letter n
+2116 NUMERO SIGN
+ # 004E 006F
+2117 SOUND RECORDING COPYRIGHT
+ = published
+ = phonorecord sign
+ x (copyright sign - 00A9)
+2118 SCRIPT CAPITAL P
+ = Weierstrass elliptic function
+ * actually this has the form of a lowercase calligraphic p, despite its name
+2119 DOUBLE-STRUCK CAPITAL P
+ # <font> 0050 latin capital letter p
+211A DOUBLE-STRUCK CAPITAL Q
+ = the set of rational numbers
+ # <font> 0051 latin capital letter q
+211B SCRIPT CAPITAL R
+ = Riemann Integral
+ # <font> 0052 latin capital letter r
+211C BLACK-LETTER CAPITAL R
+ = real part
+ # <font> 0052 latin capital letter r
+211D DOUBLE-STRUCK CAPITAL R
+ = the set of real numbers
+ # <font> 0052 latin capital letter r
+211E PRESCRIPTION TAKE
+ = recipe
+ = cross ratio
+211F RESPONSE
+2120 SERVICE MARK
+ # <super> 0053 004D
+2121 TELEPHONE SIGN
+ # 0054 0045 004C
+2122 TRADE MARK SIGN
+ # <super> 0054 004D
+2123 VERSICLE
+2124 DOUBLE-STRUCK CAPITAL Z
+ = the set of integers
+ # <font> 005A latin capital letter z
+2125 OUNCE SIGN
+ x (latin small letter yogh - 021D)
+2126 OHM SIGN
+ = resistance
+ : 03A9 greek capital letter omega
+2127 INVERTED OHM SIGN
+ = MHO
+ = conductance
+ * typographically a turned greek capital letter omega
+ x (latin capital letter upsilon - 01B1)
+ x (greek capital letter omega - 03A9)
+2128 BLACK-LETTER CAPITAL Z
+ # <font> 005A latin capital letter z
+2129 TURNED GREEK SMALL LETTER IOTA
+ * unique element fulfilling a description (logic)
+ x (greek small letter iota - 03B9)
+212A KELVIN SIGN
+ : 004B latin capital letter k
+212B ANGSTROM SIGN
+ : 00C5 latin capital letter a with ring above
+212C SCRIPT CAPITAL B
+ = Bernoulli function
+ # <font> 0042 latin capital letter b
+212D BLACK-LETTER CAPITAL C
+ # <font> 0043 latin capital letter c
+212E ESTIMATED SYMBOL
+ * used in European packaging
+ x (latin small letter e - 0065)
+212F SCRIPT SMALL E
+ = error
+ # <font> 0065 latin small letter e
+2130 SCRIPT CAPITAL E
+ = EMF (Electro-Magnetic Force)
+ # <font> 0045 latin capital letter e
+2131 SCRIPT CAPITAL F
+ = Fourier transform
+ # <font> 0046 latin capital letter f
+2132 TURNED CAPITAL F
+ x (latin capital letter f - 0046)
+2133 SCRIPT CAPITAL M
+ = M-matrix (physics)
+ = German Mark (not the current Deutsche Mark)
+ # <font> 004D latin capital letter m
+2134 SCRIPT SMALL O
+ = order, of inferior order to
+ # <font> 006F latin small letter o
+@ Hebrew letterlike math symbols (left-to-right)
+2135 ALEF SYMBOL
+ = first transfinite cardinal (countable)
+ # 05D0 hebrew letter alef
+2136 BET SYMBOL
+ = second transfinite cardinal (the continuum)
+ # 05D1 hebrew letter bet
+2137 GIMEL SYMBOL
+ = third transfinite cardinal (functions of a real variable)
+ # 05D2 hebrew letter gimel
+2138 DALET SYMBOL
+ = fourth transfinite cardinal
+ # 05D3 hebrew letter dalet
+@ Additional letterlike symbols
+2139 INFORMATION SOURCE
+ * intended for use with 20DD
+ # <font> 0069 latin small letter i
+213A ROTATED CAPITAL Q
+ * a binding signature mark
+@@ 2150 Number Forms 218F
+@ Fractions
+@+ Other fraction number forms are found in the Latin-1 Supplement block.
+ x (vulgar fraction one quarter - 00BC)
+ x (vulgar fraction one half - 00BD)
+ x (vulgar fraction three quarters - 00BE)
+2153 VULGAR FRACTION ONE THIRD
+ # 0031 2044 0033
+2154 VULGAR FRACTION TWO THIRDS
+ # 0032 2044 0033
+2155 VULGAR FRACTION ONE FIFTH
+ # 0031 2044 0035
+2156 VULGAR FRACTION TWO FIFTHS
+ # 0032 2044 0035
+2157 VULGAR FRACTION THREE FIFTHS
+ # 0033 2044 0035
+2158 VULGAR FRACTION FOUR FIFTHS
+ # 0034 2044 0035
+2159 VULGAR FRACTION ONE SIXTH
+ # 0031 2044 0036
+215A VULGAR FRACTION FIVE SIXTHS
+ # 0035 2044 0036
+215B VULGAR FRACTION ONE EIGHTH
+ # 0031 2044 0038
+215C VULGAR FRACTION THREE EIGHTHS
+ # 0033 2044 0038
+215D VULGAR FRACTION FIVE EIGHTHS
+ # 0035 2044 0038
+215E VULGAR FRACTION SEVEN EIGHTHS
+ # 0037 2044 0038
+215F FRACTION NUMERATOR ONE
+ # 0031 2044
+@ Roman numerals
+2160 ROMAN NUMERAL ONE
+ # 0049 latin capital letter i
+2161 ROMAN NUMERAL TWO
+ # 0049 0049
+2162 ROMAN NUMERAL THREE
+ # 0049 0049 0049
+2163 ROMAN NUMERAL FOUR
+ # 0049 0056
+2164 ROMAN NUMERAL FIVE
+ # 0056 latin capital letter v
+2165 ROMAN NUMERAL SIX
+ # 0056 0049
+2166 ROMAN NUMERAL SEVEN
+ # 0056 0049 0049
+2167 ROMAN NUMERAL EIGHT
+ # 0056 0049 0049 0049
+2168 ROMAN NUMERAL NINE
+ # 0049 0058
+2169 ROMAN NUMERAL TEN
+ # 0058 latin capital letter x
+216A ROMAN NUMERAL ELEVEN
+ # 0058 0049
+216B ROMAN NUMERAL TWELVE
+ # 0058 0049 0049
+216C ROMAN NUMERAL FIFTY
+ # 004C latin capital letter l
+216D ROMAN NUMERAL ONE HUNDRED
+ # 0043 latin capital letter c
+216E ROMAN NUMERAL FIVE HUNDRED
+ # 0044 latin capital letter d
+216F ROMAN NUMERAL ONE THOUSAND
+ # 004D latin capital letter m
+2170 SMALL ROMAN NUMERAL ONE
+ # 0069 latin small letter i
+2171 SMALL ROMAN NUMERAL TWO
+ # 0069 0069
+2172 SMALL ROMAN NUMERAL THREE
+ # 0069 0069 0069
+2173 SMALL ROMAN NUMERAL FOUR
+ # 0069 0076
+2174 SMALL ROMAN NUMERAL FIVE
+ # 0076 latin small letter v
+2175 SMALL ROMAN NUMERAL SIX
+ # 0076 0069
+2176 SMALL ROMAN NUMERAL SEVEN
+ # 0076 0069 0069
+2177 SMALL ROMAN NUMERAL EIGHT
+ # 0076 0069 0069 0069
+2178 SMALL ROMAN NUMERAL NINE
+ # 0069 0078
+2179 SMALL ROMAN NUMERAL TEN
+ # 0078 latin small letter x
+217A SMALL ROMAN NUMERAL ELEVEN
+ # 0078 0069
+217B SMALL ROMAN NUMERAL TWELVE
+ # 0078 0069 0069
+217C SMALL ROMAN NUMERAL FIFTY
+ # 006C latin small letter l
+217D SMALL ROMAN NUMERAL ONE HUNDRED
+ # 0063 latin small letter c
+217E SMALL ROMAN NUMERAL FIVE HUNDRED
+ # 0064 latin small letter d
+217F SMALL ROMAN NUMERAL ONE THOUSAND
+ # 006D latin small letter m
+2180 ROMAN NUMERAL ONE THOUSAND C D
+2181 ROMAN NUMERAL FIVE THOUSAND
+2182 ROMAN NUMERAL TEN THOUSAND
+2183 ROMAN NUMERAL REVERSED ONE HUNDRED
+ * used in combination with C and I to form large numbers
+@@ 2190 Arrows 21FF
+@ Arrows
+2190 LEFTWARDS ARROW
+2191 UPWARDS ARROW
+ * IPA: egressive airflow
+2192 RIGHTWARDS ARROW
+ = z notation total function
+2193 DOWNWARDS ARROW
+ * IPA: ingressive airflow
+2194 LEFT RIGHT ARROW
+ = z notation relation
+2195 UP DOWN ARROW
+2196 NORTH WEST ARROW
+2197 NORTH EAST ARROW
+2198 SOUTH EAST ARROW
+2199 SOUTH WEST ARROW
+219A LEFTWARDS ARROW WITH STROKE
+ * negation of 2190
+ : 2190 0338
+219B RIGHTWARDS ARROW WITH STROKE
+ * negation of 2192
+ : 2192 0338
+219C LEFTWARDS WAVE ARROW
+219D RIGHTWARDS WAVE ARROW
+219E LEFTWARDS TWO HEADED ARROW
+219F UPWARDS TWO HEADED ARROW
+21A0 RIGHTWARDS TWO HEADED ARROW
+ = z notation total surjection
+21A1 DOWNWARDS TWO HEADED ARROW
+ = form feed
+21A2 LEFTWARDS ARROW WITH TAIL
+21A3 RIGHTWARDS ARROW WITH TAIL
+ = z notation total injection
+21A4 LEFTWARDS ARROW FROM BAR
+21A5 UPWARDS ARROW FROM BAR
+21A6 RIGHTWARDS ARROW FROM BAR
+ = z notation maplet
+21A7 DOWNWARDS ARROW FROM BAR
+ = depth symbol
+21A8 UP DOWN ARROW WITH BASE
+21A9 LEFTWARDS ARROW WITH HOOK
+21AA RIGHTWARDS ARROW WITH HOOK
+21AB LEFTWARDS ARROW WITH LOOP
+21AC RIGHTWARDS ARROW WITH LOOP
+21AD LEFT RIGHT WAVE ARROW
+21AE LEFT RIGHT ARROW WITH STROKE
+ * negation of 2194
+ : 2194 0338
+21AF DOWNWARDS ZIGZAG ARROW
+ = electrolysis
+21B0 UPWARDS ARROW WITH TIP LEFTWARDS
+21B1 UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2 DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3 DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+ = line feed
+21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ = carriage return, new line
+21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7 CLOCKWISE TOP SEMICIRCLE ARROW
+21B8 NORTH WEST ARROW TO LONG BAR
+ = home
+21B9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+ = tab with shift tab
+21BA ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB CLOCKWISE OPEN CIRCLE ARROW
+21BC LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0 RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3 DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7 LEFTWARDS PAIRED ARROWS
+21C8 UPWARDS PAIRED ARROWS
+21C9 RIGHTWARDS PAIRED ARROWS
+21CA DOWNWARDS PAIRED ARROWS
+21CB LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD LEFTWARDS DOUBLE ARROW WITH STROKE
+ * negation of 21D0
+ : 21D0 0338
+21CE LEFT RIGHT DOUBLE ARROW WITH STROKE
+ * negation of 21D4
+ : 21D4 0338
+21CF RIGHTWARDS DOUBLE ARROW WITH STROKE
+ * negation of 21D2
+ : 21D2 0338
+21D0 LEFTWARDS DOUBLE ARROW
+21D1 UPWARDS DOUBLE ARROW
+21D2 RIGHTWARDS DOUBLE ARROW
+21D3 DOWNWARDS DOUBLE ARROW
+21D4 LEFT RIGHT DOUBLE ARROW
+21D5 UP DOWN DOUBLE ARROW
+21D6 NORTH WEST DOUBLE ARROW
+21D7 NORTH EAST DOUBLE ARROW
+21D8 SOUTH EAST DOUBLE ARROW
+21D9 SOUTH WEST DOUBLE ARROW
+21DA LEFTWARDS TRIPLE ARROW
+21DB RIGHTWARDS TRIPLE ARROW
+21DC LEFTWARDS SQUIGGLE ARROW
+21DD RIGHTWARDS SQUIGGLE ARROW
+21DE UPWARDS ARROW WITH DOUBLE STROKE
+ = page up
+21DF DOWNWARDS ARROW WITH DOUBLE STROKE
+ = page down
+21E0 LEFTWARDS DASHED ARROW
+21E1 UPWARDS DASHED ARROW
+21E2 RIGHTWARDS DASHED ARROW
+21E3 DOWNWARDS DASHED ARROW
+21E4 LEFTWARDS ARROW TO BAR
+ = leftward tab
+21E5 RIGHTWARDS ARROW TO BAR
+ = rightward tab
+21E6 LEFTWARDS WHITE ARROW
+21E7 UPWARDS WHITE ARROW
+ = shift
+21E8 RIGHTWARDS WHITE ARROW
+21E9 DOWNWARDS WHITE ARROW
+21EA UPWARDS WHITE ARROW FROM BAR
+ = caps lock
+21EB UPWARDS WHITE ARROW ON PEDESTAL
+ = level 2 lock
+21EC UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+ = caps lock
+21ED UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+ = numerics lock
+21EE UPWARDS WHITE DOUBLE ARROW
+ = level 3 select
+21EF UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+ = level 3 lock
+21F0 RIGHTWARDS WHITE ARROW FROM WALL
+ = group lock
+21F1 NORTH WEST ARROW TO CORNER
+ = home
+21F2 SOUTH EAST ARROW TO CORNER
+ = end
+21F3 UP DOWN WHITE ARROW
+ = scrolling
+@@ 2200 Mathematical Operators 22FF
+@ Mathematical operators
+2200 FOR ALL
+2201 COMPLEMENT
+ x (latin letter stretched c - 0297)
+2202 PARTIAL DIFFERENTIAL
+2203 THERE EXISTS
+2204 THERE DOES NOT EXIST
+ : 2203 0338
+2205 EMPTY SET
+ = null set
+ x (latin capital letter o with stroke - 00D8)
+ x (diameter sign - 2300)
+2206 INCREMENT
+ = Laplace operator
+ = forward difference
+ x (greek capital letter delta - 0394)
+ x (white up-pointing triangle - 25B3)
+2207 NABLA
+ = Laplace operator (written with superscript 2)
+ = backward difference
+ = del
+ x (white down-pointing triangle - 25BD)
+2208 ELEMENT OF
+2209 NOT AN ELEMENT OF
+ : 2208 0338
+220A SMALL ELEMENT OF
+ * originates in math pi fonts; not the straight epsilon
+220B CONTAINS AS MEMBER
+ = such that
+220C DOES NOT CONTAIN AS MEMBER
+ : 220B 0338
+220D SMALL CONTAINS AS MEMBER
+220E END OF PROOF
+ = Q.E.D.
+ x (triangular bullet - 2023)
+ x (black vertical rectangle - 25AE)
+220F N-ARY PRODUCT
+ = product sign
+ x (greek capital letter pi - 03A0)
+2210 N-ARY COPRODUCT
+ = coproduct sign
+2211 N-ARY SUMMATION
+ = summation sign
+ x (greek capital letter sigma - 03A3)
+2212 MINUS SIGN
+ x (hyphen-minus - 002D)
+2213 MINUS-OR-PLUS SIGN
+ x (plus-minus sign - 00B1)
+2214 DOT PLUS
+2215 DIVISION SLASH
+ * generic division operator
+ x (solidus - 002F)
+ x (fraction slash - 2044)
+2216 SET MINUS
+ x (reverse solidus - 005C)
+2217 ASTERISK OPERATOR
+ x (asterisk - 002A)
+2218 RING OPERATOR
+ = composite function
+ = APL jot
+ x (degree sign - 00B0)
+ x (white bullet - 25E6)
+2219 BULLET OPERATOR
+ x (middle dot - 00B7)
+ x (bullet - 2022)
+ x (one dot leader - 2024)
+221A SQUARE ROOT
+ = radical sign
+ x (check mark - 2713)
+221B CUBE ROOT
+221C FOURTH ROOT
+221D PROPORTIONAL TO
+ x (greek small letter alpha - 03B1)
+221E INFINITY
+221F RIGHT ANGLE
+2220 ANGLE
+2221 MEASURED ANGLE
+2222 SPHERICAL ANGLE
+ = angle arc
+2223 DIVIDES
+ = such that
+ = APL stile
+ x (vertical line - 007C)
+ x (latin letter dental click - 01C0)
+2224 DOES NOT DIVIDE
+ : 2223 0338
+2225 PARALLEL TO
+ x (latin letter lateral click - 01C1)
+ x (double vertical line - 2016)
+2226 NOT PARALLEL TO
+ : 2225 0338
+2227 LOGICAL AND
+ = wedge, conjunction
+ x (n-ary logical and - 22C0)
+ x (up arrowhead - 2303)
+2228 LOGICAL OR
+ = vee, disjunction
+ x (n-ary logical or - 22C1)
+ x (down arrowhead - 2304)
+2229 INTERSECTION
+ = cap, hat
+ x (n-ary intersection - 22C2)
+222A UNION
+ = cup
+ x (n-ary union - 22C3)
+222B INTEGRAL
+ x (latin small letter esh - 0283)
+222C DOUBLE INTEGRAL
+ # 222B 222B
+222D TRIPLE INTEGRAL
+ # 222B 222B 222B
+222E CONTOUR INTEGRAL
+222F SURFACE INTEGRAL
+ # 222E 222E
+2230 VOLUME INTEGRAL
+ # 222E 222E 222E
+2231 CLOCKWISE INTEGRAL
+2232 CLOCKWISE CONTOUR INTEGRAL
+2233 ANTICLOCKWISE CONTOUR INTEGRAL
+ * clockwise or anticlockwise arrows do not reverse during layout mirroring
+2234 THEREFORE
+2235 BECAUSE
+2236 RATIO
+ x (colon - 003A)
+2237 PROPORTION
+2238 DOT MINUS
+ = symmetric difference
+2239 EXCESS
+223A GEOMETRIC PROPORTION
+223B HOMOTHETIC
+223C TILDE OPERATOR
+ = varies with (proportional to)
+ = difference between
+ = similar to
+ = not
+ = cycle
+ = APL tilde
+ x (tilde - 007E)
+ x (not sign - 00AC)
+ x (small tilde - 02DC)
+223D REVERSED TILDE (lazy S)
+ = lazy S
+ * reversed tilde and lazy S are glyph variants
+223E INVERTED LAZY S
+ = most positive
+223F SINE WAVE
+ = alternating current
+2240 WREATH PRODUCT
+2241 NOT TILDE
+ : 223C 0338
+2242 MINUS TILDE
+2243 ASYMPTOTICALLY EQUAL TO
+2244 NOT ASYMPTOTICALLY EQUAL TO
+ : 2243 0338
+2245 APPROXIMATELY EQUAL TO
+2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ : 2245 0338
+2248 ALMOST EQUAL TO
+ = asymptotic to
+2249 NOT ALMOST EQUAL TO
+ : 2248 0338
+224A ALMOST EQUAL OR EQUAL TO
+224B TRIPLE TILDE
+224C ALL EQUAL TO
+ * reversed tilde and lazy S are glyph variants
+224D EQUIVALENT TO
+224E GEOMETRICALLY EQUIVALENT TO
+224F DIFFERENCE BETWEEN
+2250 APPROACHES THE LIMIT
+2251 GEOMETRICALLY EQUAL TO
+2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF
+ = nearly equals
+2253 IMAGE OF OR APPROXIMATELY EQUAL TO
+2254 COLON EQUALS
+2255 EQUALS COLON
+2256 RING IN EQUAL TO
+2257 RING EQUAL TO
+ = approximately equal to
+2258 CORRESPONDS TO
+2259 ESTIMATES
+ = corresponds to
+225A EQUIANGULAR TO
+225B STAR EQUALS
+225C DELTA EQUAL TO
+ = equiangular
+ = equal to by definition
+225D EQUAL TO BY DEFINITION
+225E MEASURED BY
+225F QUESTIONED EQUAL TO
+2260 NOT EQUAL TO
+ x (equals sign - 003D)
+ x (latin letter alveolar click - 01C2)
+ : 003D 0338
+2261 IDENTICAL TO
+2262 NOT IDENTICAL TO
+ : 2261 0338
+2263 STRICTLY EQUIVALENT TO
+2264 LESS-THAN OR EQUAL TO
+2265 GREATER-THAN OR EQUAL TO
+2266 LESS-THAN OVER EQUAL TO
+2267 GREATER-THAN OVER EQUAL TO
+2268 LESS-THAN BUT NOT EQUAL TO
+2269 GREATER-THAN BUT NOT EQUAL TO
+226A MUCH LESS-THAN
+ x (left-pointing double angle quotation mark - 00AB)
+226B MUCH GREATER-THAN
+ x (right-pointing double angle quotation mark - 00BB)
+226C BETWEEN
+ = plaintiff, quantic
+226D NOT EQUIVALENT TO
+ : 224D 0338
+226E NOT LESS-THAN
+ : 003C 0338
+226F NOT GREATER-THAN
+ : 003E 0338
+2270 NEITHER LESS-THAN NOR EQUAL TO
+ : 2264 0338
+2271 NEITHER GREATER-THAN NOR EQUAL TO
+ : 2265 0338
+2272 LESS-THAN OR EQUIVALENT TO
+2273 GREATER-THAN OR EQUIVALENT TO
+2274 NEITHER LESS-THAN NOR EQUIVALENT TO
+ : 2272 0338
+2275 NEITHER GREATER-THAN NOR EQUIVALENT TO
+ : 2273 0338
+2276 LESS-THAN OR GREATER-THAN
+2277 GREATER-THAN OR LESS-THAN
+2278 NEITHER LESS-THAN NOR GREATER-THAN
+ : 2276 0338
+2279 NEITHER GREATER-THAN NOR LESS-THAN
+ : 2277 0338
+227A PRECEDES
+ = lower rank than
+ x (precedes under relation - 22B0)
+227B SUCCEEDS
+ = higher rank than
+ x (succeeds under relation - 22B1)
+227C PRECEDES OR EQUAL TO
+227D SUCCEEDS OR EQUAL TO
+227E PRECEDES OR EQUIVALENT TO
+227F SUCCEEDS OR EQUIVALENT TO
+2280 DOES NOT PRECEDE
+ : 227A 0338
+2281 DOES NOT SUCCEED
+ : 227B 0338
+2282 SUBSET OF
+ = included in set
+2283 SUPERSET OF
+ = includes in set
+2284 NOT A SUBSET OF
+ : 2282 0338
+2285 NOT A SUPERSET OF
+ : 2283 0338
+2286 SUBSET OF OR EQUAL TO
+2287 SUPERSET OF OR EQUAL TO
+2288 NEITHER A SUBSET OF NOR EQUAL TO
+ : 2286 0338
+2289 NEITHER A SUPERSET OF NOR EQUAL TO
+ : 2287 0338
+228A SUBSET OF WITH NOT EQUAL TO
+228B SUPERSET OF WITH NOT EQUAL TO
+228C MULTISET
+228D MULTISET MULTIPLICATION
+228E MULTISET UNION
+ = z notation bag addition
+228F SQUARE IMAGE OF
+2290 SQUARE ORIGINAL OF
+2291 SQUARE IMAGE OF OR EQUAL TO
+2292 SQUARE ORIGINAL OF OR EQUAL TO
+2293 SQUARE CAP
+2294 SQUARE CUP
+2295 CIRCLED PLUS
+ = direct sum
+ = vector pointing into page
+ x (earth - 2641)
+2296 CIRCLED MINUS
+ = symmetric difference
+2297 CIRCLED TIMES
+ = tensor product
+ = vector pointing into page
+2298 CIRCLED DIVISION SLASH
+2299 CIRCLED DOT OPERATOR
+ = direct product
+ = vector pointing out of page
+ x (latin letter bilabial click - 0298)
+ x (sun - 2609)
+229A CIRCLED RING OPERATOR
+ x (apl functional symbol circle jot - 233E)
+ x (bullseye - 25CE)
+229B CIRCLED ASTERISK OPERATOR
+229C CIRCLED EQUALS
+229D CIRCLED DASH
+229E SQUARED PLUS
+229F SQUARED MINUS
+22A0 SQUARED TIMES
+ x (ballot box with x - 2612)
+22A1 SQUARED DOT OPERATOR
+22A2 RIGHT TACK
+ = turnstile
+ = proves, implies, yields
+ = reducible
+22A3 LEFT TACK
+ = reverse turnstile
+ = non-theorem, does not yield
+22A4 DOWN TACK
+ = top
+ * called up tack in APL
+22A5 UP TACK
+ = orthogonal to
+ = perpendicular
+ = base
+ * called down tack in APL
+22A6 ASSERTION
+ = reduces to
+22A7 MODELS
+22A8 TRUE
+ = statement is true, valid
+ = is a tautology
+ = satisfies
+ = results in
+22A9 FORCES
+22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC DOES NOT PROVE
+ : 22A2 0338
+22AD NOT TRUE
+ : 22A8 0338
+22AE DOES NOT FORCE
+ : 22A9 0338
+22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ : 22AB 0338
+22B0 PRECEDES UNDER RELATION
+ x (precedes - 227A)
+22B1 SUCCEEDS UNDER RELATION
+ x (succeeds - 227B)
+22B2 NORMAL SUBGROUP OF
+ x (white left-pointing pointer - 25C5)
+22B3 CONTAINS AS NORMAL SUBGROUP
+ x (white right-pointing pointer - 25BB)
+22B4 NORMAL SUBGROUP OF OR EQUAL TO
+22B5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6 ORIGINAL OF
+22B7 IMAGE OF
+22B8 MULTIMAP
+22B9 HERMITIAN CONJUGATE MATRIX
+22BA INTERCALATE
+22BB XOR
+22BC NAND
+ x (projective - 2305)
+22BD NOR
+22BE RIGHT ANGLE WITH ARC
+22BF RIGHT TRIANGLE
+22C0 N-ARY LOGICAL AND
+ x (logical and - 2227)
+22C1 N-ARY LOGICAL OR
+ x (logical or - 2228)
+22C2 N-ARY INTERSECTION
+ = z notation generalised intersection
+ x (intersection - 2229)
+22C3 N-ARY UNION
+ = z notation generalised union
+ x (union - 222A)
+22C4 DIAMOND OPERATOR
+ x (white diamond - 25C7)
+22C5 DOT OPERATOR
+ x (middle dot - 00B7)
+22C6 STAR OPERATOR
+ * APL
+ x (arabic five pointed star - 066D)
+ x (black star - 2605)
+22C7 DIVISION TIMES
+22C8 BOWTIE
+ x (ocr bow tie - 2445)
+22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB LEFT SEMIDIRECT PRODUCT
+22CC RIGHT SEMIDIRECT PRODUCT
+ x (caret insertion point - 2041)
+22CD REVERSED TILDE EQUALS
+22CE CURLY LOGICAL OR
+22CF CURLY LOGICAL AND
+22D0 DOUBLE SUBSET
+22D1 DOUBLE SUPERSET
+22D2 DOUBLE INTERSECTION
+22D3 DOUBLE UNION
+22D4 PITCHFORK
+ = proper intersection
+22D5 EQUAL AND PARALLEL TO
+ x (viewdata square - 2317)
+22D6 LESS-THAN WITH DOT
+22D7 GREATER-THAN WITH DOT
+22D8 VERY MUCH LESS-THAN
+22D9 VERY MUCH GREATER-THAN
+22DA LESS-THAN EQUAL TO OR GREATER-THAN
+22DB GREATER-THAN EQUAL TO OR LESS-THAN
+22DC EQUAL TO OR LESS-THAN
+22DD EQUAL TO OR GREATER-THAN
+22DE EQUAL TO OR PRECEDES
+22DF EQUAL TO OR SUCCEEDS
+22E0 DOES NOT PRECEDE OR EQUAL
+ : 227C 0338
+22E1 DOES NOT SUCCEED OR EQUAL
+ : 227D 0338
+22E2 NOT SQUARE IMAGE OF OR EQUAL TO
+ : 2291 0338
+22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO
+ : 2292 0338
+22E4 SQUARE IMAGE OF OR NOT EQUAL TO
+22E5 SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6 LESS-THAN BUT NOT EQUIVALENT TO
+22E7 GREATER-THAN BUT NOT EQUIVALENT TO
+22E8 PRECEDES BUT NOT EQUIVALENT TO
+22E9 SUCCEEDS BUT NOT EQUIVALENT TO
+22EA NOT NORMAL SUBGROUP OF
+ : 22B2 0338
+22EB DOES NOT CONTAIN AS NORMAL SUBGROUP
+ : 22B3 0338
+22EC NOT NORMAL SUBGROUP OF OR EQUAL TO
+ : 22B4 0338
+22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ : 22B5 0338
+22EE VERTICAL ELLIPSIS
+ * these four ellipses are used for matrix row/column elision
+ x (horizontal ellipsis - 2026)
+22EF MIDLINE HORIZONTAL ELLIPSIS
+22F0 UP RIGHT DIAGONAL ELLIPSIS
+22F1 DOWN RIGHT DIAGONAL ELLIPSIS
+@@ 2300 Miscellaneous Technical 23FF
+@ Miscellaneous technical
+2300 DIAMETER SIGN
+ x (empty set - 2205)
+2301 ELECTRIC ARROW
+ * from ISO 2047
+ * symbol for End of Transmission
+2302 HOUSE
+2303 UP ARROWHEAD
+ x (circumflex accent - 005E)
+ x (modifier letter up arrowhead - 02C4)
+ x (caret - 2038)
+ x (logical and - 2227)
+2304 DOWN ARROWHEAD
+ x (modifier letter down arrowhead - 02C5)
+ x (logical or - 2228)
+ x (countersink - 2335)
+2305 PROJECTIVE
+ x (nand - 22BC)
+2306 PERSPECTIVE
+2307 WAVY LINE
+ x (wavy dash - 3030)
+2308 LEFT CEILING
+ = APL upstile
+ x (left corner bracket - 300C)
+2309 RIGHT CEILING
+230A LEFT FLOOR
+ = APL downstile
+230B RIGHT FLOOR
+ x (right corner bracket - 300D)
+230C BOTTOM RIGHT CROP
+ * set of four "crop" corners, arranged facing outward
+230D BOTTOM LEFT CROP
+230E TOP RIGHT CROP
+230F TOP LEFT CROP
+2310 REVERSED NOT SIGN
+ = beginning of line
+ x (not sign - 00AC)
+2311 SQUARE LOZENGE
+2312 ARC
+ x (upper half circle - 25E0)
+2313 SEGMENT
+2314 SECTOR
+2315 TELEPHONE RECORDER
+2316 POSITION INDICATOR
+2317 VIEWDATA SQUARE
+ x (equal and parallel to - 22D5)
+2318 PLACE OF INTEREST SIGN
+ = COMMAND KEY
+2319 TURNED NOT SIGN
+ = line marker
+231A WATCH
+231B HOURGLASS
+231C TOP LEFT CORNER
+ * set of four "quine" corners, for quincuncial arrangement
+231D TOP RIGHT CORNER
+231E BOTTOM LEFT CORNER
+231F BOTTOM RIGHT CORNER
+2320 TOP HALF INTEGRAL
+2321 BOTTOM HALF INTEGRAL
+2322 FROWN
+ x (character tie - 2040)
+2323 SMILE
+ x (undertie - 203F)
+2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+ = ENTER KEY
+2325 OPTION KEY
+2326 ERASE TO THE RIGHT
+ = DELETE TO THE RIGHT KEY
+2327 X IN A RECTANGLE BOX
+ = CLEAR KEY
+2328 KEYBOARD
+2329 LEFT-POINTING ANGLE BRACKET
+ = BRA
+ = z notation left sequence bracket
+ x (less-than sign - 003C)
+ x (single left-pointing angle quotation mark - 2039)
+ : 3008 left angle bracket
+232A RIGHT-POINTING ANGLE BRACKET
+ = KET
+ = z notation right sequence bracket
+ x (greater-than sign - 003E)
+ x (single right-pointing angle quotation mark - 203A)
+ : 3009 right angle bracket
+232B ERASE TO THE LEFT
+ = DELETE TO THE LEFT KEY
+232C BENZENE RING
+232D CYLINDRICITY
+232E ALL AROUND-PROFILE
+232F SYMMETRY
+2330 TOTAL RUNOUT
+2331 DIMENSION ORIGIN
+2332 CONICAL TAPER
+2333 SLOPE
+2334 COUNTERBORE
+ x (open box - 2423)
+2335 COUNTERSINK
+ x (down arrowhead - 2304)
+@ APL
+2336 APL FUNCTIONAL SYMBOL I-BEAM
+2337 APL FUNCTIONAL SYMBOL SQUISH QUAD
+ x (apl functional symbol quad - 2395)
+ x (white vertical rectangle - 25AF)
+2338 APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B APL FUNCTIONAL SYMBOL QUAD JOT
+233C APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E APL FUNCTIONAL SYMBOL CIRCLE JOT
+ x (circled ring operator - 229A)
+233F APL FUNCTIONAL SYMBOL SLASH BAR
+2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341 APL FUNCTIONAL SYMBOL QUAD SLASH
+2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343 APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344 APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345 APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346 APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349 APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR *
+ x (up tack - 22A5)
+234B APL FUNCTIONAL SYMBOL DELTA STILE
+234C APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D APL FUNCTIONAL SYMBOL QUAD DELTA
+234E APL FUNCTIONAL SYMBOL DOWN TACK JOT *
+234F APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR *
+ x (down tack - 22A4)
+ x (postal mark - 3012)
+2352 APL FUNCTIONAL SYMBOL DEL STILE
+2353 APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354 APL FUNCTIONAL SYMBOL QUAD DEL
+2355 APL FUNCTIONAL SYMBOL UP TACK JOT *
+2356 APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358 APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359 APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360 APL FUNCTIONAL SYMBOL QUAD COLON
+2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS *
+2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369 APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A APL FUNCTIONAL SYMBOL COMMA BAR
+236B APL FUNCTIONAL SYMBOL DEL TILDE
+236C APL FUNCTIONAL SYMBOL ZILDE
+236D APL FUNCTIONAL SYMBOL STILE TILDE
+236E APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370 APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372 APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373 APL FUNCTIONAL SYMBOL IOTA
+2374 APL FUNCTIONAL SYMBOL RHO
+2375 APL FUNCTIONAL SYMBOL OMEGA
+2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379 APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A APL FUNCTIONAL SYMBOL ALPHA
+@ Graphics for control codes
+237B NOT CHECK MARK
+ * from ISO 2047
+ * symbol for Negative Acknowledge
+237D SHOULDERED OPEN BOX
+ * from ISO 9995-7
+ * keyboard symbol for No Break Space
+237E BELL SYMBOL
+ * from ISO 2047
+237F VERTICAL LINE WITH MIDDLE DOT
+ * from ISO 2047
+ * symbol for End of Medium
+@ Keyboard symbols from ISO 9995-7
+2380 INSERTION SYMBOL
+2381 CONTINUOUS UNDERLINE SYMBOL
+2382 DISCONTINUOUS UNDERLINE SYMBOL
+2383 EMPHASIS SYMBOL
+2384 COMPOSITION SYMBOL
+2385 WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386 ENTER SYMBOL
+2387 ALTERNATIVE KEY SYMBOL
+2388 HELM SYMBOL
+ = control
+ x (wheel of dharma - 2638)
+2389 CIRCLED HORIZONTAL BAR WITH NOTCH (pause)
+238A CIRCLED TRIANGLE DOWN (break)
+238B BROKEN CIRCLE WITH NORTHWEST ARROW (escape)
+238C UNDO SYMBOL
+@ Electrotechnical symbols from IR 181
+238D MONOSTABLE SYMBOL
+238E HYSTERESIS SYMBOL
+238F OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390 OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391 PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392 PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393 DIRECT CURRENT SYMBOL FORM TWO
+2394 SOFTWARE-FUNCTION SYMBOL
+@ APL
+2395 APL FUNCTIONAL SYMBOL QUAD
+ x (apl functional symbol squish quad - 2337)
+ x (white vertical rectangle - 25AF)
+@ Keyboard symbols from ISO 9995-7
+2396 DECIMAL SEPARATOR KEY SYMBOL
+2397 PREVIOUS PAGE
+2398 NEXT PAGE
+2399 PRINT SCREEN SYMBOL
+239A CLEAR SCREEN SYMBOL
+ x (combining enclosing screen - 20E2)
+@@ 2400 Control Pictures 243F
+@ Graphic pictures for control codes
+2400 SYMBOL FOR NULL
+2401 SYMBOL FOR START OF HEADING
+2402 SYMBOL FOR START OF TEXT
+2403 SYMBOL FOR END OF TEXT
+2404 SYMBOL FOR END OF TRANSMISSION
+2405 SYMBOL FOR ENQUIRY
+2406 SYMBOL FOR ACKNOWLEDGE
+2407 SYMBOL FOR BELL
+2408 SYMBOL FOR BACKSPACE
+2409 SYMBOL FOR HORIZONTAL TABULATION
+240A SYMBOL FOR LINE FEED
+240B SYMBOL FOR VERTICAL TABULATION
+240C SYMBOL FOR FORM FEED
+240D SYMBOL FOR CARRIAGE RETURN
+240E SYMBOL FOR SHIFT OUT
+240F SYMBOL FOR SHIFT IN
+2410 SYMBOL FOR DATA LINK ESCAPE
+2411 SYMBOL FOR DEVICE CONTROL ONE
+2412 SYMBOL FOR DEVICE CONTROL TWO
+2413 SYMBOL FOR DEVICE CONTROL THREE
+2414 SYMBOL FOR DEVICE CONTROL FOUR
+2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416 SYMBOL FOR SYNCHRONOUS IDLE
+2417 SYMBOL FOR END OF TRANSMISSION BLOCK
+2418 SYMBOL FOR CANCEL
+2419 SYMBOL FOR END OF MEDIUM
+241A SYMBOL FOR SUBSTITUTE
+241B SYMBOL FOR ESCAPE
+241C SYMBOL FOR FILE SEPARATOR
+241D SYMBOL FOR GROUP SEPARATOR
+241E SYMBOL FOR RECORD SEPARATOR
+241F SYMBOL FOR UNIT SEPARATOR
+2420 SYMBOL FOR SPACE
+2421 SYMBOL FOR DELETE
+2422 BLANK SYMBOL
+ * graphic for space
+ x (latin small letter b with stroke - 0180)
+2423 OPEN BOX
+ * graphic for space
+ x (counterbore - 2334)
+2424 SYMBOL FOR NEWLINE
+2425 SYMBOL FOR DELETE FORM TWO
+ * from ISO 9995-7
+ * keyboard symbol for undoable delete
+2426 SYMBOL FOR SUBSTITUTE FORM TWO
+ * from ISO 2047
+ x (arabic question mark - 061F)
+@@ 2440 Optical Character Recognition 245F
+@ OCR
+2440 OCR HOOK
+2441 OCR CHAIR
+2442 OCR FORK
+2443 OCR INVERTED FORK
+2444 OCR BELT BUCKLE
+2445 OCR BOW TIE
+ x (bowtie - 22C8)
+2446 OCR BRANCH BANK IDENTIFICATION
+ = transit
+2447 OCR AMOUNT OF CHECK
+2448 OCR DASH
+ = on us
+2449 OCR CUSTOMER ACCOUNT NUMBER
+ = dash
+244A OCR DOUBLE BACKSLASH
+@@ 2460 Enclosed Alphanumerics 24FF
+@ Circled numbers
+2460 CIRCLED DIGIT ONE
+ # <circle> 0031
+2461 CIRCLED DIGIT TWO
+ # <circle> 0032
+2462 CIRCLED DIGIT THREE
+ # <circle> 0033
+2463 CIRCLED DIGIT FOUR
+ # <circle> 0034
+2464 CIRCLED DIGIT FIVE
+ # <circle> 0035
+2465 CIRCLED DIGIT SIX
+ # <circle> 0036
+2466 CIRCLED DIGIT SEVEN
+ # <circle> 0037
+2467 CIRCLED DIGIT EIGHT
+ # <circle> 0038
+2468 CIRCLED DIGIT NINE
+ # <circle> 0039
+2469 CIRCLED NUMBER TEN
+ # <circle> 0031 0030
+246A CIRCLED NUMBER ELEVEN
+ # <circle> 0031 0031
+246B CIRCLED NUMBER TWELVE
+ # <circle> 0031 0032
+246C CIRCLED NUMBER THIRTEEN
+ # <circle> 0031 0033
+246D CIRCLED NUMBER FOURTEEN
+ # <circle> 0031 0034
+246E CIRCLED NUMBER FIFTEEN
+ # <circle> 0031 0035
+246F CIRCLED NUMBER SIXTEEN
+ # <circle> 0031 0036
+2470 CIRCLED NUMBER SEVENTEEN
+ # <circle> 0031 0037
+2471 CIRCLED NUMBER EIGHTEEN
+ # <circle> 0031 0038
+2472 CIRCLED NUMBER NINETEEN
+ # <circle> 0031 0039
+2473 CIRCLED NUMBER TWENTY
+ # <circle> 0032 0030
+@ Parenthesized numbers
+2474 PARENTHESIZED DIGIT ONE
+ # 0028 0031 0029
+2475 PARENTHESIZED DIGIT TWO
+ # 0028 0032 0029
+2476 PARENTHESIZED DIGIT THREE
+ # 0028 0033 0029
+2477 PARENTHESIZED DIGIT FOUR
+ # 0028 0034 0029
+2478 PARENTHESIZED DIGIT FIVE
+ # 0028 0035 0029
+2479 PARENTHESIZED DIGIT SIX
+ # 0028 0036 0029
+247A PARENTHESIZED DIGIT SEVEN
+ # 0028 0037 0029
+247B PARENTHESIZED DIGIT EIGHT
+ # 0028 0038 0029
+247C PARENTHESIZED DIGIT NINE
+ # 0028 0039 0029
+247D PARENTHESIZED NUMBER TEN
+ # 0028 0031 0030 0029
+247E PARENTHESIZED NUMBER ELEVEN
+ # 0028 0031 0031 0029
+247F PARENTHESIZED NUMBER TWELVE
+ # 0028 0031 0032 0029
+2480 PARENTHESIZED NUMBER THIRTEEN
+ # 0028 0031 0033 0029
+2481 PARENTHESIZED NUMBER FOURTEEN
+ # 0028 0031 0034 0029
+2482 PARENTHESIZED NUMBER FIFTEEN
+ # 0028 0031 0035 0029
+2483 PARENTHESIZED NUMBER SIXTEEN
+ # 0028 0031 0036 0029
+2484 PARENTHESIZED NUMBER SEVENTEEN
+ # 0028 0031 0037 0029
+2485 PARENTHESIZED NUMBER EIGHTEEN
+ # 0028 0031 0038 0029
+2486 PARENTHESIZED NUMBER NINETEEN
+ # 0028 0031 0039 0029
+2487 PARENTHESIZED NUMBER TWENTY
+ # 0028 0032 0030 0029
+@ Numbers period
+2488 DIGIT ONE FULL STOP
+ # 0031 002E
+2489 DIGIT TWO FULL STOP
+ # 0032 002E
+248A DIGIT THREE FULL STOP
+ # 0033 002E
+248B DIGIT FOUR FULL STOP
+ # 0034 002E
+248C DIGIT FIVE FULL STOP
+ # 0035 002E
+248D DIGIT SIX FULL STOP
+ # 0036 002E
+248E DIGIT SEVEN FULL STOP
+ # 0037 002E
+248F DIGIT EIGHT FULL STOP
+ # 0038 002E
+2490 DIGIT NINE FULL STOP
+ # 0039 002E
+2491 NUMBER TEN FULL STOP
+ # 0031 0030 002E
+2492 NUMBER ELEVEN FULL STOP
+ # 0031 0031 002E
+2493 NUMBER TWELVE FULL STOP
+ # 0031 0032 002E
+2494 NUMBER THIRTEEN FULL STOP
+ # 0031 0033 002E
+2495 NUMBER FOURTEEN FULL STOP
+ # 0031 0034 002E
+2496 NUMBER FIFTEEN FULL STOP
+ # 0031 0035 002E
+2497 NUMBER SIXTEEN FULL STOP
+ # 0031 0036 002E
+2498 NUMBER SEVENTEEN FULL STOP
+ # 0031 0037 002E
+2499 NUMBER EIGHTEEN FULL STOP
+ # 0031 0038 002E
+249A NUMBER NINETEEN FULL STOP
+ # 0031 0039 002E
+249B NUMBER TWENTY FULL STOP
+ # 0032 0030 002E
+@ Parenthesized Latin letters
+249C PARENTHESIZED LATIN SMALL LETTER A
+ # 0028 0061 0029
+249D PARENTHESIZED LATIN SMALL LETTER B
+ # 0028 0062 0029
+249E PARENTHESIZED LATIN SMALL LETTER C
+ # 0028 0063 0029
+249F PARENTHESIZED LATIN SMALL LETTER D
+ # 0028 0064 0029
+24A0 PARENTHESIZED LATIN SMALL LETTER E
+ # 0028 0065 0029
+24A1 PARENTHESIZED LATIN SMALL LETTER F
+ # 0028 0066 0029
+24A2 PARENTHESIZED LATIN SMALL LETTER G
+ # 0028 0067 0029
+24A3 PARENTHESIZED LATIN SMALL LETTER H
+ # 0028 0068 0029
+24A4 PARENTHESIZED LATIN SMALL LETTER I
+ # 0028 0069 0029
+24A5 PARENTHESIZED LATIN SMALL LETTER J
+ # 0028 006A 0029
+24A6 PARENTHESIZED LATIN SMALL LETTER K
+ # 0028 006B 0029
+24A7 PARENTHESIZED LATIN SMALL LETTER L
+ # 0028 006C 0029
+24A8 PARENTHESIZED LATIN SMALL LETTER M
+ # 0028 006D 0029
+24A9 PARENTHESIZED LATIN SMALL LETTER N
+ # 0028 006E 0029
+24AA PARENTHESIZED LATIN SMALL LETTER O
+ # 0028 006F 0029
+24AB PARENTHESIZED LATIN SMALL LETTER P
+ # 0028 0070 0029
+24AC PARENTHESIZED LATIN SMALL LETTER Q
+ # 0028 0071 0029
+24AD PARENTHESIZED LATIN SMALL LETTER R
+ # 0028 0072 0029
+24AE PARENTHESIZED LATIN SMALL LETTER S
+ # 0028 0073 0029
+24AF PARENTHESIZED LATIN SMALL LETTER T
+ # 0028 0074 0029
+24B0 PARENTHESIZED LATIN SMALL LETTER U
+ # 0028 0075 0029
+24B1 PARENTHESIZED LATIN SMALL LETTER V
+ # 0028 0076 0029
+24B2 PARENTHESIZED LATIN SMALL LETTER W
+ # 0028 0077 0029
+24B3 PARENTHESIZED LATIN SMALL LETTER X
+ # 0028 0078 0029
+24B4 PARENTHESIZED LATIN SMALL LETTER Y
+ # 0028 0079 0029
+24B5 PARENTHESIZED LATIN SMALL LETTER Z
+ # 0028 007A 0029
+@ Circled Latin letters
+24B6 CIRCLED LATIN CAPITAL LETTER A
+ # <circle> 0041
+24B7 CIRCLED LATIN CAPITAL LETTER B
+ # <circle> 0042
+24B8 CIRCLED LATIN CAPITAL LETTER C
+ # <circle> 0043
+24B9 CIRCLED LATIN CAPITAL LETTER D
+ # <circle> 0044
+24BA CIRCLED LATIN CAPITAL LETTER E
+ # <circle> 0045
+24BB CIRCLED LATIN CAPITAL LETTER F
+ # <circle> 0046
+24BC CIRCLED LATIN CAPITAL LETTER G
+ # <circle> 0047
+24BD CIRCLED LATIN CAPITAL LETTER H
+ # <circle> 0048
+24BE CIRCLED LATIN CAPITAL LETTER I
+ # <circle> 0049
+24BF CIRCLED LATIN CAPITAL LETTER J
+ # <circle> 004A
+24C0 CIRCLED LATIN CAPITAL LETTER K
+ # <circle> 004B
+24C1 CIRCLED LATIN CAPITAL LETTER L
+ # <circle> 004C
+24C2 CIRCLED LATIN CAPITAL LETTER M
+ # <circle> 004D
+24C3 CIRCLED LATIN CAPITAL LETTER N
+ # <circle> 004E
+24C4 CIRCLED LATIN CAPITAL LETTER O
+ # <circle> 004F
+24C5 CIRCLED LATIN CAPITAL LETTER P
+ # <circle> 0050
+24C6 CIRCLED LATIN CAPITAL LETTER Q
+ # <circle> 0051
+24C7 CIRCLED LATIN CAPITAL LETTER R
+ # <circle> 0052
+24C8 CIRCLED LATIN CAPITAL LETTER S
+ # <circle> 0053
+24C9 CIRCLED LATIN CAPITAL LETTER T
+ # <circle> 0054
+24CA CIRCLED LATIN CAPITAL LETTER U
+ # <circle> 0055
+24CB CIRCLED LATIN CAPITAL LETTER V
+ # <circle> 0056
+24CC CIRCLED LATIN CAPITAL LETTER W
+ # <circle> 0057
+24CD CIRCLED LATIN CAPITAL LETTER X
+ # <circle> 0058
+24CE CIRCLED LATIN CAPITAL LETTER Y
+ # <circle> 0059
+24CF CIRCLED LATIN CAPITAL LETTER Z
+ # <circle> 005A
+24D0 CIRCLED LATIN SMALL LETTER A
+ # <circle> 0061
+24D1 CIRCLED LATIN SMALL LETTER B
+ # <circle> 0062
+24D2 CIRCLED LATIN SMALL LETTER C
+ # <circle> 0063
+24D3 CIRCLED LATIN SMALL LETTER D
+ # <circle> 0064
+24D4 CIRCLED LATIN SMALL LETTER E
+ # <circle> 0065
+24D5 CIRCLED LATIN SMALL LETTER F
+ # <circle> 0066
+24D6 CIRCLED LATIN SMALL LETTER G
+ # <circle> 0067
+24D7 CIRCLED LATIN SMALL LETTER H
+ # <circle> 0068
+24D8 CIRCLED LATIN SMALL LETTER I
+ # <circle> 0069
+24D9 CIRCLED LATIN SMALL LETTER J
+ # <circle> 006A
+24DA CIRCLED LATIN SMALL LETTER K
+ # <circle> 006B
+24DB CIRCLED LATIN SMALL LETTER L
+ # <circle> 006C
+24DC CIRCLED LATIN SMALL LETTER M
+ # <circle> 006D
+24DD CIRCLED LATIN SMALL LETTER N
+ # <circle> 006E
+24DE CIRCLED LATIN SMALL LETTER O
+ # <circle> 006F
+24DF CIRCLED LATIN SMALL LETTER P
+ # <circle> 0070
+24E0 CIRCLED LATIN SMALL LETTER Q
+ # <circle> 0071
+24E1 CIRCLED LATIN SMALL LETTER R
+ # <circle> 0072
+24E2 CIRCLED LATIN SMALL LETTER S
+ # <circle> 0073
+24E3 CIRCLED LATIN SMALL LETTER T
+ # <circle> 0074
+24E4 CIRCLED LATIN SMALL LETTER U
+ # <circle> 0075
+24E5 CIRCLED LATIN SMALL LETTER V
+ # <circle> 0076
+24E6 CIRCLED LATIN SMALL LETTER W
+ # <circle> 0077
+24E7 CIRCLED LATIN SMALL LETTER X
+ # <circle> 0078
+24E8 CIRCLED LATIN SMALL LETTER Y
+ # <circle> 0079
+24E9 CIRCLED LATIN SMALL LETTER Z
+ # <circle> 007A
+@ Additional circled numbers
+24EA CIRCLED DIGIT ZERO
+ # <circle> 0030
+@@ 2500 Box Drawing 257F
+@ Form and chart components
+2500 BOX DRAWINGS LIGHT HORIZONTAL
+ = Videotex Mosaic DG 15
+2501 BOX DRAWINGS HEAVY HORIZONTAL
+2502 BOX DRAWINGS LIGHT VERTICAL
+ = Videotex Mosaic DG 14
+2503 BOX DRAWINGS HEAVY VERTICAL
+2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
+ = Videotex Mosaic DG 16
+250D BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
+ = Videotex Mosaic DG 17
+2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513 BOX DRAWINGS HEAVY DOWN AND LEFT
+2514 BOX DRAWINGS LIGHT UP AND RIGHT
+ = Videotex Mosaic DG 18
+2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517 BOX DRAWINGS HEAVY UP AND RIGHT
+2518 BOX DRAWINGS LIGHT UP AND LEFT
+ = Videotex Mosaic DG 19
+2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B BOX DRAWINGS HEAVY UP AND LEFT
+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ = Videotex Mosaic DG 20
+251D BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+ = Videotex Mosaic DG 03
+251E BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ = Videotex Mosaic DG 21
+2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+ = Videotex Mosaic DG 04
+2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ = Videotex Mosaic DG 22
+252D BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+ = Videotex Mosaic DG 02
+2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ = Videotex Mosaic DG 23
+2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+ = Videotex Mosaic DG 01
+2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ = Videotex Mosaic DG 24
+253D BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+ = Videotex Mosaic DG 13
+2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550 BOX DRAWINGS DOUBLE HORIZONTAL
+2551 BOX DRAWINGS DOUBLE VERTICAL
+2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A BOX DRAWINGS DOUBLE UP AND RIGHT
+255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D BOX DRAWINGS DOUBLE UP AND LEFT
+255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574 BOX DRAWINGS LIGHT LEFT
+2575 BOX DRAWINGS LIGHT UP
+2576 BOX DRAWINGS LIGHT RIGHT
+2577 BOX DRAWINGS LIGHT DOWN
+2578 BOX DRAWINGS HEAVY LEFT
+2579 BOX DRAWINGS HEAVY UP
+257A BOX DRAWINGS HEAVY RIGHT
+257B BOX DRAWINGS HEAVY DOWN
+257C BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+@@ 2580 Block Elements 259F
+@ Block elements
+2580 UPPER HALF BLOCK
+2581 LOWER ONE EIGHTH BLOCK
+2582 LOWER ONE QUARTER BLOCK
+2583 LOWER THREE EIGHTHS BLOCK
+2584 LOWER HALF BLOCK
+2585 LOWER FIVE EIGHTHS BLOCK
+2586 LOWER THREE QUARTERS BLOCK
+2587 LOWER SEVEN EIGHTHS BLOCK
+2588 FULL BLOCK
+ = solid
+ x (black square - 25A0)
+2589 LEFT SEVEN EIGHTHS BLOCK
+258A LEFT THREE QUARTERS BLOCK
+258B LEFT FIVE EIGHTHS BLOCK
+258C LEFT HALF BLOCK
+258D LEFT THREE EIGHTHS BLOCK
+258E LEFT ONE QUARTER BLOCK
+258F LEFT ONE EIGHTH BLOCK
+2590 RIGHT HALF BLOCK
+@ Shade characters
+2591 LIGHT SHADE
+ * 25%
+2592 MEDIUM SHADE
+ * 50%
+2593 DARK SHADE
+ * 75%
+@ Block elements
+2594 UPPER ONE EIGHTH BLOCK
+2595 RIGHT ONE EIGHTH BLOCK
+@@ 25A0 Geometric Shapes 25FF
+@ Geometric shapes
+25A0 BLACK SQUARE
+ x (full block - 2588)
+25A1 WHITE SQUARE
+ = quadrature
+ x (combining enclosing square - 20DE)
+ x (ballot box - 2610)
+25A2 WHITE SQUARE WITH ROUNDED CORNERS
+25A3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4 SQUARE WITH HORIZONTAL FILL
+25A5 SQUARE WITH VERTICAL FILL
+25A6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9 SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA BLACK SMALL SQUARE
+25AB WHITE SMALL SQUARE
+25AC BLACK RECTANGLE
+25AD WHITE RECTANGLE
+25AE BLACK VERTICAL RECTANGLE
+ = histogram marker
+ x (end of proof - 220E)
+25AF WHITE VERTICAL RECTANGLE
+ x (apl functional symbol squish quad - 2337)
+ x (apl functional symbol quad - 2395)
+25B0 BLACK PARALLELOGRAM
+25B1 WHITE PARALLELOGRAM
+25B2 BLACK UP-POINTING TRIANGLE
+25B3 WHITE UP-POINTING TRIANGLE
+ = trine
+ x (increment - 2206)
+25B4 BLACK UP-POINTING SMALL TRIANGLE
+25B5 WHITE UP-POINTING SMALL TRIANGLE
+25B6 BLACK RIGHT-POINTING TRIANGLE
+25B7 WHITE RIGHT-POINTING TRIANGLE
+ = z notation range restriction
+25B8 BLACK RIGHT-POINTING SMALL TRIANGLE
+ x (triangular bullet - 2023)
+25B9 WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA BLACK RIGHT-POINTING POINTER
+25BB WHITE RIGHT-POINTING POINTER
+ = forward arrow indicator
+ x (contains as normal subgroup - 22B3)
+25BC BLACK DOWN-POINTING TRIANGLE
+25BD WHITE DOWN-POINTING TRIANGLE
+ x (nabla - 2207)
+25BE BLACK DOWN-POINTING SMALL TRIANGLE
+25BF WHITE DOWN-POINTING SMALL TRIANGLE
+25C0 BLACK LEFT-POINTING TRIANGLE
+25C1 WHITE LEFT-POINTING TRIANGLE
+ = z notation domain restriction
+25C2 BLACK LEFT-POINTING SMALL TRIANGLE
+25C3 WHITE LEFT-POINTING SMALL TRIANGLE
+25C4 BLACK LEFT-POINTING POINTER
+25C5 WHITE LEFT-POINTING POINTER
+ = backward arrow indicator
+ x (normal subgroup of - 22B2)
+25C6 BLACK DIAMOND
+ x (black diamond suit - 2666)
+25C7 WHITE DIAMOND
+ x (combining enclosing diamond - 20DF)
+ x (diamond operator - 22C4)
+ x (white diamond suit - 2662)
+25C8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9 FISHEYE
+ = tainome (Japanese, a kind of bullet)
+25CA LOZENGE
+ x (white diamond suit - 2662)
+25CB WHITE CIRCLE
+ x (combining enclosing circle - 20DD)
+ x (large circle - 25EF)
+ x (ideographic number zero - 3007)
+25CC DOTTED CIRCLE
+25CD CIRCLE WITH VERTICAL FILL
+25CE BULLSEYE
+ x (circled ring operator - 229A)
+25CF BLACK CIRCLE
+25D0 CIRCLE WITH LEFT HALF BLACK
+25D1 CIRCLE WITH RIGHT HALF BLACK
+25D2 CIRCLE WITH LOWER HALF BLACK
+25D3 CIRCLE WITH UPPER HALF BLACK
+25D4 CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5 CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6 LEFT HALF BLACK CIRCLE
+25D7 RIGHT HALF BLACK CIRCLE
+25D8 INVERSE BULLET
+ x (bullet - 2022)
+ x (white bullet - 25E6)
+25D9 INVERSE WHITE CIRCLE
+25DA UPPER HALF INVERSE WHITE CIRCLE
+25DB LOWER HALF INVERSE WHITE CIRCLE
+25DC UPPER LEFT QUADRANT CIRCULAR ARC
+25DD UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF LOWER LEFT QUADRANT CIRCULAR ARC
+25E0 UPPER HALF CIRCLE
+ x (arc - 2312)
+25E1 LOWER HALF CIRCLE
+25E2 BLACK LOWER RIGHT TRIANGLE
+25E3 BLACK LOWER LEFT TRIANGLE
+25E4 BLACK UPPER LEFT TRIANGLE
+25E5 BLACK UPPER RIGHT TRIANGLE
+25E6 WHITE BULLET
+ x (bullet - 2022)
+ x (ring operator - 2218)
+ x (inverse bullet - 25D8)
+25E7 SQUARE WITH LEFT HALF BLACK
+25E8 SQUARE WITH RIGHT HALF BLACK
+25E9 SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC WHITE UP-POINTING TRIANGLE WITH DOT
+25ED UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF LARGE CIRCLE
+ x (combining enclosing circle - 20DD)
+ x (white circle - 25CB)
+ x (ideographic number zero - 3007)
+@ Control code graphics
+25F0 WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1 WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2 WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3 WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4 WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5 WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6 WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7 WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+@@ 2600 Miscellaneous Symbols 26FF
+@ Weather and astrological symbols
+2600 BLACK SUN WITH RAYS
+ = clear weather
+ x (sun - 2609)
+2601 CLOUD
+ = cloudy weather
+2602 UMBRELLA
+ = rainy weather
+2603 SNOWMAN
+ = snowy weather
+2604 COMET
+2605 BLACK STAR
+ x (star operator - 22C6)
+2606 WHITE STAR
+ x (stress outlined white star - 2729)
+2607 LIGHTNING
+2608 THUNDERSTORM
+2609 SUN
+ x (circled dot operator - 2299)
+ x (black sun with rays - 2600)
+ x (white sun with rays - 263C)
+260A ASCENDING NODE
+260B DESCENDING NODE
+260C CONJUNCTION
+260D OPPOSITION
+@ Miscellaneous symbols
+260E BLACK TELEPHONE
+260F WHITE TELEPHONE
+2610 BALLOT BOX
+ x (white square - 25A1)
+2611 BALLOT BOX WITH CHECK
+2612 BALLOT BOX WITH X
+ x (squared times - 22A0)
+2613 SALTIRE
+ = St. Andrew's Cross
+ x (ballot x - 2717)
+2619 REVERSED ROTATED FLORAL HEART BULLET
+ * a binding signature mark
+ x (rotated floral heart bullet - 2767)
+@ Pointing hand symbols
+261A BLACK LEFT POINTING INDEX
+261B BLACK RIGHT POINTING INDEX
+261C WHITE LEFT POINTING INDEX
+261D WHITE UP POINTING INDEX
+261E WHITE RIGHT POINTING INDEX
+ = fist (typographic term)
+261F WHITE DOWN POINTING INDEX
+@ Warning signs
+2620 SKULL AND CROSSBONES
+ = poison
+2621 CAUTION SIGN
+2622 RADIOACTIVE SIGN
+2623 BIOHAZARD SIGN
+@ Medical and healing symbols
+2624 CADUCEUS
+2625 ANKH
+@ Religious and political symbols
+2626 ORTHODOX CROSS
+2627 CHI RHO
+2628 CROSS OF LORRAINE
+2629 CROSS OF JERUSALEM
+262A STAR AND CRESCENT
+262B FARSI SYMBOL
+ = SYMBOL OF IRAN
+262C ADI SHAKTI
+262D HAMMER AND SICKLE
+262E PEACE SYMBOL
+262F YIN YANG
+ x (tibetan symbol nor bu nyis -khyil - 0FCA)
+@ Yijing trigram symbols
+2630 TRIGRAM FOR HEAVEN
+ = qian2
+2631 TRIGRAM FOR LAKE
+ = dui4
+2632 TRIGRAM FOR FIRE
+ = li2
+2633 TRIGRAM FOR THUNDER
+ = zhen4
+2634 TRIGRAM FOR WIND
+ = xun4
+2635 TRIGRAM FOR WATER
+ = kan3
+2636 TRIGRAM FOR MOUNTAIN
+ = gen4
+2637 TRIGRAM FOR EARTH
+ = kun1
+@ Miscellaneous symbols
+2638 WHEEL OF DHARMA
+ x (helm symbol - 2388)
+2639 WHITE FROWNING FACE
+263A WHITE SMILING FACE
+ = have a nice day!
+263B BLACK SMILING FACE
+263C WHITE SUN WITH RAYS
+ = compass
+ x (sun - 2609)
+@ Astrological symbols
+263D FIRST QUARTER MOON
+263E LAST QUARTER MOON
+263F MERCURY
+2640 FEMALE SIGN
+ = Venus
+2641 EARTH
+ x (circled plus - 2295)
+2642 MALE SIGN
+ = Mars
+2643 JUPITER
+2644 SATURN
+2645 URANUS
+2646 NEPTUNE
+2647 PLUTO
+@ Zodiacal symbols
+2648 ARIES
+2649 TAURUS
+264A GEMINI
+264B CANCER
+264C LEO
+264D VIRGO
+ = minim (alternate glyph)
+264E LIBRA
+264F SCORPIUS
+ = minim, drop
+2650 SAGITTARIUS
+2651 CAPRICORN
+2652 AQUARIUS
+2653 PISCES
+@ Chess symbols
+2654 WHITE CHESS KING
+2655 WHITE CHESS QUEEN
+2656 WHITE CHESS ROOK
+2657 WHITE CHESS BISHOP
+2658 WHITE CHESS KNIGHT
+2659 WHITE CHESS PAWN
+265A BLACK CHESS KING
+265B BLACK CHESS QUEEN
+265C BLACK CHESS ROOK
+265D BLACK CHESS BISHOP
+265E BLACK CHESS KNIGHT
+265F BLACK CHESS PAWN
+@ Playing card symbols
+2660 BLACK SPADE SUIT
+2661 WHITE HEART SUIT
+2662 WHITE DIAMOND SUIT
+ x (white diamond - 25C7)
+ x (lozenge - 25CA)
+2663 BLACK CLUB SUIT
+ = shamrock
+2664 WHITE SPADE SUIT
+2665 BLACK HEART SUIT
+ = valentine
+ x (heavy black heart - 2764)
+2666 BLACK DIAMOND SUIT
+ x (black diamond - 25C6)
+2667 WHITE CLUB SUIT
+@ Miscellaneous symbol
+2668 HOT SPRINGS
+@ Musical symbols
+2669 QUARTER NOTE
+266A EIGHTH NOTE
+266B BEAMED EIGHTH NOTES
+266C BEAMED SIXTEENTH NOTES
+266D MUSIC FLAT SIGN
+266E MUSIC NATURAL SIGN
+266F MUSIC SHARP SIGN
+ = z notation infix bag count
+@ Syriac cross symbols
+@+ These symbols are used in liturgical texts of Syriac-speaking churches.
+2670 WEST SYRIAC CROSS
+2671 EAST SYRIAC CROSS
+@@ 2700 Dingbats 27BF
+@+ ITC Zapf dingbats series 100
+@ Miscellaneous
+2701 UPPER BLADE SCISSORS
+2702 BLACK SCISSORS
+2703 LOWER BLADE SCISSORS
+2704 WHITE SCISSORS
+2705 <reserved>
+ x (black telephone - 260E)
+2706 TELEPHONE LOCATION SIGN
+2707 TAPE DRIVE
+2708 AIRPLANE
+2709 ENVELOPE
+270A <reserved>
+ x (black right pointing index - 261B)
+270B <reserved>
+ x (white right pointing index - 261E)
+270C VICTORY HAND
+270D WRITING HAND
+270E LOWER RIGHT PENCIL
+270F PENCIL
+2710 UPPER RIGHT PENCIL
+2711 WHITE NIB
+2712 BLACK NIB
+2713 CHECK MARK
+ x (square root - 221A)
+2714 HEAVY CHECK MARK
+2715 MULTIPLICATION X
+ x (multiplication sign - 00D7)
+ x (box drawings light diagonal cross - 2573)
+2716 HEAVY MULTIPLICATION X
+2717 BALLOT X
+ x (saltire - 2613)
+2718 HEAVY BALLOT X
+@ Crosses
+2719 OUTLINED GREEK CROSS
+271A HEAVY GREEK CROSS
+271B OPEN CENTRE CROSS
+271C HEAVY OPEN CENTRE CROSS
+271D LATIN CROSS
+271E SHADOWED WHITE LATIN CROSS
+271F OUTLINED LATIN CROSS
+2720 MALTESE CROSS
+@ Stars, asterisks and snowflakes
+2721 STAR OF DAVID
+2722 FOUR TEARDROP-SPOKED ASTERISK
+2723 FOUR BALLOON-SPOKED ASTERISK
+2724 HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725 FOUR CLUB-SPOKED ASTERISK
+2726 BLACK FOUR POINTED STAR
+2727 WHITE FOUR POINTED STAR
+2728 <reserved>
+ x (black star - 2605)
+2729 STRESS OUTLINED WHITE STAR
+ x (white star - 2606)
+272A CIRCLED WHITE STAR
+272B OPEN CENTRE BLACK STAR
+272C BLACK CENTRE WHITE STAR
+272D OUTLINED BLACK STAR
+272E HEAVY OUTLINED BLACK STAR
+272F PINWHEEL STAR
+2730 SHADOWED WHITE STAR
+2731 HEAVY ASTERISK
+ x (asterisk - 002A)
+2732 OPEN CENTRE ASTERISK
+2733 EIGHT SPOKED ASTERISK
+2734 EIGHT POINTED BLACK STAR
+2735 EIGHT POINTED PINWHEEL STAR
+2736 SIX POINTED BLACK STAR
+ = sextile
+2737 EIGHT POINTED RECTILINEAR BLACK STAR
+2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739 TWELVE POINTED BLACK STAR
+273A SIXTEEN POINTED ASTERISK
+ = starburst
+273B TEARDROP-SPOKED ASTERISK
+273C OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D HEAVY TEARDROP-SPOKED ASTERISK
+273E SIX PETALLED BLACK AND WHITE FLORETTE
+273F BLACK FLORETTE
+2740 WHITE FLORETTE
+2741 EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744 SNOWFLAKE
+2745 TIGHT TRIFOLIATE SNOWFLAKE
+2746 HEAVY CHEVRON SNOWFLAKE
+2747 SPARKLE
+2748 HEAVY SPARKLE
+2749 BALLOON-SPOKED ASTERISK
+ = jack
+274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+ = turbofan
+@ Miscellaneous
+274C <reserved>
+ x (black circle - 25CF)
+274D SHADOWED WHITE CIRCLE
+274E <reserved>
+ x (black square - 25A0)
+274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751 LOWER RIGHT SHADOWED WHITE SQUARE
+2752 UPPER RIGHT SHADOWED WHITE SQUARE
+2753 <reserved>
+ x (black up-pointing triangle - 25B2)
+2754 <reserved>
+ x (black down-pointing triangle - 25BC)
+2755 <reserved>
+ x (black diamond - 25C6)
+2756 BLACK DIAMOND MINUS WHITE X
+2757 <reserved>
+ x (right half black circle - 25D7)
+2758 LIGHT VERTICAL BAR
+ x (vertical line - 007C)
+2759 MEDIUM VERTICAL BAR
+275A HEAVY VERTICAL BAR
+@ Punctuation ornaments
+275B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+ x (left single quotation mark - 2018)
+275C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+ x (right single quotation mark - 2019)
+275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+ x (left double quotation mark - 201C)
+275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+ x (right double quotation mark - 201D)
+2761 CURVED STEM PARAGRAPH SIGN ORNAMENT
+ x (pilcrow sign - 00B6)
+2762 HEAVY EXCLAMATION MARK ORNAMENT
+ x (exclamation mark - 0021)
+2763 HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764 HEAVY BLACK HEART
+ x (black heart suit - 2665)
+2765 ROTATED HEAVY BLACK HEART BULLET
+2766 FLORAL HEART
+ = Aldus leaf
+2767 ROTATED FLORAL HEART BULLET
+ = hedera, ivy leaf
+ x (reversed rotated floral heart bullet - 2619)
+2768 <reserved>
+ x (black club suit - 2663)
+2769 <reserved>
+ x (black diamond suit - 2666)
+276A <reserved>
+ x (black heart suit - 2665)
+276B <reserved>
+ x (black spade suit - 2660)
+@ Dingbat circled digits
+276C <reserved>
+ x (circled digit one - 2460)
+276D <reserved>
+ x (circled digit two - 2461)
+276E <reserved>
+ x (circled digit three - 2462)
+276F <reserved>
+ x (circled digit four - 2463)
+2770 <reserved>
+ x (circled digit five - 2464)
+2771 <reserved>
+ x (circled digit six - 2465)
+2772 <reserved>
+ x (circled digit seven - 2466)
+2773 <reserved>
+ x (circled digit eight - 2467)
+2774 <reserved>
+ x (circled digit nine - 2468)
+2775 <reserved>
+ x (circled number ten - 2469)
+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277A DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277B DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277C DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277D DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277E DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277F DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278A DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278B DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278D DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278E DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278F DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+@ Dingbat arrows
+2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2795 <reserved>
+ x (rightwards arrow - 2192)
+2796 <reserved>
+ x (left right arrow - 2194)
+2797 <reserved>
+ x (up down arrow - 2195)
+2798 HEAVY SOUTH EAST ARROW
+2799 HEAVY RIGHTWARDS ARROW
+279A HEAVY NORTH EAST ARROW
+279B DRAFTING POINT RIGHTWARDS ARROW
+279C HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D TRIANGLE-HEADED RIGHTWARDS ARROW
+279E HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1 BLACK RIGHTWARDS ARROW
+27A2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4 BLACK RIGHTWARDS ARROWHEAD
+27A5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7 SQUAT BLACK RIGHTWARDS ARROW
+27A8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9 RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3 WHITE-FEATHERED RIGHTWARDS ARROW
+27B4 BLACK-FEATHERED SOUTH EAST ARROW
+27B5 BLACK-FEATHERED RIGHTWARDS ARROW
+27B6 BLACK-FEATHERED NORTH EAST ARROW
+27B7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9 HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA TEARDROP-BARBED RIGHTWARDS ARROW
+27BB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC WEDGE-TAILED RIGHTWARDS ARROW
+27BD HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE OPEN-OUTLINED RIGHTWARDS ARROW
+@@ 2800 Braille Patterns 28FF
+@ Braille patterns
+2800 BRAILLE PATTERN BLANK
+2801 BRAILLE PATTERN DOTS-1
+2802 BRAILLE PATTERN DOTS-2
+2803 BRAILLE PATTERN DOTS-12
+2804 BRAILLE PATTERN DOTS-3
+2805 BRAILLE PATTERN DOTS-13
+2806 BRAILLE PATTERN DOTS-23
+2807 BRAILLE PATTERN DOTS-123
+2808 BRAILLE PATTERN DOTS-4
+2809 BRAILLE PATTERN DOTS-14
+280A BRAILLE PATTERN DOTS-24
+280B BRAILLE PATTERN DOTS-124
+280C BRAILLE PATTERN DOTS-34
+280D BRAILLE PATTERN DOTS-134
+280E BRAILLE PATTERN DOTS-234
+280F BRAILLE PATTERN DOTS-1234
+2810 BRAILLE PATTERN DOTS-5
+2811 BRAILLE PATTERN DOTS-15
+2812 BRAILLE PATTERN DOTS-25
+2813 BRAILLE PATTERN DOTS-125
+2814 BRAILLE PATTERN DOTS-35
+2815 BRAILLE PATTERN DOTS-135
+2816 BRAILLE PATTERN DOTS-235
+2817 BRAILLE PATTERN DOTS-1235
+2818 BRAILLE PATTERN DOTS-45
+2819 BRAILLE PATTERN DOTS-145
+281A BRAILLE PATTERN DOTS-245
+281B BRAILLE PATTERN DOTS-1245
+281C BRAILLE PATTERN DOTS-345
+281D BRAILLE PATTERN DOTS-1345
+281E BRAILLE PATTERN DOTS-2345
+281F BRAILLE PATTERN DOTS-12345
+2820 BRAILLE PATTERN DOTS-6
+2821 BRAILLE PATTERN DOTS-16
+2822 BRAILLE PATTERN DOTS-26
+2823 BRAILLE PATTERN DOTS-126
+2824 BRAILLE PATTERN DOTS-36
+2825 BRAILLE PATTERN DOTS-136
+2826 BRAILLE PATTERN DOTS-236
+2827 BRAILLE PATTERN DOTS-1236
+2828 BRAILLE PATTERN DOTS-46
+2829 BRAILLE PATTERN DOTS-146
+282A BRAILLE PATTERN DOTS-246
+282B BRAILLE PATTERN DOTS-1246
+282C BRAILLE PATTERN DOTS-346
+282D BRAILLE PATTERN DOTS-1346
+282E BRAILLE PATTERN DOTS-2346
+282F BRAILLE PATTERN DOTS-12346
+2830 BRAILLE PATTERN DOTS-56
+2831 BRAILLE PATTERN DOTS-156
+2832 BRAILLE PATTERN DOTS-256
+2833 BRAILLE PATTERN DOTS-1256
+2834 BRAILLE PATTERN DOTS-356
+2835 BRAILLE PATTERN DOTS-1356
+2836 BRAILLE PATTERN DOTS-2356
+2837 BRAILLE PATTERN DOTS-12356
+2838 BRAILLE PATTERN DOTS-456
+2839 BRAILLE PATTERN DOTS-1456
+283A BRAILLE PATTERN DOTS-2456
+283B BRAILLE PATTERN DOTS-12456
+283C BRAILLE PATTERN DOTS-3456
+283D BRAILLE PATTERN DOTS-13456
+283E BRAILLE PATTERN DOTS-23456
+283F BRAILLE PATTERN DOTS-123456
+2840 BRAILLE PATTERN DOTS-7
+2841 BRAILLE PATTERN DOTS-17
+2842 BRAILLE PATTERN DOTS-27
+2843 BRAILLE PATTERN DOTS-127
+2844 BRAILLE PATTERN DOTS-37
+2845 BRAILLE PATTERN DOTS-137
+2846 BRAILLE PATTERN DOTS-237
+2847 BRAILLE PATTERN DOTS-1237
+2848 BRAILLE PATTERN DOTS-47
+2849 BRAILLE PATTERN DOTS-147
+284A BRAILLE PATTERN DOTS-247
+284B BRAILLE PATTERN DOTS-1247
+284C BRAILLE PATTERN DOTS-347
+284D BRAILLE PATTERN DOTS-1347
+284E BRAILLE PATTERN DOTS-2347
+284F BRAILLE PATTERN DOTS-12347
+2850 BRAILLE PATTERN DOTS-57
+2851 BRAILLE PATTERN DOTS-157
+2852 BRAILLE PATTERN DOTS-257
+2853 BRAILLE PATTERN DOTS-1257
+2854 BRAILLE PATTERN DOTS-357
+2855 BRAILLE PATTERN DOTS-1357
+2856 BRAILLE PATTERN DOTS-2357
+2857 BRAILLE PATTERN DOTS-12357
+2858 BRAILLE PATTERN DOTS-457
+2859 BRAILLE PATTERN DOTS-1457
+285A BRAILLE PATTERN DOTS-2457
+285B BRAILLE PATTERN DOTS-12457
+285C BRAILLE PATTERN DOTS-3457
+285D BRAILLE PATTERN DOTS-13457
+285E BRAILLE PATTERN DOTS-23457
+285F BRAILLE PATTERN DOTS-123457
+2860 BRAILLE PATTERN DOTS-67
+2861 BRAILLE PATTERN DOTS-167
+2862 BRAILLE PATTERN DOTS-267
+2863 BRAILLE PATTERN DOTS-1267
+2864 BRAILLE PATTERN DOTS-367
+2865 BRAILLE PATTERN DOTS-1367
+2866 BRAILLE PATTERN DOTS-2367
+2867 BRAILLE PATTERN DOTS-12367
+2868 BRAILLE PATTERN DOTS-467
+2869 BRAILLE PATTERN DOTS-1467
+286A BRAILLE PATTERN DOTS-2467
+286B BRAILLE PATTERN DOTS-12467
+286C BRAILLE PATTERN DOTS-3467
+286D BRAILLE PATTERN DOTS-13467
+286E BRAILLE PATTERN DOTS-23467
+286F BRAILLE PATTERN DOTS-123467
+2870 BRAILLE PATTERN DOTS-567
+2871 BRAILLE PATTERN DOTS-1567
+2872 BRAILLE PATTERN DOTS-2567
+2873 BRAILLE PATTERN DOTS-12567
+2874 BRAILLE PATTERN DOTS-3567
+2875 BRAILLE PATTERN DOTS-13567
+2876 BRAILLE PATTERN DOTS-23567
+2877 BRAILLE PATTERN DOTS-123567
+2878 BRAILLE PATTERN DOTS-4567
+2879 BRAILLE PATTERN DOTS-14567
+287A BRAILLE PATTERN DOTS-24567
+287B BRAILLE PATTERN DOTS-124567
+287C BRAILLE PATTERN DOTS-34567
+287D BRAILLE PATTERN DOTS-134567
+287E BRAILLE PATTERN DOTS-234567
+287F BRAILLE PATTERN DOTS-1234567
+2880 BRAILLE PATTERN DOTS-8
+2881 BRAILLE PATTERN DOTS-18
+2882 BRAILLE PATTERN DOTS-28
+2883 BRAILLE PATTERN DOTS-128
+2884 BRAILLE PATTERN DOTS-38
+2885 BRAILLE PATTERN DOTS-138
+2886 BRAILLE PATTERN DOTS-238
+2887 BRAILLE PATTERN DOTS-1238
+2888 BRAILLE PATTERN DOTS-48
+2889 BRAILLE PATTERN DOTS-148
+288A BRAILLE PATTERN DOTS-248
+288B BRAILLE PATTERN DOTS-1248
+288C BRAILLE PATTERN DOTS-348
+288D BRAILLE PATTERN DOTS-1348
+288E BRAILLE PATTERN DOTS-2348
+288F BRAILLE PATTERN DOTS-12348
+2890 BRAILLE PATTERN DOTS-58
+2891 BRAILLE PATTERN DOTS-158
+2892 BRAILLE PATTERN DOTS-258
+2893 BRAILLE PATTERN DOTS-1258
+2894 BRAILLE PATTERN DOTS-358
+2895 BRAILLE PATTERN DOTS-1358
+2896 BRAILLE PATTERN DOTS-2358
+2897 BRAILLE PATTERN DOTS-12358
+2898 BRAILLE PATTERN DOTS-458
+2899 BRAILLE PATTERN DOTS-1458
+289A BRAILLE PATTERN DOTS-2458
+289B BRAILLE PATTERN DOTS-12458
+289C BRAILLE PATTERN DOTS-3458
+289D BRAILLE PATTERN DOTS-13458
+289E BRAILLE PATTERN DOTS-23458
+289F BRAILLE PATTERN DOTS-123458
+28A0 BRAILLE PATTERN DOTS-68
+28A1 BRAILLE PATTERN DOTS-168
+28A2 BRAILLE PATTERN DOTS-268
+28A3 BRAILLE PATTERN DOTS-1268
+28A4 BRAILLE PATTERN DOTS-368
+28A5 BRAILLE PATTERN DOTS-1368
+28A6 BRAILLE PATTERN DOTS-2368
+28A7 BRAILLE PATTERN DOTS-12368
+28A8 BRAILLE PATTERN DOTS-468
+28A9 BRAILLE PATTERN DOTS-1468
+28AA BRAILLE PATTERN DOTS-2468
+28AB BRAILLE PATTERN DOTS-12468
+28AC BRAILLE PATTERN DOTS-3468
+28AD BRAILLE PATTERN DOTS-13468
+28AE BRAILLE PATTERN DOTS-23468
+28AF BRAILLE PATTERN DOTS-123468
+28B0 BRAILLE PATTERN DOTS-568
+28B1 BRAILLE PATTERN DOTS-1568
+28B2 BRAILLE PATTERN DOTS-2568
+28B3 BRAILLE PATTERN DOTS-12568
+28B4 BRAILLE PATTERN DOTS-3568
+28B5 BRAILLE PATTERN DOTS-13568
+28B6 BRAILLE PATTERN DOTS-23568
+28B7 BRAILLE PATTERN DOTS-123568
+28B8 BRAILLE PATTERN DOTS-4568
+28B9 BRAILLE PATTERN DOTS-14568
+28BA BRAILLE PATTERN DOTS-24568
+28BB BRAILLE PATTERN DOTS-124568
+28BC BRAILLE PATTERN DOTS-34568
+28BD BRAILLE PATTERN DOTS-134568
+28BE BRAILLE PATTERN DOTS-234568
+28BF BRAILLE PATTERN DOTS-1234568
+28C0 BRAILLE PATTERN DOTS-78
+28C1 BRAILLE PATTERN DOTS-178
+28C2 BRAILLE PATTERN DOTS-278
+28C3 BRAILLE PATTERN DOTS-1278
+28C4 BRAILLE PATTERN DOTS-378
+28C5 BRAILLE PATTERN DOTS-1378
+28C6 BRAILLE PATTERN DOTS-2378
+28C7 BRAILLE PATTERN DOTS-12378
+28C8 BRAILLE PATTERN DOTS-478
+28C9 BRAILLE PATTERN DOTS-1478
+28CA BRAILLE PATTERN DOTS-2478
+28CB BRAILLE PATTERN DOTS-12478
+28CC BRAILLE PATTERN DOTS-3478
+28CD BRAILLE PATTERN DOTS-13478
+28CE BRAILLE PATTERN DOTS-23478
+28CF BRAILLE PATTERN DOTS-123478
+28D0 BRAILLE PATTERN DOTS-578
+28D1 BRAILLE PATTERN DOTS-1578
+28D2 BRAILLE PATTERN DOTS-2578
+28D3 BRAILLE PATTERN DOTS-12578
+28D4 BRAILLE PATTERN DOTS-3578
+28D5 BRAILLE PATTERN DOTS-13578
+28D6 BRAILLE PATTERN DOTS-23578
+28D7 BRAILLE PATTERN DOTS-123578
+28D8 BRAILLE PATTERN DOTS-4578
+28D9 BRAILLE PATTERN DOTS-14578
+28DA BRAILLE PATTERN DOTS-24578
+28DB BRAILLE PATTERN DOTS-124578
+28DC BRAILLE PATTERN DOTS-34578
+28DD BRAILLE PATTERN DOTS-134578
+28DE BRAILLE PATTERN DOTS-234578
+28DF BRAILLE PATTERN DOTS-1234578
+28E0 BRAILLE PATTERN DOTS-678
+28E1 BRAILLE PATTERN DOTS-1678
+28E2 BRAILLE PATTERN DOTS-2678
+28E3 BRAILLE PATTERN DOTS-12678
+28E4 BRAILLE PATTERN DOTS-3678
+28E5 BRAILLE PATTERN DOTS-13678
+28E6 BRAILLE PATTERN DOTS-23678
+28E7 BRAILLE PATTERN DOTS-123678
+28E8 BRAILLE PATTERN DOTS-4678
+28E9 BRAILLE PATTERN DOTS-14678
+28EA BRAILLE PATTERN DOTS-24678
+28EB BRAILLE PATTERN DOTS-124678
+28EC BRAILLE PATTERN DOTS-34678
+28ED BRAILLE PATTERN DOTS-134678
+28EE BRAILLE PATTERN DOTS-234678
+28EF BRAILLE PATTERN DOTS-1234678
+28F0 BRAILLE PATTERN DOTS-5678
+28F1 BRAILLE PATTERN DOTS-15678
+28F2 BRAILLE PATTERN DOTS-25678
+28F3 BRAILLE PATTERN DOTS-125678
+28F4 BRAILLE PATTERN DOTS-35678
+28F5 BRAILLE PATTERN DOTS-135678
+28F6 BRAILLE PATTERN DOTS-235678
+28F7 BRAILLE PATTERN DOTS-1235678
+28F8 BRAILLE PATTERN DOTS-45678
+28F9 BRAILLE PATTERN DOTS-145678
+28FA BRAILLE PATTERN DOTS-245678
+28FB BRAILLE PATTERN DOTS-1245678
+28FC BRAILLE PATTERN DOTS-345678
+28FD BRAILLE PATTERN DOTS-1345678
+28FE BRAILLE PATTERN DOTS-2345678
+28FF BRAILLE PATTERN DOTS-12345678
+@@ 2E80 CJK Radicals Supplement 2EFF
+@ CJK radicals supplement
+2E80 CJK RADICAL REPEAT
+2E81 CJK RADICAL CLIFF
+2E82 CJK RADICAL SECOND ONE
+2E83 CJK RADICAL SECOND TWO
+2E84 CJK RADICAL SECOND THREE
+2E85 CJK RADICAL PERSON
+2E86 CJK RADICAL BOX
+2E87 CJK RADICAL TABLE
+2E88 CJK RADICAL KNIFE ONE
+2E89 CJK RADICAL KNIFE TWO
+2E8A CJK RADICAL DIVINATION
+2E8B CJK RADICAL SEAL
+2E8C CJK RADICAL SMALL ONE
+2E8D CJK RADICAL SMALL TWO
+2E8E CJK RADICAL LAME ONE
+2E8F CJK RADICAL LAME TWO
+2E90 CJK RADICAL LAME THREE
+2E91 CJK RADICAL LAME FOUR
+2E92 CJK RADICAL SNAKE
+2E93 CJK RADICAL THREAD
+2E94 CJK RADICAL SNOUT ONE
+2E95 CJK RADICAL SNOUT TWO
+2E96 CJK RADICAL HEART ONE
+2E97 CJK RADICAL HEART TWO
+2E98 CJK RADICAL HAND
+2E99 CJK RADICAL RAP
+2E9B CJK RADICAL CHOKE
+2E9C CJK RADICAL SUN
+2E9D CJK RADICAL MOON
+2E9E CJK RADICAL DEATH
+2E9F CJK RADICAL MOTHER
+ # 6BCD
+2EA0 CJK RADICAL CIVILIAN
+2EA1 CJK RADICAL WATER ONE
+2EA2 CJK RADICAL WATER TWO
+2EA3 CJK RADICAL FIRE
+2EA4 CJK RADICAL PAW ONE
+2EA5 CJK RADICAL PAW TWO
+2EA6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2EA7 CJK RADICAL COW
+2EA8 CJK RADICAL DOG
+2EA9 CJK RADICAL JADE
+2EAA CJK RADICAL BOLT OF CLOTH
+2EAB CJK RADICAL EYE
+2EAC CJK RADICAL SPIRIT ONE
+2EAD CJK RADICAL SPIRIT TWO
+2EAE CJK RADICAL BAMBOO
+2EAF CJK RADICAL SILK
+2EB0 CJK RADICAL C-SIMPLIFIED SILK
+2EB1 CJK RADICAL NET ONE
+2EB2 CJK RADICAL NET TWO
+2EB3 CJK RADICAL NET THREE
+2EB4 CJK RADICAL NET FOUR
+2EB5 CJK RADICAL MESH
+2EB6 CJK RADICAL SHEEP
+2EB7 CJK RADICAL RAM
+2EB8 CJK RADICAL EWE
+2EB9 CJK RADICAL OLD
+2EBA CJK RADICAL BRUSH ONE
+2EBB CJK RADICAL BRUSH TWO
+2EBC CJK RADICAL MEAT
+2EBD CJK RADICAL MORTAR
+2EBE CJK RADICAL GRASS ONE
+2EBF CJK RADICAL GRASS TWO
+2EC0 CJK RADICAL GRASS THREE
+2EC1 CJK RADICAL TIGER
+2EC2 CJK RADICAL CLOTHES
+2EC3 CJK RADICAL WEST ONE
+2EC4 CJK RADICAL WEST TWO
+2EC5 CJK RADICAL C-SIMPLIFIED SEE
+2EC6 CJK RADICAL SIMPLIFIED HORN
+2EC7 CJK RADICAL HORN
+2EC8 CJK RADICAL C-SIMPLIFIED SPEECH
+2EC9 CJK RADICAL C-SIMPLIFIED SHELL
+2ECA CJK RADICAL FOOT
+2ECB CJK RADICAL C-SIMPLIFIED CART
+2ECC CJK RADICAL SIMPLIFIED WALK
+2ECD CJK RADICAL WALK ONE
+2ECE CJK RADICAL WALK TWO
+2ECF CJK RADICAL CITY
+2ED0 CJK RADICAL C-SIMPLIFIED GOLD
+2ED1 CJK RADICAL LONG ONE
+2ED2 CJK RADICAL LONG TWO
+2ED3 CJK RADICAL C-SIMPLIFIED LONG
+2ED4 CJK RADICAL C-SIMPLIFIED GATE
+2ED5 CJK RADICAL MOUND ONE
+2ED6 CJK RADICAL MOUND TWO
+2ED7 CJK RADICAL RAIN
+2ED8 CJK RADICAL BLUE
+2ED9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2EDA CJK RADICAL C-SIMPLIFIED LEAF
+2EDB CJK RADICAL C-SIMPLIFIED WIND
+2EDC CJK RADICAL C-SIMPLIFIED FLY
+2EDD CJK RADICAL EAT ONE
+2EDE CJK RADICAL EAT TWO
+2EDF CJK RADICAL EAT THREE
+2EE0 CJK RADICAL C-SIMPLIFIED EAT
+2EE1 CJK RADICAL HEAD
+2EE2 CJK RADICAL C-SIMPLIFIED HORSE
+2EE3 CJK RADICAL BONE
+2EE4 CJK RADICAL GHOST
+2EE5 CJK RADICAL C-SIMPLIFIED FISH
+2EE6 CJK RADICAL C-SIMPLIFIED BIRD
+2EE7 CJK RADICAL C-SIMPLIFIED SALT
+2EE8 CJK RADICAL SIMPLIFIED WHEAT
+2EE9 CJK RADICAL SIMPLIFIED YELLOW
+2EEA CJK RADICAL C-SIMPLIFIED FROG
+2EEB CJK RADICAL J-SIMPLIFIED EVEN
+2EEC CJK RADICAL C-SIMPLIFIED EVEN
+2EED CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE CJK RADICAL C-SIMPLIFIED TOOTH
+2EEF CJK RADICAL J-SIMPLIFIED DRAGON
+2EF0 CJK RADICAL C-SIMPLIFIED DRAGON
+2EF1 CJK RADICAL TURTLE
+2EF2 CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3 CJK RADICAL C-SIMPLIFIED TURTLE
+ # 9F9F
+@@ 2F00 Kangxi Radicals 2FDF
+@ Kangxi radicals
+2F00 KANGXI RADICAL ONE
+ # 4E00
+2F01 KANGXI RADICAL LINE
+ # 4E28
+2F02 KANGXI RADICAL DOT
+ # 4E36
+2F03 KANGXI RADICAL SLASH
+ # 4E3F
+2F04 KANGXI RADICAL SECOND
+ # 4E59
+2F05 KANGXI RADICAL HOOK
+ # 4E85
+2F06 KANGXI RADICAL TWO
+ # 4E8C
+2F07 KANGXI RADICAL LID
+ # 4EA0
+2F08 KANGXI RADICAL MAN
+ # 4EBA
+2F09 KANGXI RADICAL LEGS
+ # 513F
+2F0A KANGXI RADICAL ENTER
+ # 5165
+2F0B KANGXI RADICAL EIGHT
+ # 516B
+2F0C KANGXI RADICAL DOWN BOX
+ # 5182
+2F0D KANGXI RADICAL COVER
+ # 5196
+2F0E KANGXI RADICAL ICE
+ # 51AB
+2F0F KANGXI RADICAL TABLE
+ # 51E0
+2F10 KANGXI RADICAL OPEN BOX
+ # 51F5
+2F11 KANGXI RADICAL KNIFE
+ # 5200
+2F12 KANGXI RADICAL POWER
+ # 529B
+2F13 KANGXI RADICAL WRAP
+ # 52F9
+2F14 KANGXI RADICAL SPOON
+ # 5315
+2F15 KANGXI RADICAL RIGHT OPEN BOX
+ # 531A
+2F16 KANGXI RADICAL HIDING ENCLOSURE
+ # 5338
+2F17 KANGXI RADICAL TEN
+ # 5341
+2F18 KANGXI RADICAL DIVINATION
+ # 535C
+2F19 KANGXI RADICAL SEAL
+ # 5369
+2F1A KANGXI RADICAL CLIFF
+ # 5382
+2F1B KANGXI RADICAL PRIVATE
+ # 53B6
+2F1C KANGXI RADICAL AGAIN
+ # 53C8
+2F1D KANGXI RADICAL MOUTH
+ # 53E3
+2F1E KANGXI RADICAL ENCLOSURE
+ # 56D7
+2F1F KANGXI RADICAL EARTH
+ # 571F
+2F20 KANGXI RADICAL SCHOLAR
+ # 58EB
+2F21 KANGXI RADICAL GO
+ # 5902
+2F22 KANGXI RADICAL GO SLOWLY
+ # 590A
+2F23 KANGXI RADICAL EVENING
+ # 5915
+2F24 KANGXI RADICAL BIG
+ # 5927
+2F25 KANGXI RADICAL WOMAN
+ # 5973
+2F26 KANGXI RADICAL CHILD
+ # 5B50
+2F27 KANGXI RADICAL ROOF
+ # 5B80
+2F28 KANGXI RADICAL INCH
+ # 5BF8
+2F29 KANGXI RADICAL SMALL
+ # 5C0F
+2F2A KANGXI RADICAL LAME
+ # 5C22
+2F2B KANGXI RADICAL CORPSE
+ # 5C38
+2F2C KANGXI RADICAL SPROUT
+ # 5C6E
+2F2D KANGXI RADICAL MOUNTAIN
+ # 5C71
+2F2E KANGXI RADICAL RIVER
+ # 5DDB
+2F2F KANGXI RADICAL WORK
+ # 5DE5
+2F30 KANGXI RADICAL ONESELF
+ # 5DF1
+2F31 KANGXI RADICAL TURBAN
+ # 5DFE
+2F32 KANGXI RADICAL DRY
+ # 5E72
+2F33 KANGXI RADICAL SHORT THREAD
+ # 5E7A
+2F34 KANGXI RADICAL DOTTED CLIFF
+ # 5E7F
+2F35 KANGXI RADICAL LONG STRIDE
+ # 5EF4
+2F36 KANGXI RADICAL TWO HANDS
+ # 5EFE
+2F37 KANGXI RADICAL SHOOT
+ # 5F0B
+2F38 KANGXI RADICAL BOW
+ # 5F13
+2F39 KANGXI RADICAL SNOUT
+ # 5F50
+2F3A KANGXI RADICAL BRISTLE
+ # 5F61
+2F3B KANGXI RADICAL STEP
+ # 5F73
+2F3C KANGXI RADICAL HEART
+ # 5FC3
+2F3D KANGXI RADICAL HALBERD
+ # 6208
+2F3E KANGXI RADICAL DOOR
+ # 6236
+2F3F KANGXI RADICAL HAND
+ # 624B
+2F40 KANGXI RADICAL BRANCH
+ # 652F
+2F41 KANGXI RADICAL RAP
+ # 6534
+2F42 KANGXI RADICAL SCRIPT
+ # 6587
+2F43 KANGXI RADICAL DIPPER
+ # 6597
+2F44 KANGXI RADICAL AXE
+ # 65A4
+2F45 KANGXI RADICAL SQUARE
+ # 65B9
+2F46 KANGXI RADICAL NOT
+ # 65E0
+2F47 KANGXI RADICAL SUN
+ # 65E5
+2F48 KANGXI RADICAL SAY
+ # 66F0
+2F49 KANGXI RADICAL MOON
+ # 6708
+2F4A KANGXI RADICAL TREE
+ # 6728
+2F4B KANGXI RADICAL LACK
+ # 6B20
+2F4C KANGXI RADICAL STOP
+ # 6B62
+2F4D KANGXI RADICAL DEATH
+ # 6B79
+2F4E KANGXI RADICAL WEAPON
+ # 6BB3
+2F4F KANGXI RADICAL DO NOT
+ # 6BCB
+2F50 KANGXI RADICAL COMPARE
+ # 6BD4
+2F51 KANGXI RADICAL FUR
+ # 6BDB
+2F52 KANGXI RADICAL CLAN
+ # 6C0F
+2F53 KANGXI RADICAL STEAM
+ # 6C14
+2F54 KANGXI RADICAL WATER
+ # 6C34
+2F55 KANGXI RADICAL FIRE
+ # 706B
+2F56 KANGXI RADICAL CLAW
+ # 722A
+2F57 KANGXI RADICAL FATHER
+ # 7236
+2F58 KANGXI RADICAL DOUBLE X
+ # 723B
+2F59 KANGXI RADICAL HALF TREE TRUNK
+ # 723F
+2F5A KANGXI RADICAL SLICE
+ # 7247
+2F5B KANGXI RADICAL FANG
+ # 7259
+2F5C KANGXI RADICAL COW
+ # 725B
+2F5D KANGXI RADICAL DOG
+ # 72AC
+2F5E KANGXI RADICAL PROFOUND
+ # 7384
+2F5F KANGXI RADICAL JADE
+ # 7389
+2F60 KANGXI RADICAL MELON
+ # 74DC
+2F61 KANGXI RADICAL TILE
+ # 74E6
+2F62 KANGXI RADICAL SWEET
+ # 7518
+2F63 KANGXI RADICAL LIFE
+ # 751F
+2F64 KANGXI RADICAL USE
+ # 7528
+2F65 KANGXI RADICAL FIELD
+ # 7530
+2F66 KANGXI RADICAL BOLT OF CLOTH
+ # 758B
+2F67 KANGXI RADICAL SICKNESS
+ # 7592
+2F68 KANGXI RADICAL DOTTED TENT
+ # 7676
+2F69 KANGXI RADICAL WHITE
+ # 767D
+2F6A KANGXI RADICAL SKIN
+ # 76AE
+2F6B KANGXI RADICAL DISH
+ # 76BF
+2F6C KANGXI RADICAL EYE
+ # 76EE
+2F6D KANGXI RADICAL SPEAR
+ # 77DB
+2F6E KANGXI RADICAL ARROW
+ # 77E2
+2F6F KANGXI RADICAL STONE
+ # 77F3
+2F70 KANGXI RADICAL SPIRIT
+ # 793A
+2F71 KANGXI RADICAL TRACK
+ # 79B8
+2F72 KANGXI RADICAL GRAIN
+ # 79BE
+2F73 KANGXI RADICAL CAVE
+ # 7A74
+2F74 KANGXI RADICAL STAND
+ # 7ACB
+2F75 KANGXI RADICAL BAMBOO
+ # 7AF9
+2F76 KANGXI RADICAL RICE
+ # 7C73
+2F77 KANGXI RADICAL SILK
+ # 7CF8
+2F78 KANGXI RADICAL JAR
+ # 7F36
+2F79 KANGXI RADICAL NET
+ # 7F51
+2F7A KANGXI RADICAL SHEEP
+ # 7F8A
+2F7B KANGXI RADICAL FEATHER
+ # 7FBD
+2F7C KANGXI RADICAL OLD
+ # 8001
+2F7D KANGXI RADICAL AND
+ # 800C
+2F7E KANGXI RADICAL PLOW
+ # 8012
+2F7F KANGXI RADICAL EAR
+ # 8033
+2F80 KANGXI RADICAL BRUSH
+ # 807F
+2F81 KANGXI RADICAL MEAT
+ # 8089
+2F82 KANGXI RADICAL MINISTER
+ # 81E3
+2F83 KANGXI RADICAL SELF
+ # 81EA
+2F84 KANGXI RADICAL ARRIVE
+ # 81F3
+2F85 KANGXI RADICAL MORTAR
+ # 81FC
+2F86 KANGXI RADICAL TONGUE
+ # 820C
+2F87 KANGXI RADICAL OPPOSE
+ # 821B
+2F88 KANGXI RADICAL BOAT
+ # 821F
+2F89 KANGXI RADICAL STOPPING
+ # 826E
+2F8A KANGXI RADICAL COLOR
+ # 8272
+2F8B KANGXI RADICAL GRASS
+ # 8278
+2F8C KANGXI RADICAL TIGER
+ # 864D
+2F8D KANGXI RADICAL INSECT
+ # 866B
+2F8E KANGXI RADICAL BLOOD
+ # 8840
+2F8F KANGXI RADICAL WALK ENCLOSURE
+ # 884C
+2F90 KANGXI RADICAL CLOTHES
+ # 8863
+2F91 KANGXI RADICAL WEST
+ # 897E
+2F92 KANGXI RADICAL SEE
+ # 898B
+2F93 KANGXI RADICAL HORN
+ # 89D2
+2F94 KANGXI RADICAL SPEECH
+ # 8A00
+2F95 KANGXI RADICAL VALLEY
+ # 8C37
+2F96 KANGXI RADICAL BEAN
+ # 8C46
+2F97 KANGXI RADICAL PIG
+ # 8C55
+2F98 KANGXI RADICAL BADGER
+ # 8C78
+2F99 KANGXI RADICAL SHELL
+ # 8C9D
+2F9A KANGXI RADICAL RED
+ # 8D64
+2F9B KANGXI RADICAL RUN
+ # 8D70
+2F9C KANGXI RADICAL FOOT
+ # 8DB3
+2F9D KANGXI RADICAL BODY
+ # 8EAB
+2F9E KANGXI RADICAL CART
+ # 8ECA
+2F9F KANGXI RADICAL BITTER
+ # 8F9B
+2FA0 KANGXI RADICAL MORNING
+ # 8FB0
+2FA1 KANGXI RADICAL WALK
+ # 8FB5
+2FA2 KANGXI RADICAL CITY
+ # 9091
+2FA3 KANGXI RADICAL WINE
+ # 9149
+2FA4 KANGXI RADICAL DISTINGUISH
+ # 91C6
+2FA5 KANGXI RADICAL VILLAGE
+ # 91CC
+2FA6 KANGXI RADICAL GOLD
+ # 91D1
+2FA7 KANGXI RADICAL LONG
+ # 9577
+2FA8 KANGXI RADICAL GATE
+ # 9580
+2FA9 KANGXI RADICAL MOUND
+ # 961C
+2FAA KANGXI RADICAL SLAVE
+ # 96B6
+2FAB KANGXI RADICAL SHORT TAILED BIRD
+ # 96B9
+2FAC KANGXI RADICAL RAIN
+ # 96E8
+2FAD KANGXI RADICAL BLUE
+ # 9751
+2FAE KANGXI RADICAL WRONG
+ # 975E
+2FAF KANGXI RADICAL FACE
+ # 9762
+2FB0 KANGXI RADICAL LEATHER
+ # 9769
+2FB1 KANGXI RADICAL TANNED LEATHER
+ # 97CB
+2FB2 KANGXI RADICAL LEEK
+ # 97ED
+2FB3 KANGXI RADICAL SOUND
+ # 97F3
+2FB4 KANGXI RADICAL LEAF
+ # 9801
+2FB5 KANGXI RADICAL WIND
+ # 98A8
+2FB6 KANGXI RADICAL FLY
+ # 98DB
+2FB7 KANGXI RADICAL EAT
+ # 98DF
+2FB8 KANGXI RADICAL HEAD
+ # 9996
+2FB9 KANGXI RADICAL FRAGRANT
+ # 9999
+2FBA KANGXI RADICAL HORSE
+ # 99AC
+2FBB KANGXI RADICAL BONE
+ # 9AA8
+2FBC KANGXI RADICAL TALL
+ # 9AD8
+2FBD KANGXI RADICAL HAIR
+ # 9ADF
+2FBE KANGXI RADICAL FIGHT
+ # 9B25
+2FBF KANGXI RADICAL SACRIFICIAL WINE
+ # 9B2F
+2FC0 KANGXI RADICAL CAULDRON
+ # 9B32
+2FC1 KANGXI RADICAL GHOST
+ # 9B3C
+2FC2 KANGXI RADICAL FISH
+ # 9B5A
+2FC3 KANGXI RADICAL BIRD
+ # 9CE5
+2FC4 KANGXI RADICAL SALT
+ # 9E75
+2FC5 KANGXI RADICAL DEER
+ # 9E7F
+2FC6 KANGXI RADICAL WHEAT
+ # 9EA5
+2FC7 KANGXI RADICAL HEMP
+ # 9EBB
+2FC8 KANGXI RADICAL YELLOW
+ # 9EC3
+2FC9 KANGXI RADICAL MILLET
+ # 9ECD
+2FCA KANGXI RADICAL BLACK
+ # 9ED1
+2FCB KANGXI RADICAL EMBROIDERY
+ # 9EF9
+2FCC KANGXI RADICAL FROG
+ # 9EFD
+2FCD KANGXI RADICAL TRIPOD
+ # 9F0E
+2FCE KANGXI RADICAL DRUM
+ # 9F13
+2FCF KANGXI RADICAL RAT
+ # 9F20
+2FD0 KANGXI RADICAL NOSE
+ # 9F3B
+2FD1 KANGXI RADICAL EVEN
+ # 9F4A
+2FD2 KANGXI RADICAL TOOTH
+ # 9F52
+2FD3 KANGXI RADICAL DRAGON
+ # 9F8D
+2FD4 KANGXI RADICAL TURTLE
+ # 9F9C
+2FD5 KANGXI RADICAL FLUTE
+ # 9FA0
+@@ 2FF0 Ideographic Description Characters 2FFF
+@ Ideographic description characters
+@+ These are visibly displayed graphic characters, not invisible composition controls.
+2FF0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+@@ 3000 CJK Symbols and Punctuation 303F
+@ CJK symbols and punctuation
+3000 IDEOGRAPHIC SPACE
+ x (space - 0020)
+ # <wide> 0020
+3001 IDEOGRAPHIC COMMA
+ x (comma - 002C)
+3002 IDEOGRAPHIC FULL STOP
+ x (full stop - 002E)
+3003 DITTO MARK
+ x (double prime - 2033)
+3004 JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005 IDEOGRAPHIC ITERATION MARK
+3006 IDEOGRAPHIC CLOSING MARK
+3007 IDEOGRAPHIC NUMBER ZERO
+ x (combining enclosing circle - 20DD)
+ x (white circle - 25CB)
+ x (large circle - 25EF)
+3008 LEFT ANGLE BRACKET
+ x (less-than sign - 003C)
+ x (single left-pointing angle quotation mark - 2039)
+ x (left-pointing angle bracket - 2329)
+3009 RIGHT ANGLE BRACKET
+ x (greater-than sign - 003E)
+ x (single right-pointing angle quotation mark - 203A)
+ x (right-pointing angle bracket - 232A)
+300A LEFT DOUBLE ANGLE BRACKET
+ = z notation left chevron bracket
+ x (left-pointing double angle quotation mark - 00AB)
+300B RIGHT DOUBLE ANGLE BRACKET
+ = z notation right chevron bracket
+ x (right-pointing double angle quotation mark - 00BB)
+300C LEFT CORNER BRACKET
+ x (left ceiling - 2308)
+300D RIGHT CORNER BRACKET
+ * used as quotation marks
+ x (right floor - 230B)
+300E LEFT WHITE CORNER BRACKET
+300F RIGHT WHITE CORNER BRACKET
+ * used as quotation marks
+3010 LEFT BLACK LENTICULAR BRACKET
+3011 RIGHT BLACK LENTICULAR BRACKET
+3012 POSTAL MARK
+3013 GETA MARK
+ * substitute for ideograph not in font
+3014 LEFT TORTOISE SHELL BRACKET
+3015 RIGHT TORTOISE SHELL BRACKET
+3016 LEFT WHITE LENTICULAR BRACKET
+3017 RIGHT WHITE LENTICULAR BRACKET
+3018 LEFT WHITE TORTOISE SHELL BRACKET
+3019 RIGHT WHITE TORTOISE SHELL BRACKET
+301A LEFT WHITE SQUARE BRACKET
+ = z notation left bag bracket
+301B RIGHT WHITE SQUARE BRACKET
+ = z notation right bag bracket
+301C WAVE DASH
+@+ * This character was encoded to match JIS C 6226-1978 1-33 "wave dash". Subsequent revisions of the JIS standard and industry practice have settled on JIS 1-33 as being the fullwidth tilde character.
+ x (wavy dash - 3030)
+ x (fullwidth tilde - FF5E)
+301D REVERSED DOUBLE PRIME QUOTATION MARK
+ * sometimes depicted as double prime quotation mark
+ x (left double quotation mark - 201C)
+ x (reversed double prime - 2036)
+301E DOUBLE PRIME QUOTATION MARK
+ * this is a mistaken analogue to 201D; 301F is preferred
+ x (right double quotation mark - 201D)
+ x (double prime - 2033)
+301F LOW DOUBLE PRIME QUOTATION MARK
+ * may be depicted as low inverse double prime quotation mark
+3020 POSTAL MARK FACE
+@ Hangzhou-style numerals
+3021 HANGZHOU NUMERAL ONE
+3022 HANGZHOU NUMERAL TWO
+3023 HANGZHOU NUMERAL THREE
+3024 HANGZHOU NUMERAL FOUR
+3025 HANGZHOU NUMERAL FIVE
+3026 HANGZHOU NUMERAL SIX
+3027 HANGZHOU NUMERAL SEVEN
+3028 HANGZHOU NUMERAL EIGHT
+3029 HANGZHOU NUMERAL NINE
+@ Diacritics
+302A IDEOGRAPHIC LEVEL TONE MARK
+302B IDEOGRAPHIC RISING TONE MARK
+302C IDEOGRAPHIC DEPARTING TONE MARK
+302D IDEOGRAPHIC ENTERING TONE MARK
+302E HANGUL SINGLE DOT TONE MARK
+ = single dot Bangjeom
+302F HANGUL DOUBLE DOT TONE MARK
+ = double dot Bangjeom
+@ Other CJK symbols
+3030 WAVY DASH
+ x (wavy line - 2307)
+ x (wave dash - 301C)
+3031 VERTICAL KANA REPEAT MARK
+3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+ * the preceding two semantic characters are preferred to the following three glyphic forms
+3033 VERTICAL KANA REPEAT MARK UPPER HALF
+3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+ * the preceding two are glyphs used in conjunction with the following glyph
+3035 VERTICAL KANA REPEAT MARK LOWER HALF
+3036 CIRCLED POSTAL MARK
+ # 3012 postal mark
+3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+@ Additional Hangzhou-style numerals
+3038 HANGZHOU NUMERAL TEN
+ # 5341
+3039 HANGZHOU NUMERAL TWENTY
+ # 5344
+303A HANGZHOU NUMERAL THIRTY
+ # 5345
+@ Special CJK indicators
+@+ These are visibly displayed graphic characters, not invisible formatting controls.
+303E IDEOGRAPHIC VARIATION INDICATOR
+ * visual indicator that the following ideograph is to be taken as a variant of the intended character
+303F IDEOGRAPHIC HALF FILL SPACE
+ * visual indicator of a screen space for half of an ideograph
+@@ 3040 Hiragana 309F
+@ Based on JIS X 0208
+3041 HIRAGANA LETTER SMALL A
+3042 HIRAGANA LETTER A
+3043 HIRAGANA LETTER SMALL I
+3044 HIRAGANA LETTER I
+3045 HIRAGANA LETTER SMALL U
+3046 HIRAGANA LETTER U
+3047 HIRAGANA LETTER SMALL E
+3048 HIRAGANA LETTER E
+3049 HIRAGANA LETTER SMALL O
+304A HIRAGANA LETTER O
+304B HIRAGANA LETTER KA
+304C HIRAGANA LETTER GA
+ : 304B 3099
+304D HIRAGANA LETTER KI
+304E HIRAGANA LETTER GI
+ : 304D 3099
+304F HIRAGANA LETTER KU
+3050 HIRAGANA LETTER GU
+ : 304F 3099
+3051 HIRAGANA LETTER KE
+3052 HIRAGANA LETTER GE
+ : 3051 3099
+3053 HIRAGANA LETTER KO
+3054 HIRAGANA LETTER GO
+ : 3053 3099
+3055 HIRAGANA LETTER SA
+3056 HIRAGANA LETTER ZA
+ : 3055 3099
+3057 HIRAGANA LETTER SI
+ = SHI
+3058 HIRAGANA LETTER ZI
+ = JI (not unique)
+ : 3057 3099
+3059 HIRAGANA LETTER SU
+305A HIRAGANA LETTER ZU
+ : 3059 3099
+305B HIRAGANA LETTER SE
+305C HIRAGANA LETTER ZE
+ : 305B 3099
+305D HIRAGANA LETTER SO
+305E HIRAGANA LETTER ZO
+ : 305D 3099
+305F HIRAGANA LETTER TA
+3060 HIRAGANA LETTER DA
+ : 305F 3099
+3061 HIRAGANA LETTER TI
+ = CHI
+3062 HIRAGANA LETTER DI
+ = JI (not unique)
+ : 3061 3099
+3063 HIRAGANA LETTER SMALL TU
+ = SMALL TSU
+3064 HIRAGANA LETTER TU
+ = TSU
+3065 HIRAGANA LETTER DU
+ = ZU (not unique)
+ : 3064 3099
+3066 HIRAGANA LETTER TE
+3067 HIRAGANA LETTER DE
+ : 3066 3099
+3068 HIRAGANA LETTER TO
+3069 HIRAGANA LETTER DO
+ : 3068 3099
+306A HIRAGANA LETTER NA
+306B HIRAGANA LETTER NI
+306C HIRAGANA LETTER NU
+306D HIRAGANA LETTER NE
+306E HIRAGANA LETTER NO
+306F HIRAGANA LETTER HA
+3070 HIRAGANA LETTER BA
+ : 306F 3099
+3071 HIRAGANA LETTER PA
+ : 306F 309A
+3072 HIRAGANA LETTER HI
+3073 HIRAGANA LETTER BI
+ : 3072 3099
+3074 HIRAGANA LETTER PI
+ : 3072 309A
+3075 HIRAGANA LETTER HU
+ = FU
+3076 HIRAGANA LETTER BU
+ : 3075 3099
+3077 HIRAGANA LETTER PU
+ : 3075 309A
+3078 HIRAGANA LETTER HE
+3079 HIRAGANA LETTER BE
+ : 3078 3099
+307A HIRAGANA LETTER PE
+ : 3078 309A
+307B HIRAGANA LETTER HO
+307C HIRAGANA LETTER BO
+ : 307B 3099
+307D HIRAGANA LETTER PO
+ : 307B 309A
+307E HIRAGANA LETTER MA
+307F HIRAGANA LETTER MI
+3080 HIRAGANA LETTER MU
+3081 HIRAGANA LETTER ME
+3082 HIRAGANA LETTER MO
+3083 HIRAGANA LETTER SMALL YA
+3084 HIRAGANA LETTER YA
+3085 HIRAGANA LETTER SMALL YU
+3086 HIRAGANA LETTER YU
+3087 HIRAGANA LETTER SMALL YO
+3088 HIRAGANA LETTER YO
+3089 HIRAGANA LETTER RA
+308A HIRAGANA LETTER RI
+308B HIRAGANA LETTER RU
+308C HIRAGANA LETTER RE
+308D HIRAGANA LETTER RO
+308E HIRAGANA LETTER SMALL WA
+308F HIRAGANA LETTER WA
+3090 HIRAGANA LETTER WI
+3091 HIRAGANA LETTER WE
+3092 HIRAGANA LETTER WO
+3093 HIRAGANA LETTER N
+3094 HIRAGANA LETTER VU
+ : 3046 3099
+@ Voicing marks
+3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309A COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B KATAKANA-HIRAGANA VOICED SOUND MARK
+ # 0020 3099
+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ # 0020 309A
+@ Iteration marks
+309D HIRAGANA ITERATION MARK
+309E HIRAGANA VOICED ITERATION MARK
+ : 309D 3099
+@@ 30A0 Katakana 30FF
+@ Based on JIS X 0208
+30A1 KATAKANA LETTER SMALL A
+30A2 KATAKANA LETTER A
+30A3 KATAKANA LETTER SMALL I
+30A4 KATAKANA LETTER I
+30A5 KATAKANA LETTER SMALL U
+30A6 KATAKANA LETTER U
+30A7 KATAKANA LETTER SMALL E
+30A8 KATAKANA LETTER E
+30A9 KATAKANA LETTER SMALL O
+30AA KATAKANA LETTER O
+30AB KATAKANA LETTER KA
+30AC KATAKANA LETTER GA
+ : 30AB 3099
+30AD KATAKANA LETTER KI
+30AE KATAKANA LETTER GI
+ : 30AD 3099
+30AF KATAKANA LETTER KU
+30B0 KATAKANA LETTER GU
+ : 30AF 3099
+30B1 KATAKANA LETTER KE
+30B2 KATAKANA LETTER GE
+ : 30B1 3099
+30B3 KATAKANA LETTER KO
+30B4 KATAKANA LETTER GO
+ : 30B3 3099
+30B5 KATAKANA LETTER SA
+30B6 KATAKANA LETTER ZA
+ : 30B5 3099
+30B7 KATAKANA LETTER SI
+ = SHI
+30B8 KATAKANA LETTER ZI
+ = JI (not unique)
+ : 30B7 3099
+30B9 KATAKANA LETTER SU
+30BA KATAKANA LETTER ZU
+ : 30B9 3099
+30BB KATAKANA LETTER SE
+30BC KATAKANA LETTER ZE
+ : 30BB 3099
+30BD KATAKANA LETTER SO
+30BE KATAKANA LETTER ZO
+ : 30BD 3099
+30BF KATAKANA LETTER TA
+30C0 KATAKANA LETTER DA
+ : 30BF 3099
+30C1 KATAKANA LETTER TI
+ = CHI
+30C2 KATAKANA LETTER DI
+ = JI (not unique)
+ : 30C1 3099
+30C3 KATAKANA LETTER SMALL TU
+ = SMALL TSU
+30C4 KATAKANA LETTER TU
+ = TSU
+30C5 KATAKANA LETTER DU
+ = ZU (not unique)
+ : 30C4 3099
+30C6 KATAKANA LETTER TE
+30C7 KATAKANA LETTER DE
+ : 30C6 3099
+30C8 KATAKANA LETTER TO
+30C9 KATAKANA LETTER DO
+ : 30C8 3099
+30CA KATAKANA LETTER NA
+30CB KATAKANA LETTER NI
+30CC KATAKANA LETTER NU
+30CD KATAKANA LETTER NE
+30CE KATAKANA LETTER NO
+30CF KATAKANA LETTER HA
+30D0 KATAKANA LETTER BA
+ : 30CF 3099
+30D1 KATAKANA LETTER PA
+ : 30CF 309A
+30D2 KATAKANA LETTER HI
+30D3 KATAKANA LETTER BI
+ : 30D2 3099
+30D4 KATAKANA LETTER PI
+ : 30D2 309A
+30D5 KATAKANA LETTER HU
+ = FU
+30D6 KATAKANA LETTER BU
+ : 30D5 3099
+30D7 KATAKANA LETTER PU
+ : 30D5 309A
+30D8 KATAKANA LETTER HE
+30D9 KATAKANA LETTER BE
+ : 30D8 3099
+30DA KATAKANA LETTER PE
+ : 30D8 309A
+30DB KATAKANA LETTER HO
+30DC KATAKANA LETTER BO
+ : 30DB 3099
+30DD KATAKANA LETTER PO
+ : 30DB 309A
+30DE KATAKANA LETTER MA
+30DF KATAKANA LETTER MI
+30E0 KATAKANA LETTER MU
+30E1 KATAKANA LETTER ME
+30E2 KATAKANA LETTER MO
+30E3 KATAKANA LETTER SMALL YA
+30E4 KATAKANA LETTER YA
+30E5 KATAKANA LETTER SMALL YU
+30E6 KATAKANA LETTER YU
+30E7 KATAKANA LETTER SMALL YO
+30E8 KATAKANA LETTER YO
+30E9 KATAKANA LETTER RA
+30EA KATAKANA LETTER RI
+30EB KATAKANA LETTER RU
+30EC KATAKANA LETTER RE
+30ED KATAKANA LETTER RO
+30EE KATAKANA LETTER SMALL WA
+30EF KATAKANA LETTER WA
+30F0 KATAKANA LETTER WI
+30F1 KATAKANA LETTER WE
+30F2 KATAKANA LETTER WO
+30F3 KATAKANA LETTER N
+30F4 KATAKANA LETTER VU
+ : 30A6 3099
+30F5 KATAKANA LETTER SMALL KA
+30F6 KATAKANA LETTER SMALL KE
+30F7 KATAKANA LETTER VA
+ : 30EF 3099
+30F8 KATAKANA LETTER VI
+ : 30F0 3099
+30F9 KATAKANA LETTER VE
+ : 30F1 3099
+30FA KATAKANA LETTER VO
+ : 30F2 3099
+@ Conjunction and length marks
+30FB KATAKANA MIDDLE DOT
+ x (middle dot - 00B7)
+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ x (em dash - 2014)
+@ Iteration marks
+30FD KATAKANA ITERATION MARK
+30FE KATAKANA VOICED ITERATION MARK
+ : 30FD 3099
+@@ 3100 Bopomofo 312F
+@+ See also the Bopomofo Extended block
+@ Based on GB 2312
+3105 BOPOMOFO LETTER B
+3106 BOPOMOFO LETTER P
+3107 BOPOMOFO LETTER M
+3108 BOPOMOFO LETTER F
+3109 BOPOMOFO LETTER D
+310A BOPOMOFO LETTER T
+310B BOPOMOFO LETTER N
+310C BOPOMOFO LETTER L
+310D BOPOMOFO LETTER G
+310E BOPOMOFO LETTER K
+310F BOPOMOFO LETTER H
+3110 BOPOMOFO LETTER J
+3111 BOPOMOFO LETTER Q
+3112 BOPOMOFO LETTER X
+3113 BOPOMOFO LETTER ZH
+3114 BOPOMOFO LETTER CH
+3115 BOPOMOFO LETTER SH
+3116 BOPOMOFO LETTER R
+3117 BOPOMOFO LETTER Z
+3118 BOPOMOFO LETTER C
+3119 BOPOMOFO LETTER S
+311A BOPOMOFO LETTER A
+311B BOPOMOFO LETTER O
+311C BOPOMOFO LETTER E
+311D BOPOMOFO LETTER EH
+311E BOPOMOFO LETTER AI
+311F BOPOMOFO LETTER EI
+3120 BOPOMOFO LETTER AU
+3121 BOPOMOFO LETTER OU
+3122 BOPOMOFO LETTER AN
+3123 BOPOMOFO LETTER EN
+3124 BOPOMOFO LETTER ANG
+3125 BOPOMOFO LETTER ENG
+3126 BOPOMOFO LETTER ER
+3127 BOPOMOFO LETTER I
+3128 BOPOMOFO LETTER U
+3129 BOPOMOFO LETTER IU
+@ Dialect (non-Mandarin) letters
+312A BOPOMOFO LETTER V
+312B BOPOMOFO LETTER NG
+312C BOPOMOFO LETTER GN
+@@ 3130 Hangul Compatibility Jamo 318F
+@ Modern letters
+3131 HANGUL LETTER KIYEOK
+ # 1100 hangul choseong kiyeok
+3132 HANGUL LETTER SSANGKIYEOK
+ # 1101 hangul choseong ssangkiyeok
+3133 HANGUL LETTER KIYEOK-SIOS
+ # 11AA hangul jongseong kiyeok-sios
+3134 HANGUL LETTER NIEUN
+ # 1102 hangul choseong nieun
+3135 HANGUL LETTER NIEUN-CIEUC
+ # 11AC hangul jongseong nieun-cieuc
+3136 HANGUL LETTER NIEUN-HIEUH
+ # 11AD hangul jongseong nieun-hieuh
+3137 HANGUL LETTER TIKEUT
+ # 1103 hangul choseong tikeut
+3138 HANGUL LETTER SSANGTIKEUT
+ # 1104 hangul choseong ssangtikeut
+3139 HANGUL LETTER RIEUL
+ # 1105 hangul choseong rieul
+313A HANGUL LETTER RIEUL-KIYEOK
+ # 11B0 hangul jongseong rieul-kiyeok
+313B HANGUL LETTER RIEUL-MIEUM
+ # 11B1 hangul jongseong rieul-mieum
+313C HANGUL LETTER RIEUL-PIEUP
+ # 11B2 hangul jongseong rieul-pieup
+313D HANGUL LETTER RIEUL-SIOS
+ # 11B3 hangul jongseong rieul-sios
+313E HANGUL LETTER RIEUL-THIEUTH
+ # 11B4 hangul jongseong rieul-thieuth
+313F HANGUL LETTER RIEUL-PHIEUPH
+ # 11B5 hangul jongseong rieul-phieuph
+3140 HANGUL LETTER RIEUL-HIEUH
+ # 111A hangul choseong rieul-hieuh
+3141 HANGUL LETTER MIEUM
+ # 1106 hangul choseong mieum
+3142 HANGUL LETTER PIEUP
+ # 1107 hangul choseong pieup
+3143 HANGUL LETTER SSANGPIEUP
+ # 1108 hangul choseong ssangpieup
+3144 HANGUL LETTER PIEUP-SIOS
+ # 1121 hangul choseong pieup-sios
+3145 HANGUL LETTER SIOS
+ # 1109 hangul choseong sios
+3146 HANGUL LETTER SSANGSIOS
+ # 110A hangul choseong ssangsios
+3147 HANGUL LETTER IEUNG
+ # 110B hangul choseong ieung
+3148 HANGUL LETTER CIEUC
+ # 110C hangul choseong cieuc
+3149 HANGUL LETTER SSANGCIEUC
+ # 110D hangul choseong ssangcieuc
+314A HANGUL LETTER CHIEUCH
+ # 110E hangul choseong chieuch
+314B HANGUL LETTER KHIEUKH
+ # 110F hangul choseong khieukh
+314C HANGUL LETTER THIEUTH
+ # 1110 hangul choseong thieuth
+314D HANGUL LETTER PHIEUPH
+ # 1111 hangul choseong phieuph
+314E HANGUL LETTER HIEUH
+ # 1112 hangul choseong hieuh
+314F HANGUL LETTER A
+ # 1161 hangul jungseong a
+3150 HANGUL LETTER AE
+ # 1162 hangul jungseong ae
+3151 HANGUL LETTER YA
+ # 1163 hangul jungseong ya
+3152 HANGUL LETTER YAE
+ # 1164 hangul jungseong yae
+3153 HANGUL LETTER EO
+ # 1165 hangul jungseong eo
+3154 HANGUL LETTER E
+ # 1166 hangul jungseong e
+3155 HANGUL LETTER YEO
+ # 1167 hangul jungseong yeo
+3156 HANGUL LETTER YE
+ # 1168 hangul jungseong ye
+3157 HANGUL LETTER O
+ # 1169 hangul jungseong o
+3158 HANGUL LETTER WA
+ # 116A hangul jungseong wa
+3159 HANGUL LETTER WAE
+ # 116B hangul jungseong wae
+315A HANGUL LETTER OE
+ # 116C hangul jungseong oe
+315B HANGUL LETTER YO
+ # 116D hangul jungseong yo
+315C HANGUL LETTER U
+ # 116E hangul jungseong u
+315D HANGUL LETTER WEO
+ # 116F hangul jungseong weo
+315E HANGUL LETTER WE
+ # 1170 hangul jungseong we
+315F HANGUL LETTER WI
+ # 1171 hangul jungseong wi
+3160 HANGUL LETTER YU
+ # 1172 hangul jungseong yu
+3161 HANGUL LETTER EU
+ # 1173 hangul jungseong eu
+3162 HANGUL LETTER YI
+ # 1174 hangul jungseong yi
+3163 HANGUL LETTER I
+ # 1175 hangul jungseong i
+@ Special character
+3164 HANGUL FILLER
+ = HANGUL CAE OM
+ # 1160 hangul jungseong filler
+@ Archaic letters
+3165 HANGUL LETTER SSANGNIEUN
+ # 1114 hangul choseong ssangnieun
+3166 HANGUL LETTER NIEUN-TIKEUT
+ # 1115 hangul choseong nieun-tikeut
+3167 HANGUL LETTER NIEUN-SIOS
+ # 11C7 hangul jongseong nieun-sios
+3168 HANGUL LETTER NIEUN-PANSIOS
+ # 11C8 hangul jongseong nieun-pansios
+3169 HANGUL LETTER RIEUL-KIYEOK-SIOS
+ # 11CC hangul jongseong rieul-kiyeok-sios
+316A HANGUL LETTER RIEUL-TIKEUT
+ # 11CE hangul jongseong rieul-tikeut
+316B HANGUL LETTER RIEUL-PIEUP-SIOS
+ # 11D3 hangul jongseong rieul-pieup-sios
+316C HANGUL LETTER RIEUL-PANSIOS
+ # 11D7 hangul jongseong rieul-pansios
+316D HANGUL LETTER RIEUL-YEORINHIEUH
+ # 11D9 hangul jongseong rieul-yeorinhieuh
+316E HANGUL LETTER MIEUM-PIEUP
+ # 111C hangul choseong mieum-pieup
+316F HANGUL LETTER MIEUM-SIOS
+ # 11DD hangul jongseong mieum-sios
+3170 HANGUL LETTER MIEUM-PANSIOS
+ # 11DF hangul jongseong mieum-pansios
+3171 HANGUL LETTER KAPYEOUNMIEUM
+ # 111D hangul choseong kapyeounmieum
+3172 HANGUL LETTER PIEUP-KIYEOK
+ # 111E hangul choseong pieup-kiyeok
+3173 HANGUL LETTER PIEUP-TIKEUT
+ # 1120 hangul choseong pieup-tikeut
+3174 HANGUL LETTER PIEUP-SIOS-KIYEOK
+ # 1122 hangul choseong pieup-sios-kiyeok
+3175 HANGUL LETTER PIEUP-SIOS-TIKEUT
+ # 1123 hangul choseong pieup-sios-tikeut
+3176 HANGUL LETTER PIEUP-CIEUC
+ # 1127 hangul choseong pieup-cieuc
+3177 HANGUL LETTER PIEUP-THIEUTH
+ # 1129 hangul choseong pieup-thieuth
+3178 HANGUL LETTER KAPYEOUNPIEUP
+ # 112B hangul choseong kapyeounpieup
+3179 HANGUL LETTER KAPYEOUNSSANGPIEUP
+ # 112C hangul choseong kapyeounssangpieup
+317A HANGUL LETTER SIOS-KIYEOK
+ # 112D hangul choseong sios-kiyeok
+317B HANGUL LETTER SIOS-NIEUN
+ # 112E hangul choseong sios-nieun
+317C HANGUL LETTER SIOS-TIKEUT
+ # 112F hangul choseong sios-tikeut
+317D HANGUL LETTER SIOS-PIEUP
+ # 1132 hangul choseong sios-pieup
+317E HANGUL LETTER SIOS-CIEUC
+ # 1136 hangul choseong sios-cieuc
+317F HANGUL LETTER PANSIOS
+ # 1140 hangul choseong pansios
+3180 HANGUL LETTER SSANGIEUNG
+ # 1147 hangul choseong ssangieung
+3181 HANGUL LETTER YESIEUNG
+ * archaic velar nasal
+ # 114C hangul choseong yesieung
+3182 HANGUL LETTER YESIEUNG-SIOS
+ # 11F1 hangul jongseong yesieung-sios
+3183 HANGUL LETTER YESIEUNG-PANSIOS
+ # 11F2 hangul jongseong yesieung-pansios
+3184 HANGUL LETTER KAPYEOUNPHIEUPH
+ # 1157 hangul choseong kapyeounphieuph
+3185 HANGUL LETTER SSANGHIEUH
+ # 1158 hangul choseong ssanghieuh
+3186 HANGUL LETTER YEORINHIEUH
+ * archaic glottal stop
+ # 1159 hangul choseong yeorinhieuh
+3187 HANGUL LETTER YO-YA
+ # 1184 hangul jungseong yo-ya
+3188 HANGUL LETTER YO-YAE
+ # 1185 hangul jungseong yo-yae
+3189 HANGUL LETTER YO-I
+ # 1188 hangul jungseong yo-i
+318A HANGUL LETTER YU-YEO
+ # 1191 hangul jungseong yu-yeo
+318B HANGUL LETTER YU-YE
+ # 1192 hangul jungseong yu-ye
+318C HANGUL LETTER YU-I
+ # 1194 hangul jungseong yu-i
+318D HANGUL LETTER ARAEA
+ # 119E hangul jungseong araea
+318E HANGUL LETTER ARAEAE
+ # 11A1 hangul jungseong araea-i
+@@ 3190 Kanbun 319F
+@ Kanbun
+3190 IDEOGRAPHIC ANNOTATION LINKING MARK (Kanbun Tateten)
+ = KANBUN TATETEN
+3191 IDEOGRAPHIC ANNOTATION REVERSE MARK (Kaeriten)
+ = KAERITEN RE
+3192 IDEOGRAPHIC ANNOTATION ONE MARK (Kaeriten)
+ # <super> 4E00
+3193 IDEOGRAPHIC ANNOTATION TWO MARK (Kaeriten)
+ # <super> 4E8C
+3194 IDEOGRAPHIC ANNOTATION THREE MARK (Kaeriten)
+ # <super> 4E09
+3195 IDEOGRAPHIC ANNOTATION FOUR MARK (Kaeriten)
+ # <super> 56DB
+3196 IDEOGRAPHIC ANNOTATION TOP MARK (Kaeriten)
+ # <super> 4E0A
+3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK (Kaeriten)
+ # <super> 4E2D
+3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK (Kaeriten)
+ # <super> 4E0B
+3199 IDEOGRAPHIC ANNOTATION FIRST MARK (Kaeriten)
+ # <super> 7532
+319A IDEOGRAPHIC ANNOTATION SECOND MARK (Kaeriten)
+ # <super> 4E59
+319B IDEOGRAPHIC ANNOTATION THIRD MARK (Kaeriten)
+ # <super> 4E19
+319C IDEOGRAPHIC ANNOTATION FOURTH MARK (Kaeriten)
+ # <super> 4E01
+319D IDEOGRAPHIC ANNOTATION HEAVEN MARK (Kaeriten)
+ # <super> 5929
+319E IDEOGRAPHIC ANNOTATION EARTH MARK (Kaeriten)
+ # <super> 5730
+319F IDEOGRAPHIC ANNOTATION MAN MARK (Kaeriten)
+ # <super> 4EBA
+@@ 31A0 Bopomofo Extended 31BF
+@+ See also the Bopomofo block
+@ Extended Bopomofo for Minnan and Hakka
+31A0 BOPOMOFO LETTER BU
+31A1 BOPOMOFO LETTER ZI
+31A2 BOPOMOFO LETTER JI
+31A3 BOPOMOFO LETTER GU
+31A4 BOPOMOFO LETTER EE
+31A5 BOPOMOFO LETTER ENN
+31A6 BOPOMOFO LETTER OO
+31A7 BOPOMOFO LETTER ONN
+31A8 BOPOMOFO LETTER IR
+31A9 BOPOMOFO LETTER ANN
+31AA BOPOMOFO LETTER INN
+31AB BOPOMOFO LETTER UNN
+31AC BOPOMOFO LETTER IM
+31AD BOPOMOFO LETTER NGG
+31AE BOPOMOFO LETTER AINN
+31AF BOPOMOFO LETTER AUNN
+31B0 BOPOMOFO LETTER AM
+31B1 BOPOMOFO LETTER OM
+31B2 BOPOMOFO LETTER ONG
+31B3 BOPOMOFO LETTER INNN
+31B4 BOPOMOFO FINAL LETTER P
+31B5 BOPOMOFO FINAL LETTER T
+31B6 BOPOMOFO FINAL LETTER K
+31B7 BOPOMOFO FINAL LETTER H
+@@ 3200 Enclosed CJK Letters and Months 32FF
+@ Parenthesized Hangul elements
+3200 PARENTHESIZED HANGUL KIYEOK
+ # 0028 1100 0029
+3201 PARENTHESIZED HANGUL NIEUN
+ # 0028 1102 0029
+3202 PARENTHESIZED HANGUL TIKEUT
+ # 0028 1103 0029
+3203 PARENTHESIZED HANGUL RIEUL
+ # 0028 1105 0029
+3204 PARENTHESIZED HANGUL MIEUM
+ # 0028 1106 0029
+3205 PARENTHESIZED HANGUL PIEUP
+ # 0028 1107 0029
+3206 PARENTHESIZED HANGUL SIOS
+ # 0028 1109 0029
+3207 PARENTHESIZED HANGUL IEUNG
+ # 0028 110B 0029
+3208 PARENTHESIZED HANGUL CIEUC
+ # 0028 110C 0029
+3209 PARENTHESIZED HANGUL CHIEUCH
+ # 0028 110E 0029
+320A PARENTHESIZED HANGUL KHIEUKH
+ # 0028 110F 0029
+320B PARENTHESIZED HANGUL THIEUTH
+ # 0028 1110 0029
+320C PARENTHESIZED HANGUL PHIEUPH
+ # 0028 1111 0029
+320D PARENTHESIZED HANGUL HIEUH
+ # 0028 1112 0029
+@ Parenthesized Hangul syllables
+320E PARENTHESIZED HANGUL KIYEOK A
+ # 0028 1100 1161 0029
+320F PARENTHESIZED HANGUL NIEUN A
+ # 0028 1102 1161 0029
+3210 PARENTHESIZED HANGUL TIKEUT A
+ # 0028 1103 1161 0029
+3211 PARENTHESIZED HANGUL RIEUL A
+ # 0028 1105 1161 0029
+3212 PARENTHESIZED HANGUL MIEUM A
+ # 0028 1106 1161 0029
+3213 PARENTHESIZED HANGUL PIEUP A
+ # 0028 1107 1161 0029
+3214 PARENTHESIZED HANGUL SIOS A
+ # 0028 1109 1161 0029
+3215 PARENTHESIZED HANGUL IEUNG A
+ # 0028 110B 1161 0029
+3216 PARENTHESIZED HANGUL CIEUC A
+ # 0028 110C 1161 0029
+3217 PARENTHESIZED HANGUL CHIEUCH A
+ # 0028 110E 1161 0029
+3218 PARENTHESIZED HANGUL KHIEUKH A
+ # 0028 110F 1161 0029
+3219 PARENTHESIZED HANGUL THIEUTH A
+ # 0028 1110 1161 0029
+321A PARENTHESIZED HANGUL PHIEUPH A
+ # 0028 1111 1161 0029
+321B PARENTHESIZED HANGUL HIEUH A
+ # 0028 1112 1161 0029
+321C PARENTHESIZED HANGUL CIEUC U
+ # 0028 110C 116E 0029
+@ Parenthesized ideographs
+3220 PARENTHESIZED IDEOGRAPH ONE
+ # 0028 4E00 0029
+3221 PARENTHESIZED IDEOGRAPH TWO
+ # 0028 4E8C 0029
+3222 PARENTHESIZED IDEOGRAPH THREE
+ # 0028 4E09 0029
+3223 PARENTHESIZED IDEOGRAPH FOUR
+ # 0028 56DB 0029
+3224 PARENTHESIZED IDEOGRAPH FIVE
+ # 0028 4E94 0029
+3225 PARENTHESIZED IDEOGRAPH SIX
+ # 0028 516D 0029
+3226 PARENTHESIZED IDEOGRAPH SEVEN
+ # 0028 4E03 0029
+3227 PARENTHESIZED IDEOGRAPH EIGHT
+ # 0028 516B 0029
+3228 PARENTHESIZED IDEOGRAPH NINE
+ # 0028 4E5D 0029
+3229 PARENTHESIZED IDEOGRAPH TEN
+ # 0028 5341 0029
+322A PARENTHESIZED IDEOGRAPH MOON
+ * Monday
+ # 0028 6708 0029
+322B PARENTHESIZED IDEOGRAPH FIRE
+ * Tuesday
+ # 0028 706B 0029
+322C PARENTHESIZED IDEOGRAPH WATER
+ * Wednesday
+ # 0028 6C34 0029
+322D PARENTHESIZED IDEOGRAPH WOOD
+ * Thursday
+ # 0028 6728 0029
+322E PARENTHESIZED IDEOGRAPH METAL
+ * Friday
+ # 0028 91D1 0029
+322F PARENTHESIZED IDEOGRAPH EARTH
+ * Saturday
+ # 0028 571F 0029
+3230 PARENTHESIZED IDEOGRAPH SUN
+ * Sunday
+ # 0028 65E5 0029
+3231 PARENTHESIZED IDEOGRAPH STOCK
+ * incorporated
+ # 0028 682A 0029
+3232 PARENTHESIZED IDEOGRAPH HAVE
+ * limited
+ # 0028 6709 0029
+3233 PARENTHESIZED IDEOGRAPH SOCIETY
+ * company
+ # 0028 793E 0029
+3234 PARENTHESIZED IDEOGRAPH NAME
+ # 0028 540D 0029
+3235 PARENTHESIZED IDEOGRAPH SPECIAL
+ # 0028 7279 0029
+3236 PARENTHESIZED IDEOGRAPH FINANCIAL
+ # 0028 8CA1 0029
+3237 PARENTHESIZED IDEOGRAPH CONGRATULATION
+ # 0028 795D 0029
+3238 PARENTHESIZED IDEOGRAPH LABOR
+ # 0028 52B4 0029
+3239 PARENTHESIZED IDEOGRAPH REPRESENT
+ # 0028 4EE3 0029
+323A PARENTHESIZED IDEOGRAPH CALL
+ # 0028 547C 0029
+323B PARENTHESIZED IDEOGRAPH STUDY
+ # 0028 5B66 0029
+323C PARENTHESIZED IDEOGRAPH SUPERVISE
+ # 0028 76E3 0029
+323D PARENTHESIZED IDEOGRAPH ENTERPRISE
+ # 0028 4F01 0029
+323E PARENTHESIZED IDEOGRAPH RESOURCE
+ # 0028 8CC7 0029
+323F PARENTHESIZED IDEOGRAPH ALLIANCE
+ # 0028 5354 0029
+3240 PARENTHESIZED IDEOGRAPH FESTIVAL
+ # 0028 796D 0029
+3241 PARENTHESIZED IDEOGRAPH REST
+ # 0028 4F11 0029
+3242 PARENTHESIZED IDEOGRAPH SELF
+ * from
+ # 0028 81EA 0029
+3243 PARENTHESIZED IDEOGRAPH REACH
+ * to
+ # 0028 81F3 0029
+@ Circled Hangul elements
+3260 CIRCLED HANGUL KIYEOK
+ # <circle> 1100
+3261 CIRCLED HANGUL NIEUN
+ # <circle> 1102
+3262 CIRCLED HANGUL TIKEUT
+ # <circle> 1103
+3263 CIRCLED HANGUL RIEUL
+ # <circle> 1105
+3264 CIRCLED HANGUL MIEUM
+ # <circle> 1106
+3265 CIRCLED HANGUL PIEUP
+ # <circle> 1107
+3266 CIRCLED HANGUL SIOS
+ # <circle> 1109
+3267 CIRCLED HANGUL IEUNG
+ # <circle> 110B
+3268 CIRCLED HANGUL CIEUC
+ # <circle> 110C
+3269 CIRCLED HANGUL CHIEUCH
+ # <circle> 110E
+326A CIRCLED HANGUL KHIEUKH
+ # <circle> 110F
+326B CIRCLED HANGUL THIEUTH
+ # <circle> 1110
+326C CIRCLED HANGUL PHIEUPH
+ # <circle> 1111
+326D CIRCLED HANGUL HIEUH
+ # <circle> 1112
+@ Circled Hangul syllables
+326E CIRCLED HANGUL KIYEOK A
+ # <circle> 1100 1161
+326F CIRCLED HANGUL NIEUN A
+ # <circle> 1102 1161
+3270 CIRCLED HANGUL TIKEUT A
+ # <circle> 1103 1161
+3271 CIRCLED HANGUL RIEUL A
+ # <circle> 1105 1161
+3272 CIRCLED HANGUL MIEUM A
+ # <circle> 1106 1161
+3273 CIRCLED HANGUL PIEUP A
+ # <circle> 1107 1161
+3274 CIRCLED HANGUL SIOS A
+ # <circle> 1109 1161
+3275 CIRCLED HANGUL IEUNG A
+ # <circle> 110B 1161
+3276 CIRCLED HANGUL CIEUC A
+ # <circle> 110C 1161
+3277 CIRCLED HANGUL CHIEUCH A
+ # <circle> 110E 1161
+3278 CIRCLED HANGUL KHIEUKH A
+ # <circle> 110F 1161
+3279 CIRCLED HANGUL THIEUTH A
+ # <circle> 1110 1161
+327A CIRCLED HANGUL PHIEUPH A
+ # <circle> 1111 1161
+327B CIRCLED HANGUL HIEUH A
+ # <circle> 1112 1161
+@ Symbol
+327F KOREAN STANDARD SYMBOL
+@ Circled ideographs
+3280 CIRCLED IDEOGRAPH ONE
+ = maru-iti, symbol of unification
+ # <circle> 4E00
+3281 CIRCLED IDEOGRAPH TWO
+ # <circle> 4E8C
+3282 CIRCLED IDEOGRAPH THREE
+ # <circle> 4E09
+3283 CIRCLED IDEOGRAPH FOUR
+ # <circle> 56DB
+3284 CIRCLED IDEOGRAPH FIVE
+ # <circle> 4E94
+3285 CIRCLED IDEOGRAPH SIX
+ # <circle> 516D
+3286 CIRCLED IDEOGRAPH SEVEN
+ # <circle> 4E03
+3287 CIRCLED IDEOGRAPH EIGHT
+ # <circle> 516B
+3288 CIRCLED IDEOGRAPH NINE
+ # <circle> 4E5D
+3289 CIRCLED IDEOGRAPH TEN
+ # <circle> 5341
+328A CIRCLED IDEOGRAPH MOON
+ * Monday
+ # <circle> 6708
+328B CIRCLED IDEOGRAPH FIRE
+ * Tuesday
+ # <circle> 706B
+328C CIRCLED IDEOGRAPH WATER
+ * Wednesday
+ # <circle> 6C34
+328D CIRCLED IDEOGRAPH WOOD
+ * Thursday
+ # <circle> 6728
+328E CIRCLED IDEOGRAPH METAL
+ * Friday
+ # <circle> 91D1
+328F CIRCLED IDEOGRAPH EARTH
+ * Saturday
+ # <circle> 571F
+3290 CIRCLED IDEOGRAPH SUN
+ * Sunday
+ # <circle> 65E5
+3291 CIRCLED IDEOGRAPH STOCK
+ * incorporated
+ # <circle> 682A
+3292 CIRCLED IDEOGRAPH HAVE
+ * limited
+ # <circle> 6709
+3293 CIRCLED IDEOGRAPH SOCIETY
+ * company
+ # <circle> 793E
+3294 CIRCLED IDEOGRAPH NAME
+ # <circle> 540D
+3295 CIRCLED IDEOGRAPH SPECIAL
+ # <circle> 7279
+3296 CIRCLED IDEOGRAPH FINANCIAL
+ # <circle> 8CA1
+3297 CIRCLED IDEOGRAPH CONGRATULATION
+ # <circle> 795D
+3298 CIRCLED IDEOGRAPH LABOR
+ # <circle> 52B4
+3299 CIRCLED IDEOGRAPH SECRET
+ # <circle> 79D8
+329A CIRCLED IDEOGRAPH MALE
+ # <circle> 7537
+329B CIRCLED IDEOGRAPH FEMALE
+ # <circle> 5973
+329C CIRCLED IDEOGRAPH SUITABLE
+ # <circle> 9069
+329D CIRCLED IDEOGRAPH EXCELLENT
+ # <circle> 512A
+329E CIRCLED IDEOGRAPH PRINT
+ * name seal
+ # <circle> 5370
+329F CIRCLED IDEOGRAPH ATTENTION
+ # <circle> 6CE8
+32A0 CIRCLED IDEOGRAPH ITEM
+ # <circle> 9805
+32A1 CIRCLED IDEOGRAPH REST
+ * holiday
+ # <circle> 4F11
+32A2 CIRCLED IDEOGRAPH COPY
+ # <circle> 5199
+32A3 CIRCLED IDEOGRAPH CORRECT
+ # <circle> 6B63
+32A4 CIRCLED IDEOGRAPH HIGH
+ # <circle> 4E0A
+32A5 CIRCLED IDEOGRAPH CENTRE
+ # <circle> 4E2D
+32A6 CIRCLED IDEOGRAPH LOW
+ # <circle> 4E0B
+32A7 CIRCLED IDEOGRAPH LEFT
+ # <circle> 5DE6
+32A8 CIRCLED IDEOGRAPH RIGHT
+ # <circle> 53F3
+32A9 CIRCLED IDEOGRAPH MEDICINE
+ # <circle> 533B
+32AA CIRCLED IDEOGRAPH RELIGION
+ # <circle> 5B97
+32AB CIRCLED IDEOGRAPH STUDY
+ # <circle> 5B66
+32AC CIRCLED IDEOGRAPH SUPERVISE
+ # <circle> 76E3
+32AD CIRCLED IDEOGRAPH ENTERPRISE
+ # <circle> 4F01
+32AE CIRCLED IDEOGRAPH RESOURCE
+ # <circle> 8CC7
+32AF CIRCLED IDEOGRAPH ALLIANCE
+ # <circle> 5354
+32B0 CIRCLED IDEOGRAPH NIGHT
+ # <circle> 591C
+@ Telegraph symbols for months
+32C0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+ # 0031 6708
+32C1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+ # 0032 6708
+32C2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+ # 0033 6708
+32C3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+ # 0034 6708
+32C4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+ # 0035 6708
+32C5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+ # 0036 6708
+32C6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+ # 0037 6708
+32C7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+ # 0038 6708
+32C8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+ # 0039 6708
+32C9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+ # 0031 0030 6708
+32CA IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+ # 0031 0031 6708
+32CB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+ # 0031 0032 6708
+@ Circled Katakana
+32D0 CIRCLED KATAKANA A
+ # <circle> 30A2
+32D1 CIRCLED KATAKANA I
+ # <circle> 30A4
+32D2 CIRCLED KATAKANA U
+ # <circle> 30A6
+32D3 CIRCLED KATAKANA E
+ # <circle> 30A8
+32D4 CIRCLED KATAKANA O
+ # <circle> 30AA
+32D5 CIRCLED KATAKANA KA
+ # <circle> 30AB
+32D6 CIRCLED KATAKANA KI
+ # <circle> 30AD
+32D7 CIRCLED KATAKANA KU
+ # <circle> 30AF
+32D8 CIRCLED KATAKANA KE
+ # <circle> 30B1
+32D9 CIRCLED KATAKANA KO
+ # <circle> 30B3
+32DA CIRCLED KATAKANA SA
+ # <circle> 30B5
+32DB CIRCLED KATAKANA SI
+ # <circle> 30B7
+32DC CIRCLED KATAKANA SU
+ # <circle> 30B9
+32DD CIRCLED KATAKANA SE
+ # <circle> 30BB
+32DE CIRCLED KATAKANA SO
+ # <circle> 30BD
+32DF CIRCLED KATAKANA TA
+ # <circle> 30BF
+32E0 CIRCLED KATAKANA TI
+ # <circle> 30C1
+32E1 CIRCLED KATAKANA TU
+ # <circle> 30C4
+32E2 CIRCLED KATAKANA TE
+ # <circle> 30C6
+32E3 CIRCLED KATAKANA TO
+ # <circle> 30C8
+32E4 CIRCLED KATAKANA NA
+ # <circle> 30CA
+32E5 CIRCLED KATAKANA NI
+ # <circle> 30CB
+32E6 CIRCLED KATAKANA NU
+ # <circle> 30CC
+32E7 CIRCLED KATAKANA NE
+ # <circle> 30CD
+32E8 CIRCLED KATAKANA NO
+ # <circle> 30CE
+32E9 CIRCLED KATAKANA HA
+ # <circle> 30CF
+32EA CIRCLED KATAKANA HI
+ # <circle> 30D2
+32EB CIRCLED KATAKANA HU
+ # <circle> 30D5
+32EC CIRCLED KATAKANA HE
+ # <circle> 30D8
+32ED CIRCLED KATAKANA HO
+ # <circle> 30DB
+32EE CIRCLED KATAKANA MA
+ # <circle> 30DE
+32EF CIRCLED KATAKANA MI
+ # <circle> 30DF
+32F0 CIRCLED KATAKANA MU
+ # <circle> 30E0
+32F1 CIRCLED KATAKANA ME
+ # <circle> 30E1
+32F2 CIRCLED KATAKANA MO
+ # <circle> 30E2
+32F3 CIRCLED KATAKANA YA
+ # <circle> 30E4
+32F4 CIRCLED KATAKANA YU
+ # <circle> 30E6
+32F5 CIRCLED KATAKANA YO
+ # <circle> 30E8
+32F6 CIRCLED KATAKANA RA
+ # <circle> 30E9
+32F7 CIRCLED KATAKANA RI
+ # <circle> 30EA
+32F8 CIRCLED KATAKANA RU
+ # <circle> 30EB
+32F9 CIRCLED KATAKANA RE
+ # <circle> 30EC
+32FA CIRCLED KATAKANA RO
+ # <circle> 30ED
+32FB CIRCLED KATAKANA WA
+ # <circle> 30EF
+32FC CIRCLED KATAKANA WI
+ # <circle> 30F0
+32FD CIRCLED KATAKANA WE
+ # <circle> 30F1
+32FE CIRCLED KATAKANA WO
+ # <circle> 30F2
+@@ 3300 CJK Compatibility 33FF
+@ Squared Katakana words
+3300 SQUARE APAATO
+ * apartment
+ # <square> 30A2 30D1 30FC 30C8
+3301 SQUARE ARUHUA
+ * alpha
+ # <square> 30A2 30EB 30D5 30A1
+3302 SQUARE ANPEA
+ * ampere
+ # <square> 30A2 30F3 30DA 30A2
+3303 SQUARE AARU
+ * are (unit of area)
+ # <square> 30A2 30FC 30EB
+3304 SQUARE ININGU
+ * inning
+ # <square> 30A4 30CB 30F3 30B0
+3305 SQUARE INTI
+ * inch
+ # <square> 30A4 30F3 30C1
+3306 SQUARE UON
+ * won (Korean currency)
+ # <square> 30A6 30A9 30F3
+3307 SQUARE ESUKUUDO
+ * escudo (Portuguese currency)
+ # <square> 30A8 30B9 30AF 30FC 30C9
+3308 SQUARE EEKAA
+ * acre
+ # <square> 30A8 30FC 30AB 30FC
+3309 SQUARE ONSU
+ * ounce
+ # <square> 30AA 30F3 30B9
+330A SQUARE OOMU
+ * ohm
+ # <square> 30AA 30FC 30E0
+330B SQUARE KAIRI
+ * kai-ri: nautical mile
+ # <square> 30AB 30A4 30EA
+330C SQUARE KARATTO
+ * carat
+ # <square> 30AB 30E9 30C3 30C8
+330D SQUARE KARORII
+ * calorie
+ # <square> 30AB 30ED 30EA 30FC
+330E SQUARE GARON
+ * gallon
+ # <square> 30AC 30ED 30F3
+330F SQUARE GANMA
+ * gamma
+ # <square> 30AC 30F3 30DE
+3310 SQUARE GIGA
+ * giga-
+ # <square> 30AE 30AC
+3311 SQUARE GINII
+ * guinea
+ # <square> 30AE 30CB 30FC
+3312 SQUARE KYURII
+ * curie
+ # <square> 30AD 30E5 30EA 30FC
+3313 SQUARE GIRUDAA
+ * guilder
+ # <square> 30AE 30EB 30C0 30FC
+3314 SQUARE KIRO
+ * kilo-
+ # <square> 30AD 30ED
+3315 SQUARE KIROGURAMU
+ * kilogram
+ # <square> 30AD 30ED 30B0 30E9 30E0
+3316 SQUARE KIROMEETORU
+ * kilometer
+ # <square> 30AD 30ED 30E1 30FC 30C8 30EB
+3317 SQUARE KIROWATTO
+ * kilowatt
+ # <square> 30AD 30ED 30EF 30C3 30C8
+3318 SQUARE GURAMU
+ * gram
+ # <square> 30B0 30E9 30E0
+3319 SQUARE GURAMUTON
+ * gram ton
+ # <square> 30B0 30E9 30E0 30C8 30F3
+331A SQUARE KURUZEIRO
+ * cruzeiro (Brazilian currency)
+ # <square> 30AF 30EB 30BC 30A4 30ED
+331B SQUARE KUROONE
+ * krone
+ # <square> 30AF 30ED 30FC 30CD
+331C SQUARE KEESU
+ * case
+ # <square> 30B1 30FC 30B9
+331D SQUARE KORUNA
+ * koruna (Czech currency)
+ # <square> 30B3 30EB 30CA
+331E SQUARE KOOPO
+ * co-op
+ # <square> 30B3 30FC 30DD
+331F SQUARE SAIKURU
+ * cycle
+ # <square> 30B5 30A4 30AF 30EB
+3320 SQUARE SANTIIMU
+ * centime
+ # <square> 30B5 30F3 30C1 30FC 30E0
+3321 SQUARE SIRINGU
+ * shilling
+ # <square> 30B7 30EA 30F3 30B0
+3322 SQUARE SENTI
+ * centi-
+ # <square> 30BB 30F3 30C1
+3323 SQUARE SENTO
+ * cent
+ # <square> 30BB 30F3 30C8
+3324 SQUARE DAASU
+ * dozen
+ # <square> 30C0 30FC 30B9
+3325 SQUARE DESI
+ * deci-
+ # <square> 30C7 30B7
+3326 SQUARE DORU
+ * dollar
+ # <square> 30C9 30EB
+3327 SQUARE TON
+ * ton
+ # <square> 30C8 30F3
+3328 SQUARE NANO
+ * nano-
+ # <square> 30CA 30CE
+3329 SQUARE NOTTO
+ * knot, nautical mile
+ # <square> 30CE 30C3 30C8
+332A SQUARE HAITU
+ * heights
+ # <square> 30CF 30A4 30C4
+332B SQUARE PAASENTO
+ * percent
+ # <square> 30D1 30FC 30BB 30F3 30C8
+332C SQUARE PAATU
+ * parts
+ # <square> 30D1 30FC 30C4
+332D SQUARE BAARERU
+ * barrel
+ # <square> 30D0 30FC 30EC 30EB
+332E SQUARE PIASUTORU
+ * piaster
+ # <square> 30D4 30A2 30B9 30C8 30EB
+332F SQUARE PIKURU
+ * picul (unit of weight)
+ # <square> 30D4 30AF 30EB
+3330 SQUARE PIKO
+ * pico-
+ # <square> 30D4 30B3
+3331 SQUARE BIRU
+ * building
+ # <square> 30D3 30EB
+3332 SQUARE HUARADDO
+ * farad
+ # <square> 30D5 30A1 30E9 30C3 30C9
+3333 SQUARE HUIITO
+ * feet
+ # <square> 30D5 30A3 30FC 30C8
+3334 SQUARE BUSSYERU
+ * bushel
+ # <square> 30D6 30C3 30B7 30A7 30EB
+3335 SQUARE HURAN
+ * franc
+ # <square> 30D5 30E9 30F3
+3336 SQUARE HEKUTAARU
+ * hectare
+ # <square> 30D8 30AF 30BF 30FC 30EB
+3337 SQUARE PESO
+ * peso
+ # <square> 30DA 30BD
+3338 SQUARE PENIHI
+ * pfennig
+ # <square> 30DA 30CB 30D2
+3339 SQUARE HERUTU
+ * hertz
+ # <square> 30D8 30EB 30C4
+333A SQUARE PENSU
+ * pence
+ # <square> 30DA 30F3 30B9
+333B SQUARE PEEZI
+ * page
+ # <square> 30DA 30FC 30B8
+333C SQUARE BEETA
+ * beta
+ # <square> 30D9 30FC 30BF
+333D SQUARE POINTO
+ * point
+ # <square> 30DD 30A4 30F3 30C8
+333E SQUARE BORUTO
+ * volt, bolt
+ # <square> 30DC 30EB 30C8
+333F SQUARE HON
+ * hon: volume
+ # <square> 30DB 30F3
+3340 SQUARE PONDO
+ * pound
+ # <square> 30DD 30F3 30C9
+3341 SQUARE HOORU
+ * hall
+ # <square> 30DB 30FC 30EB
+3342 SQUARE HOON
+ * horn
+ # <square> 30DB 30FC 30F3
+3343 SQUARE MAIKURO
+ * micro-
+ # <square> 30DE 30A4 30AF 30ED
+3344 SQUARE MAIRU
+ * mile
+ # <square> 30DE 30A4 30EB
+3345 SQUARE MAHHA
+ * mach
+ # <square> 30DE 30C3 30CF
+3346 SQUARE MARUKU
+ * mark
+ # <square> 30DE 30EB 30AF
+3347 SQUARE MANSYON
+ * mansion (i.e. better quality apartment)
+ # <square> 30DE 30F3 30B7 30E7 30F3
+3348 SQUARE MIKURON
+ * micron
+ # <square> 30DF 30AF 30ED 30F3
+3349 SQUARE MIRI
+ * milli-
+ # <square> 30DF 30EA
+334A SQUARE MIRIBAARU
+ * millibar
+ # <square> 30DF 30EA 30D0 30FC 30EB
+334B SQUARE MEGA
+ * mega-
+ # <square> 30E1 30AC
+334C SQUARE MEGATON
+ * megaton
+ # <square> 30E1 30AC 30C8 30F3
+334D SQUARE MEETORU
+ * meter
+ # <square> 30E1 30FC 30C8 30EB
+334E SQUARE YAADO
+ * yard
+ # <square> 30E4 30FC 30C9
+334F SQUARE YAARU
+ * yard
+ # <square> 30E4 30FC 30EB
+3350 SQUARE YUAN
+ * yuan (Chinese currency)
+ # <square> 30E6 30A2 30F3
+3351 SQUARE RITTORU
+ * liter
+ # <square> 30EA 30C3 30C8 30EB
+3352 SQUARE RIRA
+ * lira
+ # <square> 30EA 30E9
+3353 SQUARE RUPII
+ * rupee
+ # <square> 30EB 30D4 30FC
+3354 SQUARE RUUBURU
+ * ruble
+ # <square> 30EB 30FC 30D6 30EB
+3355 SQUARE REMU
+ * rem (unit of radiation)
+ # <square> 30EC 30E0
+3356 SQUARE RENTOGEN
+ * roentgen
+ # <square> 30EC 30F3 30C8 30B2 30F3
+3357 SQUARE WATTO
+ * watt
+ # <square> 30EF 30C3 30C8
+@ Telegraph symbols for hours
+3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+ # 0030 70B9
+3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+ # 0031 70B9
+335A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+ # 0032 70B9
+335B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+ # 0033 70B9
+335C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+ # 0034 70B9
+335D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+ # 0035 70B9
+335E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+ # 0036 70B9
+335F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+ # 0037 70B9
+3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+ # 0038 70B9
+3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+ # 0039 70B9
+3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+ # 0031 0030 70B9
+3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+ # 0031 0031 70B9
+3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+ # 0031 0032 70B9
+3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+ # 0031 0033 70B9
+3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+ # 0031 0034 70B9
+3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+ # 0031 0035 70B9
+3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+ # 0031 0036 70B9
+3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+ # 0031 0037 70B9
+336A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+ # 0031 0038 70B9
+336B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+ # 0031 0039 70B9
+336C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+ # 0032 0030 70B9
+336D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+ # 0032 0031 70B9
+336E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+ # 0032 0032 70B9
+336F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+ # 0032 0033 70B9
+3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+ # 0032 0034 70B9
+@ Squared Latin abbreviations
+3371 SQUARE HPA
+ # <square> 0068 0050 0061
+3372 SQUARE DA
+ # <square> 0064 0061
+3373 SQUARE AU
+ # <square> 0041 0055
+3374 SQUARE BAR
+ # <square> 0062 0061 0072
+3375 SQUARE OV
+ # <square> 006F 0056
+3376 SQUARE PC
+ # <square> 0070 0063
+@ Japanese era names
+337B SQUARE ERA NAME HEISEI
+ # <square> 5E73 6210
+337C SQUARE ERA NAME SYOUWA
+ # <square> 662D 548C
+337D SQUARE ERA NAME TAISYOU
+ # <square> 5927 6B63
+337E SQUARE ERA NAME MEIZI
+ # <square> 660E 6CBB
+@ Japanese corporation
+337F SQUARE CORPORATION
+ = kabusiki-gaisya
+ * incorporated
+ # <square> 682A 5F0F 4F1A 793E
+@ Squared Latin abbreviations
+3380 SQUARE PA AMPS
+ # <square> 0070 0041
+3381 SQUARE NA
+ # <square> 006E 0041
+3382 SQUARE MU A
+ # <square> 03BC 0041
+3383 SQUARE MA
+ # <square> 006D 0041
+3384 SQUARE KA
+ # <square> 006B 0041
+3385 SQUARE KB
+ # <square> 004B 0042
+3386 SQUARE MB
+ # <square> 004D 0042
+3387 SQUARE GB
+ # <square> 0047 0042
+3388 SQUARE CAL
+ # <square> 0063 0061 006C
+3389 SQUARE KCAL
+ # <square> 006B 0063 0061 006C
+338A SQUARE PF
+ # <square> 0070 0046
+338B SQUARE NF
+ # <square> 006E 0046
+338C SQUARE MU F
+ # <square> 03BC 0046
+338D SQUARE MU G
+ # <square> 03BC 0067
+338E SQUARE MG
+ # <square> 006D 0067
+338F SQUARE KG
+ # <square> 006B 0067
+3390 SQUARE HZ
+ # <square> 0048 007A
+3391 SQUARE KHZ
+ # <square> 006B 0048 007A
+3392 SQUARE MHZ
+ # <square> 004D 0048 007A
+3393 SQUARE GHZ
+ # <square> 0047 0048 007A
+3394 SQUARE THZ
+ # <square> 0054 0048 007A
+3395 SQUARE MU L
+ # <square> 03BC 2113
+3396 SQUARE ML
+ # <square> 006D 2113
+3397 SQUARE DL
+ # <square> 0064 2113
+3398 SQUARE KL
+ # <square> 006B 2113
+3399 SQUARE FM
+ # <square> 0066 006D
+339A SQUARE NM
+ # <square> 006E 006D
+339B SQUARE MU M
+ # <square> 03BC 006D
+339C SQUARE MM
+ # <square> 006D 006D
+339D SQUARE CM
+ # <square> 0063 006D
+339E SQUARE KM
+ # <square> 006B 006D
+339F SQUARE MM SQUARED
+ # <square> 006D 006D 00B2
+33A0 SQUARE CM SQUARED
+ # <square> 0063 006D 00B2
+33A1 SQUARE M SQUARED
+ # <square> 006D 00B2
+33A2 SQUARE KM SQUARED
+ # <square> 006B 006D 00B2
+33A3 SQUARE MM CUBED
+ # <square> 006D 006D 00B3
+33A4 SQUARE CM CUBED
+ # <square> 0063 006D 00B3
+33A5 SQUARE M CUBED
+ # <square> 006D 00B3
+33A6 SQUARE KM CUBED
+ # <square> 006B 006D 00B3
+33A7 SQUARE M OVER S
+ # <square> 006D 2215 0073
+33A8 SQUARE M OVER S SQUARED
+ # <square> 006D 2215 0073 00B2
+33A9 SQUARE PA
+ # <square> 0050 0061
+33AA SQUARE KPA
+ # <square> 006B 0050 0061
+33AB SQUARE MPA
+ # <square> 004D 0050 0061
+33AC SQUARE GPA
+ # <square> 0047 0050 0061
+33AD SQUARE RAD
+ # <square> 0072 0061 0064
+33AE SQUARE RAD OVER S
+ # <square> 0072 0061 0064 2215 0073
+33AF SQUARE RAD OVER S SQUARED
+ # <square> 0072 0061 0064 2215 0073 00B2
+33B0 SQUARE PS
+ # <square> 0070 0073
+33B1 SQUARE NS
+ # <square> 006E 0073
+33B2 SQUARE MU S
+ # <square> 03BC 0073
+33B3 SQUARE MS
+ # <square> 006D 0073
+33B4 SQUARE PV
+ # <square> 0070 0056
+33B5 SQUARE NV
+ # <square> 006E 0056
+33B6 SQUARE MU V
+ # <square> 03BC 0056
+33B7 SQUARE MV
+ # <square> 006D 0056
+33B8 SQUARE KV
+ # <square> 006B 0056
+33B9 SQUARE MV MEGA
+ # <square> 004D 0056
+33BA SQUARE PW
+ # <square> 0070 0057
+33BB SQUARE NW
+ # <square> 006E 0057
+33BC SQUARE MU W
+ # <square> 03BC 0057
+33BD SQUARE MW
+ # <square> 006D 0057
+33BE SQUARE KW
+ # <square> 006B 0057
+33BF SQUARE MW MEGA
+ # <square> 004D 0057
+33C0 SQUARE K OHM
+ # <square> 006B 03A9
+33C1 SQUARE M OHM
+ # <square> 004D 03A9
+33C2 SQUARE AM
+ # <square> 0061 002E 006D 002E
+33C3 SQUARE BQ
+ # <square> 0042 0071
+33C4 SQUARE CC
+ # <square> 0063 0063
+33C5 SQUARE CD
+ # <square> 0063 0064
+33C6 SQUARE C OVER KG
+ # <square> 0043 2215 006B 0067
+33C7 SQUARE CO
+ # <square> 0043 006F 002E
+33C8 SQUARE DB
+ # <square> 0064 0042
+33C9 SQUARE GY
+ # <square> 0047 0079
+33CA SQUARE HA
+ # <square> 0068 0061
+33CB SQUARE HP
+ # <square> 0048 0050
+33CC SQUARE IN
+ # <square> 0069 006E
+33CD SQUARE KK
+ # <square> 004B 004B
+33CE SQUARE KM CAPITAL
+ # <square> 004B 004D
+33CF SQUARE KT
+ # <square> 006B 0074
+33D0 SQUARE LM
+ # <square> 006C 006D
+33D1 SQUARE LN
+ # <square> 006C 006E
+33D2 SQUARE LOG
+ # <square> 006C 006F 0067
+33D3 SQUARE LX
+ # <square> 006C 0078
+33D4 SQUARE MB SMALL
+ # <square> 006D 0062
+33D5 SQUARE MIL
+ # <square> 006D 0069 006C
+33D6 SQUARE MOL
+ # <square> 006D 006F 006C
+33D7 SQUARE PH
+ # <square> 0050 0048
+33D8 SQUARE PM
+ # <square> 0070 002E 006D 002E
+33D9 SQUARE PPM
+ # <square> 0050 0050 004D
+33DA SQUARE PR
+ # <square> 0050 0052
+33DB SQUARE SR
+ # <square> 0073 0072
+33DC SQUARE SV
+ # <square> 0053 0076
+33DD SQUARE WB
+ # <square> 0057 0062
+@ Telegraph symbols for days
+33E0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+ # 0031 65E5
+33E1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+ # 0032 65E5
+33E2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+ # 0033 65E5
+33E3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+ # 0034 65E5
+33E4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+ # 0035 65E5
+33E5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+ # 0036 65E5
+33E6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+ # 0037 65E5
+33E7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+ # 0038 65E5
+33E8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+ # 0039 65E5
+33E9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+ # 0031 0030 65E5
+33EA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+ # 0031 0031 65E5
+33EB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+ # 0031 0032 65E5
+33EC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+ # 0031 0033 65E5
+33ED IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+ # 0031 0034 65E5
+33EE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+ # 0031 0035 65E5
+33EF IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+ # 0031 0036 65E5
+33F0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+ # 0031 0037 65E5
+33F1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+ # 0031 0038 65E5
+33F2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+ # 0031 0039 65E5
+33F3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+ # 0032 0030 65E5
+33F4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+ # 0032 0031 65E5
+33F5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+ # 0032 0032 65E5
+33F6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+ # 0032 0033 65E5
+33F7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+ # 0032 0034 65E5
+33F8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+ # 0032 0035 65E5
+33F9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+ # 0032 0036 65E5
+33FA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+ # 0032 0037 65E5
+33FB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+ # 0032 0038 65E5
+33FC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+ # 0032 0039 65E5
+33FD IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+ # 0033 0030 65E5
+33FE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+ # 0033 0031 65E5
+@@ 3400 CJK Unified Ideographs Extension A 4DB5
+@@ 4E00 CJK Unified Ideographs 9FA5
+@@ A000 Yi Syllables A48F
+@ Syllables
+A000 YI SYLLABLE IT
+A001 YI SYLLABLE IX
+A002 YI SYLLABLE I
+A003 YI SYLLABLE IP
+A004 YI SYLLABLE IET
+A005 YI SYLLABLE IEX
+A006 YI SYLLABLE IE
+A007 YI SYLLABLE IEP
+A008 YI SYLLABLE AT
+A009 YI SYLLABLE AX
+A00A YI SYLLABLE A
+A00B YI SYLLABLE AP
+A00C YI SYLLABLE UOX
+A00D YI SYLLABLE UO
+A00E YI SYLLABLE UOP
+A00F YI SYLLABLE OT
+A010 YI SYLLABLE OX
+A011 YI SYLLABLE O
+A012 YI SYLLABLE OP
+A013 YI SYLLABLE EX
+A014 YI SYLLABLE E
+A015 YI SYLLABLE WU
+A016 YI SYLLABLE BIT
+A017 YI SYLLABLE BIX
+A018 YI SYLLABLE BI
+A019 YI SYLLABLE BIP
+A01A YI SYLLABLE BIET
+A01B YI SYLLABLE BIEX
+A01C YI SYLLABLE BIE
+A01D YI SYLLABLE BIEP
+A01E YI SYLLABLE BAT
+A01F YI SYLLABLE BAX
+A020 YI SYLLABLE BA
+A021 YI SYLLABLE BAP
+A022 YI SYLLABLE BUOX
+A023 YI SYLLABLE BUO
+A024 YI SYLLABLE BUOP
+A025 YI SYLLABLE BOT
+A026 YI SYLLABLE BOX
+A027 YI SYLLABLE BO
+A028 YI SYLLABLE BOP
+A029 YI SYLLABLE BEX
+A02A YI SYLLABLE BE
+A02B YI SYLLABLE BEP
+A02C YI SYLLABLE BUT
+A02D YI SYLLABLE BUX
+A02E YI SYLLABLE BU
+A02F YI SYLLABLE BUP
+A030 YI SYLLABLE BURX
+A031 YI SYLLABLE BUR
+A032 YI SYLLABLE BYT
+A033 YI SYLLABLE BYX
+A034 YI SYLLABLE BY
+A035 YI SYLLABLE BYP
+A036 YI SYLLABLE BYRX
+A037 YI SYLLABLE BYR
+A038 YI SYLLABLE PIT
+A039 YI SYLLABLE PIX
+A03A YI SYLLABLE PI
+A03B YI SYLLABLE PIP
+A03C YI SYLLABLE PIEX
+A03D YI SYLLABLE PIE
+A03E YI SYLLABLE PIEP
+A03F YI SYLLABLE PAT
+A040 YI SYLLABLE PAX
+A041 YI SYLLABLE PA
+A042 YI SYLLABLE PAP
+A043 YI SYLLABLE PUOX
+A044 YI SYLLABLE PUO
+A045 YI SYLLABLE PUOP
+A046 YI SYLLABLE POT
+A047 YI SYLLABLE POX
+A048 YI SYLLABLE PO
+A049 YI SYLLABLE POP
+A04A YI SYLLABLE PUT
+A04B YI SYLLABLE PUX
+A04C YI SYLLABLE PU
+A04D YI SYLLABLE PUP
+A04E YI SYLLABLE PURX
+A04F YI SYLLABLE PUR
+A050 YI SYLLABLE PYT
+A051 YI SYLLABLE PYX
+A052 YI SYLLABLE PY
+A053 YI SYLLABLE PYP
+A054 YI SYLLABLE PYRX
+A055 YI SYLLABLE PYR
+A056 YI SYLLABLE BBIT
+A057 YI SYLLABLE BBIX
+A058 YI SYLLABLE BBI
+A059 YI SYLLABLE BBIP
+A05A YI SYLLABLE BBIET
+A05B YI SYLLABLE BBIEX
+A05C YI SYLLABLE BBIE
+A05D YI SYLLABLE BBIEP
+A05E YI SYLLABLE BBAT
+A05F YI SYLLABLE BBAX
+A060 YI SYLLABLE BBA
+A061 YI SYLLABLE BBAP
+A062 YI SYLLABLE BBUOX
+A063 YI SYLLABLE BBUO
+A064 YI SYLLABLE BBUOP
+A065 YI SYLLABLE BBOT
+A066 YI SYLLABLE BBOX
+A067 YI SYLLABLE BBO
+A068 YI SYLLABLE BBOP
+A069 YI SYLLABLE BBEX
+A06A YI SYLLABLE BBE
+A06B YI SYLLABLE BBEP
+A06C YI SYLLABLE BBUT
+A06D YI SYLLABLE BBUX
+A06E YI SYLLABLE BBU
+A06F YI SYLLABLE BBUP
+A070 YI SYLLABLE BBURX
+A071 YI SYLLABLE BBUR
+A072 YI SYLLABLE BBYT
+A073 YI SYLLABLE BBYX
+A074 YI SYLLABLE BBY
+A075 YI SYLLABLE BBYP
+A076 YI SYLLABLE NBIT
+A077 YI SYLLABLE NBIX
+A078 YI SYLLABLE NBI
+A079 YI SYLLABLE NBIP
+A07A YI SYLLABLE NBIEX
+A07B YI SYLLABLE NBIE
+A07C YI SYLLABLE NBIEP
+A07D YI SYLLABLE NBAT
+A07E YI SYLLABLE NBAX
+A07F YI SYLLABLE NBA
+A080 YI SYLLABLE NBAP
+A081 YI SYLLABLE NBOT
+A082 YI SYLLABLE NBOX
+A083 YI SYLLABLE NBO
+A084 YI SYLLABLE NBOP
+A085 YI SYLLABLE NBUT
+A086 YI SYLLABLE NBUX
+A087 YI SYLLABLE NBU
+A088 YI SYLLABLE NBUP
+A089 YI SYLLABLE NBURX
+A08A YI SYLLABLE NBUR
+A08B YI SYLLABLE NBYT
+A08C YI SYLLABLE NBYX
+A08D YI SYLLABLE NBY
+A08E YI SYLLABLE NBYP
+A08F YI SYLLABLE NBYRX
+A090 YI SYLLABLE NBYR
+A091 YI SYLLABLE HMIT
+A092 YI SYLLABLE HMIX
+A093 YI SYLLABLE HMI
+A094 YI SYLLABLE HMIP
+A095 YI SYLLABLE HMIEX
+A096 YI SYLLABLE HMIE
+A097 YI SYLLABLE HMIEP
+A098 YI SYLLABLE HMAT
+A099 YI SYLLABLE HMAX
+A09A YI SYLLABLE HMA
+A09B YI SYLLABLE HMAP
+A09C YI SYLLABLE HMUOX
+A09D YI SYLLABLE HMUO
+A09E YI SYLLABLE HMUOP
+A09F YI SYLLABLE HMOT
+A0A0 YI SYLLABLE HMOX
+A0A1 YI SYLLABLE HMO
+A0A2 YI SYLLABLE HMOP
+A0A3 YI SYLLABLE HMUT
+A0A4 YI SYLLABLE HMUX
+A0A5 YI SYLLABLE HMU
+A0A6 YI SYLLABLE HMUP
+A0A7 YI SYLLABLE HMURX
+A0A8 YI SYLLABLE HMUR
+A0A9 YI SYLLABLE HMYX
+A0AA YI SYLLABLE HMY
+A0AB YI SYLLABLE HMYP
+A0AC YI SYLLABLE HMYRX
+A0AD YI SYLLABLE HMYR
+A0AE YI SYLLABLE MIT
+A0AF YI SYLLABLE MIX
+A0B0 YI SYLLABLE MI
+A0B1 YI SYLLABLE MIP
+A0B2 YI SYLLABLE MIEX
+A0B3 YI SYLLABLE MIE
+A0B4 YI SYLLABLE MIEP
+A0B5 YI SYLLABLE MAT
+A0B6 YI SYLLABLE MAX
+A0B7 YI SYLLABLE MA
+A0B8 YI SYLLABLE MAP
+A0B9 YI SYLLABLE MUOT
+A0BA YI SYLLABLE MUOX
+A0BB YI SYLLABLE MUO
+A0BC YI SYLLABLE MUOP
+A0BD YI SYLLABLE MOT
+A0BE YI SYLLABLE MOX
+A0BF YI SYLLABLE MO
+A0C0 YI SYLLABLE MOP
+A0C1 YI SYLLABLE MEX
+A0C2 YI SYLLABLE ME
+A0C3 YI SYLLABLE MUT
+A0C4 YI SYLLABLE MUX
+A0C5 YI SYLLABLE MU
+A0C6 YI SYLLABLE MUP
+A0C7 YI SYLLABLE MURX
+A0C8 YI SYLLABLE MUR
+A0C9 YI SYLLABLE MYT
+A0CA YI SYLLABLE MYX
+A0CB YI SYLLABLE MY
+A0CC YI SYLLABLE MYP
+A0CD YI SYLLABLE FIT
+A0CE YI SYLLABLE FIX
+A0CF YI SYLLABLE FI
+A0D0 YI SYLLABLE FIP
+A0D1 YI SYLLABLE FAT
+A0D2 YI SYLLABLE FAX
+A0D3 YI SYLLABLE FA
+A0D4 YI SYLLABLE FAP
+A0D5 YI SYLLABLE FOX
+A0D6 YI SYLLABLE FO
+A0D7 YI SYLLABLE FOP
+A0D8 YI SYLLABLE FUT
+A0D9 YI SYLLABLE FUX
+A0DA YI SYLLABLE FU
+A0DB YI SYLLABLE FUP
+A0DC YI SYLLABLE FURX
+A0DD YI SYLLABLE FUR
+A0DE YI SYLLABLE FYT
+A0DF YI SYLLABLE FYX
+A0E0 YI SYLLABLE FY
+A0E1 YI SYLLABLE FYP
+A0E2 YI SYLLABLE VIT
+A0E3 YI SYLLABLE VIX
+A0E4 YI SYLLABLE VI
+A0E5 YI SYLLABLE VIP
+A0E6 YI SYLLABLE VIET
+A0E7 YI SYLLABLE VIEX
+A0E8 YI SYLLABLE VIE
+A0E9 YI SYLLABLE VIEP
+A0EA YI SYLLABLE VAT
+A0EB YI SYLLABLE VAX
+A0EC YI SYLLABLE VA
+A0ED YI SYLLABLE VAP
+A0EE YI SYLLABLE VOT
+A0EF YI SYLLABLE VOX
+A0F0 YI SYLLABLE VO
+A0F1 YI SYLLABLE VOP
+A0F2 YI SYLLABLE VEX
+A0F3 YI SYLLABLE VEP
+A0F4 YI SYLLABLE VUT
+A0F5 YI SYLLABLE VUX
+A0F6 YI SYLLABLE VU
+A0F7 YI SYLLABLE VUP
+A0F8 YI SYLLABLE VURX
+A0F9 YI SYLLABLE VUR
+A0FA YI SYLLABLE VYT
+A0FB YI SYLLABLE VYX
+A0FC YI SYLLABLE VY
+A0FD YI SYLLABLE VYP
+A0FE YI SYLLABLE VYRX
+A0FF YI SYLLABLE VYR
+A100 YI SYLLABLE DIT
+A101 YI SYLLABLE DIX
+A102 YI SYLLABLE DI
+A103 YI SYLLABLE DIP
+A104 YI SYLLABLE DIEX
+A105 YI SYLLABLE DIE
+A106 YI SYLLABLE DIEP
+A107 YI SYLLABLE DAT
+A108 YI SYLLABLE DAX
+A109 YI SYLLABLE DA
+A10A YI SYLLABLE DAP
+A10B YI SYLLABLE DUOX
+A10C YI SYLLABLE DUO
+A10D YI SYLLABLE DOT
+A10E YI SYLLABLE DOX
+A10F YI SYLLABLE DO
+A110 YI SYLLABLE DOP
+A111 YI SYLLABLE DEX
+A112 YI SYLLABLE DE
+A113 YI SYLLABLE DEP
+A114 YI SYLLABLE DUT
+A115 YI SYLLABLE DUX
+A116 YI SYLLABLE DU
+A117 YI SYLLABLE DUP
+A118 YI SYLLABLE DURX
+A119 YI SYLLABLE DUR
+A11A YI SYLLABLE TIT
+A11B YI SYLLABLE TIX
+A11C YI SYLLABLE TI
+A11D YI SYLLABLE TIP
+A11E YI SYLLABLE TIEX
+A11F YI SYLLABLE TIE
+A120 YI SYLLABLE TIEP
+A121 YI SYLLABLE TAT
+A122 YI SYLLABLE TAX
+A123 YI SYLLABLE TA
+A124 YI SYLLABLE TAP
+A125 YI SYLLABLE TUOT
+A126 YI SYLLABLE TUOX
+A127 YI SYLLABLE TUO
+A128 YI SYLLABLE TUOP
+A129 YI SYLLABLE TOT
+A12A YI SYLLABLE TOX
+A12B YI SYLLABLE TO
+A12C YI SYLLABLE TOP
+A12D YI SYLLABLE TEX
+A12E YI SYLLABLE TE
+A12F YI SYLLABLE TEP
+A130 YI SYLLABLE TUT
+A131 YI SYLLABLE TUX
+A132 YI SYLLABLE TU
+A133 YI SYLLABLE TUP
+A134 YI SYLLABLE TURX
+A135 YI SYLLABLE TUR
+A136 YI SYLLABLE DDIT
+A137 YI SYLLABLE DDIX
+A138 YI SYLLABLE DDI
+A139 YI SYLLABLE DDIP
+A13A YI SYLLABLE DDIEX
+A13B YI SYLLABLE DDIE
+A13C YI SYLLABLE DDIEP
+A13D YI SYLLABLE DDAT
+A13E YI SYLLABLE DDAX
+A13F YI SYLLABLE DDA
+A140 YI SYLLABLE DDAP
+A141 YI SYLLABLE DDUOX
+A142 YI SYLLABLE DDUO
+A143 YI SYLLABLE DDUOP
+A144 YI SYLLABLE DDOT
+A145 YI SYLLABLE DDOX
+A146 YI SYLLABLE DDO
+A147 YI SYLLABLE DDOP
+A148 YI SYLLABLE DDEX
+A149 YI SYLLABLE DDE
+A14A YI SYLLABLE DDEP
+A14B YI SYLLABLE DDUT
+A14C YI SYLLABLE DDUX
+A14D YI SYLLABLE DDU
+A14E YI SYLLABLE DDUP
+A14F YI SYLLABLE DDURX
+A150 YI SYLLABLE DDUR
+A151 YI SYLLABLE NDIT
+A152 YI SYLLABLE NDIX
+A153 YI SYLLABLE NDI
+A154 YI SYLLABLE NDIP
+A155 YI SYLLABLE NDIEX
+A156 YI SYLLABLE NDIE
+A157 YI SYLLABLE NDAT
+A158 YI SYLLABLE NDAX
+A159 YI SYLLABLE NDA
+A15A YI SYLLABLE NDAP
+A15B YI SYLLABLE NDOT
+A15C YI SYLLABLE NDOX
+A15D YI SYLLABLE NDO
+A15E YI SYLLABLE NDOP
+A15F YI SYLLABLE NDEX
+A160 YI SYLLABLE NDE
+A161 YI SYLLABLE NDEP
+A162 YI SYLLABLE NDUT
+A163 YI SYLLABLE NDUX
+A164 YI SYLLABLE NDU
+A165 YI SYLLABLE NDUP
+A166 YI SYLLABLE NDURX
+A167 YI SYLLABLE NDUR
+A168 YI SYLLABLE HNIT
+A169 YI SYLLABLE HNIX
+A16A YI SYLLABLE HNI
+A16B YI SYLLABLE HNIP
+A16C YI SYLLABLE HNIET
+A16D YI SYLLABLE HNIEX
+A16E YI SYLLABLE HNIE
+A16F YI SYLLABLE HNIEP
+A170 YI SYLLABLE HNAT
+A171 YI SYLLABLE HNAX
+A172 YI SYLLABLE HNA
+A173 YI SYLLABLE HNAP
+A174 YI SYLLABLE HNUOX
+A175 YI SYLLABLE HNUO
+A176 YI SYLLABLE HNOT
+A177 YI SYLLABLE HNOX
+A178 YI SYLLABLE HNOP
+A179 YI SYLLABLE HNEX
+A17A YI SYLLABLE HNE
+A17B YI SYLLABLE HNEP
+A17C YI SYLLABLE HNUT
+A17D YI SYLLABLE NIT
+A17E YI SYLLABLE NIX
+A17F YI SYLLABLE NI
+A180 YI SYLLABLE NIP
+A181 YI SYLLABLE NIEX
+A182 YI SYLLABLE NIE
+A183 YI SYLLABLE NIEP
+A184 YI SYLLABLE NAX
+A185 YI SYLLABLE NA
+A186 YI SYLLABLE NAP
+A187 YI SYLLABLE NUOX
+A188 YI SYLLABLE NUO
+A189 YI SYLLABLE NUOP
+A18A YI SYLLABLE NOT
+A18B YI SYLLABLE NOX
+A18C YI SYLLABLE NO
+A18D YI SYLLABLE NOP
+A18E YI SYLLABLE NEX
+A18F YI SYLLABLE NE
+A190 YI SYLLABLE NEP
+A191 YI SYLLABLE NUT
+A192 YI SYLLABLE NUX
+A193 YI SYLLABLE NU
+A194 YI SYLLABLE NUP
+A195 YI SYLLABLE NURX
+A196 YI SYLLABLE NUR
+A197 YI SYLLABLE HLIT
+A198 YI SYLLABLE HLIX
+A199 YI SYLLABLE HLI
+A19A YI SYLLABLE HLIP
+A19B YI SYLLABLE HLIEX
+A19C YI SYLLABLE HLIE
+A19D YI SYLLABLE HLIEP
+A19E YI SYLLABLE HLAT
+A19F YI SYLLABLE HLAX
+A1A0 YI SYLLABLE HLA
+A1A1 YI SYLLABLE HLAP
+A1A2 YI SYLLABLE HLUOX
+A1A3 YI SYLLABLE HLUO
+A1A4 YI SYLLABLE HLUOP
+A1A5 YI SYLLABLE HLOX
+A1A6 YI SYLLABLE HLO
+A1A7 YI SYLLABLE HLOP
+A1A8 YI SYLLABLE HLEX
+A1A9 YI SYLLABLE HLE
+A1AA YI SYLLABLE HLEP
+A1AB YI SYLLABLE HLUT
+A1AC YI SYLLABLE HLUX
+A1AD YI SYLLABLE HLU
+A1AE YI SYLLABLE HLUP
+A1AF YI SYLLABLE HLURX
+A1B0 YI SYLLABLE HLUR
+A1B1 YI SYLLABLE HLYT
+A1B2 YI SYLLABLE HLYX
+A1B3 YI SYLLABLE HLY
+A1B4 YI SYLLABLE HLYP
+A1B5 YI SYLLABLE HLYRX
+A1B6 YI SYLLABLE HLYR
+A1B7 YI SYLLABLE LIT
+A1B8 YI SYLLABLE LIX
+A1B9 YI SYLLABLE LI
+A1BA YI SYLLABLE LIP
+A1BB YI SYLLABLE LIET
+A1BC YI SYLLABLE LIEX
+A1BD YI SYLLABLE LIE
+A1BE YI SYLLABLE LIEP
+A1BF YI SYLLABLE LAT
+A1C0 YI SYLLABLE LAX
+A1C1 YI SYLLABLE LA
+A1C2 YI SYLLABLE LAP
+A1C3 YI SYLLABLE LUOT
+A1C4 YI SYLLABLE LUOX
+A1C5 YI SYLLABLE LUO
+A1C6 YI SYLLABLE LUOP
+A1C7 YI SYLLABLE LOT
+A1C8 YI SYLLABLE LOX
+A1C9 YI SYLLABLE LO
+A1CA YI SYLLABLE LOP
+A1CB YI SYLLABLE LEX
+A1CC YI SYLLABLE LE
+A1CD YI SYLLABLE LEP
+A1CE YI SYLLABLE LUT
+A1CF YI SYLLABLE LUX
+A1D0 YI SYLLABLE LU
+A1D1 YI SYLLABLE LUP
+A1D2 YI SYLLABLE LURX
+A1D3 YI SYLLABLE LUR
+A1D4 YI SYLLABLE LYT
+A1D5 YI SYLLABLE LYX
+A1D6 YI SYLLABLE LY
+A1D7 YI SYLLABLE LYP
+A1D8 YI SYLLABLE LYRX
+A1D9 YI SYLLABLE LYR
+A1DA YI SYLLABLE GIT
+A1DB YI SYLLABLE GIX
+A1DC YI SYLLABLE GI
+A1DD YI SYLLABLE GIP
+A1DE YI SYLLABLE GIET
+A1DF YI SYLLABLE GIEX
+A1E0 YI SYLLABLE GIE
+A1E1 YI SYLLABLE GIEP
+A1E2 YI SYLLABLE GAT
+A1E3 YI SYLLABLE GAX
+A1E4 YI SYLLABLE GA
+A1E5 YI SYLLABLE GAP
+A1E6 YI SYLLABLE GUOT
+A1E7 YI SYLLABLE GUOX
+A1E8 YI SYLLABLE GUO
+A1E9 YI SYLLABLE GUOP
+A1EA YI SYLLABLE GOT
+A1EB YI SYLLABLE GOX
+A1EC YI SYLLABLE GO
+A1ED YI SYLLABLE GOP
+A1EE YI SYLLABLE GET
+A1EF YI SYLLABLE GEX
+A1F0 YI SYLLABLE GE
+A1F1 YI SYLLABLE GEP
+A1F2 YI SYLLABLE GUT
+A1F3 YI SYLLABLE GUX
+A1F4 YI SYLLABLE GU
+A1F5 YI SYLLABLE GUP
+A1F6 YI SYLLABLE GURX
+A1F7 YI SYLLABLE GUR
+A1F8 YI SYLLABLE KIT
+A1F9 YI SYLLABLE KIX
+A1FA YI SYLLABLE KI
+A1FB YI SYLLABLE KIP
+A1FC YI SYLLABLE KIEX
+A1FD YI SYLLABLE KIE
+A1FE YI SYLLABLE KIEP
+A1FF YI SYLLABLE KAT
+A200 YI SYLLABLE KAX
+A201 YI SYLLABLE KA
+A202 YI SYLLABLE KAP
+A203 YI SYLLABLE KUOX
+A204 YI SYLLABLE KUO
+A205 YI SYLLABLE KUOP
+A206 YI SYLLABLE KOT
+A207 YI SYLLABLE KOX
+A208 YI SYLLABLE KO
+A209 YI SYLLABLE KOP
+A20A YI SYLLABLE KET
+A20B YI SYLLABLE KEX
+A20C YI SYLLABLE KE
+A20D YI SYLLABLE KEP
+A20E YI SYLLABLE KUT
+A20F YI SYLLABLE KUX
+A210 YI SYLLABLE KU
+A211 YI SYLLABLE KUP
+A212 YI SYLLABLE KURX
+A213 YI SYLLABLE KUR
+A214 YI SYLLABLE GGIT
+A215 YI SYLLABLE GGIX
+A216 YI SYLLABLE GGI
+A217 YI SYLLABLE GGIEX
+A218 YI SYLLABLE GGIE
+A219 YI SYLLABLE GGIEP
+A21A YI SYLLABLE GGAT
+A21B YI SYLLABLE GGAX
+A21C YI SYLLABLE GGA
+A21D YI SYLLABLE GGAP
+A21E YI SYLLABLE GGUOT
+A21F YI SYLLABLE GGUOX
+A220 YI SYLLABLE GGUO
+A221 YI SYLLABLE GGUOP
+A222 YI SYLLABLE GGOT
+A223 YI SYLLABLE GGOX
+A224 YI SYLLABLE GGO
+A225 YI SYLLABLE GGOP
+A226 YI SYLLABLE GGET
+A227 YI SYLLABLE GGEX
+A228 YI SYLLABLE GGE
+A229 YI SYLLABLE GGEP
+A22A YI SYLLABLE GGUT
+A22B YI SYLLABLE GGUX
+A22C YI SYLLABLE GGU
+A22D YI SYLLABLE GGUP
+A22E YI SYLLABLE GGURX
+A22F YI SYLLABLE GGUR
+A230 YI SYLLABLE MGIEX
+A231 YI SYLLABLE MGIE
+A232 YI SYLLABLE MGAT
+A233 YI SYLLABLE MGAX
+A234 YI SYLLABLE MGA
+A235 YI SYLLABLE MGAP
+A236 YI SYLLABLE MGUOX
+A237 YI SYLLABLE MGUO
+A238 YI SYLLABLE MGUOP
+A239 YI SYLLABLE MGOT
+A23A YI SYLLABLE MGOX
+A23B YI SYLLABLE MGO
+A23C YI SYLLABLE MGOP
+A23D YI SYLLABLE MGEX
+A23E YI SYLLABLE MGE
+A23F YI SYLLABLE MGEP
+A240 YI SYLLABLE MGUT
+A241 YI SYLLABLE MGUX
+A242 YI SYLLABLE MGU
+A243 YI SYLLABLE MGUP
+A244 YI SYLLABLE MGURX
+A245 YI SYLLABLE MGUR
+A246 YI SYLLABLE HXIT
+A247 YI SYLLABLE HXIX
+A248 YI SYLLABLE HXI
+A249 YI SYLLABLE HXIP
+A24A YI SYLLABLE HXIET
+A24B YI SYLLABLE HXIEX
+A24C YI SYLLABLE HXIE
+A24D YI SYLLABLE HXIEP
+A24E YI SYLLABLE HXAT
+A24F YI SYLLABLE HXAX
+A250 YI SYLLABLE HXA
+A251 YI SYLLABLE HXAP
+A252 YI SYLLABLE HXUOT
+A253 YI SYLLABLE HXUOX
+A254 YI SYLLABLE HXUO
+A255 YI SYLLABLE HXUOP
+A256 YI SYLLABLE HXOT
+A257 YI SYLLABLE HXOX
+A258 YI SYLLABLE HXO
+A259 YI SYLLABLE HXOP
+A25A YI SYLLABLE HXEX
+A25B YI SYLLABLE HXE
+A25C YI SYLLABLE HXEP
+A25D YI SYLLABLE NGIEX
+A25E YI SYLLABLE NGIE
+A25F YI SYLLABLE NGIEP
+A260 YI SYLLABLE NGAT
+A261 YI SYLLABLE NGAX
+A262 YI SYLLABLE NGA
+A263 YI SYLLABLE NGAP
+A264 YI SYLLABLE NGUOT
+A265 YI SYLLABLE NGUOX
+A266 YI SYLLABLE NGUO
+A267 YI SYLLABLE NGOT
+A268 YI SYLLABLE NGOX
+A269 YI SYLLABLE NGO
+A26A YI SYLLABLE NGOP
+A26B YI SYLLABLE NGEX
+A26C YI SYLLABLE NGE
+A26D YI SYLLABLE NGEP
+A26E YI SYLLABLE HIT
+A26F YI SYLLABLE HIEX
+A270 YI SYLLABLE HIE
+A271 YI SYLLABLE HAT
+A272 YI SYLLABLE HAX
+A273 YI SYLLABLE HA
+A274 YI SYLLABLE HAP
+A275 YI SYLLABLE HUOT
+A276 YI SYLLABLE HUOX
+A277 YI SYLLABLE HUO
+A278 YI SYLLABLE HUOP
+A279 YI SYLLABLE HOT
+A27A YI SYLLABLE HOX
+A27B YI SYLLABLE HO
+A27C YI SYLLABLE HOP
+A27D YI SYLLABLE HEX
+A27E YI SYLLABLE HE
+A27F YI SYLLABLE HEP
+A280 YI SYLLABLE WAT
+A281 YI SYLLABLE WAX
+A282 YI SYLLABLE WA
+A283 YI SYLLABLE WAP
+A284 YI SYLLABLE WUOX
+A285 YI SYLLABLE WUO
+A286 YI SYLLABLE WUOP
+A287 YI SYLLABLE WOX
+A288 YI SYLLABLE WO
+A289 YI SYLLABLE WOP
+A28A YI SYLLABLE WEX
+A28B YI SYLLABLE WE
+A28C YI SYLLABLE WEP
+A28D YI SYLLABLE ZIT
+A28E YI SYLLABLE ZIX
+A28F YI SYLLABLE ZI
+A290 YI SYLLABLE ZIP
+A291 YI SYLLABLE ZIEX
+A292 YI SYLLABLE ZIE
+A293 YI SYLLABLE ZIEP
+A294 YI SYLLABLE ZAT
+A295 YI SYLLABLE ZAX
+A296 YI SYLLABLE ZA
+A297 YI SYLLABLE ZAP
+A298 YI SYLLABLE ZUOX
+A299 YI SYLLABLE ZUO
+A29A YI SYLLABLE ZUOP
+A29B YI SYLLABLE ZOT
+A29C YI SYLLABLE ZOX
+A29D YI SYLLABLE ZO
+A29E YI SYLLABLE ZOP
+A29F YI SYLLABLE ZEX
+A2A0 YI SYLLABLE ZE
+A2A1 YI SYLLABLE ZEP
+A2A2 YI SYLLABLE ZUT
+A2A3 YI SYLLABLE ZUX
+A2A4 YI SYLLABLE ZU
+A2A5 YI SYLLABLE ZUP
+A2A6 YI SYLLABLE ZURX
+A2A7 YI SYLLABLE ZUR
+A2A8 YI SYLLABLE ZYT
+A2A9 YI SYLLABLE ZYX
+A2AA YI SYLLABLE ZY
+A2AB YI SYLLABLE ZYP
+A2AC YI SYLLABLE ZYRX
+A2AD YI SYLLABLE ZYR
+A2AE YI SYLLABLE CIT
+A2AF YI SYLLABLE CIX
+A2B0 YI SYLLABLE CI
+A2B1 YI SYLLABLE CIP
+A2B2 YI SYLLABLE CIET
+A2B3 YI SYLLABLE CIEX
+A2B4 YI SYLLABLE CIE
+A2B5 YI SYLLABLE CIEP
+A2B6 YI SYLLABLE CAT
+A2B7 YI SYLLABLE CAX
+A2B8 YI SYLLABLE CA
+A2B9 YI SYLLABLE CAP
+A2BA YI SYLLABLE CUOX
+A2BB YI SYLLABLE CUO
+A2BC YI SYLLABLE CUOP
+A2BD YI SYLLABLE COT
+A2BE YI SYLLABLE COX
+A2BF YI SYLLABLE CO
+A2C0 YI SYLLABLE COP
+A2C1 YI SYLLABLE CEX
+A2C2 YI SYLLABLE CE
+A2C3 YI SYLLABLE CEP
+A2C4 YI SYLLABLE CUT
+A2C5 YI SYLLABLE CUX
+A2C6 YI SYLLABLE CU
+A2C7 YI SYLLABLE CUP
+A2C8 YI SYLLABLE CURX
+A2C9 YI SYLLABLE CUR
+A2CA YI SYLLABLE CYT
+A2CB YI SYLLABLE CYX
+A2CC YI SYLLABLE CY
+A2CD YI SYLLABLE CYP
+A2CE YI SYLLABLE CYRX
+A2CF YI SYLLABLE CYR
+A2D0 YI SYLLABLE ZZIT
+A2D1 YI SYLLABLE ZZIX
+A2D2 YI SYLLABLE ZZI
+A2D3 YI SYLLABLE ZZIP
+A2D4 YI SYLLABLE ZZIET
+A2D5 YI SYLLABLE ZZIEX
+A2D6 YI SYLLABLE ZZIE
+A2D7 YI SYLLABLE ZZIEP
+A2D8 YI SYLLABLE ZZAT
+A2D9 YI SYLLABLE ZZAX
+A2DA YI SYLLABLE ZZA
+A2DB YI SYLLABLE ZZAP
+A2DC YI SYLLABLE ZZOX
+A2DD YI SYLLABLE ZZO
+A2DE YI SYLLABLE ZZOP
+A2DF YI SYLLABLE ZZEX
+A2E0 YI SYLLABLE ZZE
+A2E1 YI SYLLABLE ZZEP
+A2E2 YI SYLLABLE ZZUX
+A2E3 YI SYLLABLE ZZU
+A2E4 YI SYLLABLE ZZUP
+A2E5 YI SYLLABLE ZZURX
+A2E6 YI SYLLABLE ZZUR
+A2E7 YI SYLLABLE ZZYT
+A2E8 YI SYLLABLE ZZYX
+A2E9 YI SYLLABLE ZZY
+A2EA YI SYLLABLE ZZYP
+A2EB YI SYLLABLE ZZYRX
+A2EC YI SYLLABLE ZZYR
+A2ED YI SYLLABLE NZIT
+A2EE YI SYLLABLE NZIX
+A2EF YI SYLLABLE NZI
+A2F0 YI SYLLABLE NZIP
+A2F1 YI SYLLABLE NZIEX
+A2F2 YI SYLLABLE NZIE
+A2F3 YI SYLLABLE NZIEP
+A2F4 YI SYLLABLE NZAT
+A2F5 YI SYLLABLE NZAX
+A2F6 YI SYLLABLE NZA
+A2F7 YI SYLLABLE NZAP
+A2F8 YI SYLLABLE NZUOX
+A2F9 YI SYLLABLE NZUO
+A2FA YI SYLLABLE NZOX
+A2FB YI SYLLABLE NZOP
+A2FC YI SYLLABLE NZEX
+A2FD YI SYLLABLE NZE
+A2FE YI SYLLABLE NZUX
+A2FF YI SYLLABLE NZU
+A300 YI SYLLABLE NZUP
+A301 YI SYLLABLE NZURX
+A302 YI SYLLABLE NZUR
+A303 YI SYLLABLE NZYT
+A304 YI SYLLABLE NZYX
+A305 YI SYLLABLE NZY
+A306 YI SYLLABLE NZYP
+A307 YI SYLLABLE NZYRX
+A308 YI SYLLABLE NZYR
+A309 YI SYLLABLE SIT
+A30A YI SYLLABLE SIX
+A30B YI SYLLABLE SI
+A30C YI SYLLABLE SIP
+A30D YI SYLLABLE SIEX
+A30E YI SYLLABLE SIE
+A30F YI SYLLABLE SIEP
+A310 YI SYLLABLE SAT
+A311 YI SYLLABLE SAX
+A312 YI SYLLABLE SA
+A313 YI SYLLABLE SAP
+A314 YI SYLLABLE SUOX
+A315 YI SYLLABLE SUO
+A316 YI SYLLABLE SUOP
+A317 YI SYLLABLE SOT
+A318 YI SYLLABLE SOX
+A319 YI SYLLABLE SO
+A31A YI SYLLABLE SOP
+A31B YI SYLLABLE SEX
+A31C YI SYLLABLE SE
+A31D YI SYLLABLE SEP
+A31E YI SYLLABLE SUT
+A31F YI SYLLABLE SUX
+A320 YI SYLLABLE SU
+A321 YI SYLLABLE SUP
+A322 YI SYLLABLE SURX
+A323 YI SYLLABLE SUR
+A324 YI SYLLABLE SYT
+A325 YI SYLLABLE SYX
+A326 YI SYLLABLE SY
+A327 YI SYLLABLE SYP
+A328 YI SYLLABLE SYRX
+A329 YI SYLLABLE SYR
+A32A YI SYLLABLE SSIT
+A32B YI SYLLABLE SSIX
+A32C YI SYLLABLE SSI
+A32D YI SYLLABLE SSIP
+A32E YI SYLLABLE SSIEX
+A32F YI SYLLABLE SSIE
+A330 YI SYLLABLE SSIEP
+A331 YI SYLLABLE SSAT
+A332 YI SYLLABLE SSAX
+A333 YI SYLLABLE SSA
+A334 YI SYLLABLE SSAP
+A335 YI SYLLABLE SSOT
+A336 YI SYLLABLE SSOX
+A337 YI SYLLABLE SSO
+A338 YI SYLLABLE SSOP
+A339 YI SYLLABLE SSEX
+A33A YI SYLLABLE SSE
+A33B YI SYLLABLE SSEP
+A33C YI SYLLABLE SSUT
+A33D YI SYLLABLE SSUX
+A33E YI SYLLABLE SSU
+A33F YI SYLLABLE SSUP
+A340 YI SYLLABLE SSYT
+A341 YI SYLLABLE SSYX
+A342 YI SYLLABLE SSY
+A343 YI SYLLABLE SSYP
+A344 YI SYLLABLE SSYRX
+A345 YI SYLLABLE SSYR
+A346 YI SYLLABLE ZHAT
+A347 YI SYLLABLE ZHAX
+A348 YI SYLLABLE ZHA
+A349 YI SYLLABLE ZHAP
+A34A YI SYLLABLE ZHUOX
+A34B YI SYLLABLE ZHUO
+A34C YI SYLLABLE ZHUOP
+A34D YI SYLLABLE ZHOT
+A34E YI SYLLABLE ZHOX
+A34F YI SYLLABLE ZHO
+A350 YI SYLLABLE ZHOP
+A351 YI SYLLABLE ZHET
+A352 YI SYLLABLE ZHEX
+A353 YI SYLLABLE ZHE
+A354 YI SYLLABLE ZHEP
+A355 YI SYLLABLE ZHUT
+A356 YI SYLLABLE ZHUX
+A357 YI SYLLABLE ZHU
+A358 YI SYLLABLE ZHUP
+A359 YI SYLLABLE ZHURX
+A35A YI SYLLABLE ZHUR
+A35B YI SYLLABLE ZHYT
+A35C YI SYLLABLE ZHYX
+A35D YI SYLLABLE ZHY
+A35E YI SYLLABLE ZHYP
+A35F YI SYLLABLE ZHYRX
+A360 YI SYLLABLE ZHYR
+A361 YI SYLLABLE CHAT
+A362 YI SYLLABLE CHAX
+A363 YI SYLLABLE CHA
+A364 YI SYLLABLE CHAP
+A365 YI SYLLABLE CHUOT
+A366 YI SYLLABLE CHUOX
+A367 YI SYLLABLE CHUO
+A368 YI SYLLABLE CHUOP
+A369 YI SYLLABLE CHOT
+A36A YI SYLLABLE CHOX
+A36B YI SYLLABLE CHO
+A36C YI SYLLABLE CHOP
+A36D YI SYLLABLE CHET
+A36E YI SYLLABLE CHEX
+A36F YI SYLLABLE CHE
+A370 YI SYLLABLE CHEP
+A371 YI SYLLABLE CHUX
+A372 YI SYLLABLE CHU
+A373 YI SYLLABLE CHUP
+A374 YI SYLLABLE CHURX
+A375 YI SYLLABLE CHUR
+A376 YI SYLLABLE CHYT
+A377 YI SYLLABLE CHYX
+A378 YI SYLLABLE CHY
+A379 YI SYLLABLE CHYP
+A37A YI SYLLABLE CHYRX
+A37B YI SYLLABLE CHYR
+A37C YI SYLLABLE RRAX
+A37D YI SYLLABLE RRA
+A37E YI SYLLABLE RRUOX
+A37F YI SYLLABLE RRUO
+A380 YI SYLLABLE RROT
+A381 YI SYLLABLE RROX
+A382 YI SYLLABLE RRO
+A383 YI SYLLABLE RROP
+A384 YI SYLLABLE RRET
+A385 YI SYLLABLE RREX
+A386 YI SYLLABLE RRE
+A387 YI SYLLABLE RREP
+A388 YI SYLLABLE RRUT
+A389 YI SYLLABLE RRUX
+A38A YI SYLLABLE RRU
+A38B YI SYLLABLE RRUP
+A38C YI SYLLABLE RRURX
+A38D YI SYLLABLE RRUR
+A38E YI SYLLABLE RRYT
+A38F YI SYLLABLE RRYX
+A390 YI SYLLABLE RRY
+A391 YI SYLLABLE RRYP
+A392 YI SYLLABLE RRYRX
+A393 YI SYLLABLE RRYR
+A394 YI SYLLABLE NRAT
+A395 YI SYLLABLE NRAX
+A396 YI SYLLABLE NRA
+A397 YI SYLLABLE NRAP
+A398 YI SYLLABLE NROX
+A399 YI SYLLABLE NRO
+A39A YI SYLLABLE NROP
+A39B YI SYLLABLE NRET
+A39C YI SYLLABLE NREX
+A39D YI SYLLABLE NRE
+A39E YI SYLLABLE NREP
+A39F YI SYLLABLE NRUT
+A3A0 YI SYLLABLE NRUX
+A3A1 YI SYLLABLE NRU
+A3A2 YI SYLLABLE NRUP
+A3A3 YI SYLLABLE NRURX
+A3A4 YI SYLLABLE NRUR
+A3A5 YI SYLLABLE NRYT
+A3A6 YI SYLLABLE NRYX
+A3A7 YI SYLLABLE NRY
+A3A8 YI SYLLABLE NRYP
+A3A9 YI SYLLABLE NRYRX
+A3AA YI SYLLABLE NRYR
+A3AB YI SYLLABLE SHAT
+A3AC YI SYLLABLE SHAX
+A3AD YI SYLLABLE SHA
+A3AE YI SYLLABLE SHAP
+A3AF YI SYLLABLE SHUOX
+A3B0 YI SYLLABLE SHUO
+A3B1 YI SYLLABLE SHUOP
+A3B2 YI SYLLABLE SHOT
+A3B3 YI SYLLABLE SHOX
+A3B4 YI SYLLABLE SHO
+A3B5 YI SYLLABLE SHOP
+A3B6 YI SYLLABLE SHET
+A3B7 YI SYLLABLE SHEX
+A3B8 YI SYLLABLE SHE
+A3B9 YI SYLLABLE SHEP
+A3BA YI SYLLABLE SHUT
+A3BB YI SYLLABLE SHUX
+A3BC YI SYLLABLE SHU
+A3BD YI SYLLABLE SHUP
+A3BE YI SYLLABLE SHURX
+A3BF YI SYLLABLE SHUR
+A3C0 YI SYLLABLE SHYT
+A3C1 YI SYLLABLE SHYX
+A3C2 YI SYLLABLE SHY
+A3C3 YI SYLLABLE SHYP
+A3C4 YI SYLLABLE SHYRX
+A3C5 YI SYLLABLE SHYR
+A3C6 YI SYLLABLE RAT
+A3C7 YI SYLLABLE RAX
+A3C8 YI SYLLABLE RA
+A3C9 YI SYLLABLE RAP
+A3CA YI SYLLABLE RUOX
+A3CB YI SYLLABLE RUO
+A3CC YI SYLLABLE RUOP
+A3CD YI SYLLABLE ROT
+A3CE YI SYLLABLE ROX
+A3CF YI SYLLABLE RO
+A3D0 YI SYLLABLE ROP
+A3D1 YI SYLLABLE REX
+A3D2 YI SYLLABLE RE
+A3D3 YI SYLLABLE REP
+A3D4 YI SYLLABLE RUT
+A3D5 YI SYLLABLE RUX
+A3D6 YI SYLLABLE RU
+A3D7 YI SYLLABLE RUP
+A3D8 YI SYLLABLE RURX
+A3D9 YI SYLLABLE RUR
+A3DA YI SYLLABLE RYT
+A3DB YI SYLLABLE RYX
+A3DC YI SYLLABLE RY
+A3DD YI SYLLABLE RYP
+A3DE YI SYLLABLE RYRX
+A3DF YI SYLLABLE RYR
+A3E0 YI SYLLABLE JIT
+A3E1 YI SYLLABLE JIX
+A3E2 YI SYLLABLE JI
+A3E3 YI SYLLABLE JIP
+A3E4 YI SYLLABLE JIET
+A3E5 YI SYLLABLE JIEX
+A3E6 YI SYLLABLE JIE
+A3E7 YI SYLLABLE JIEP
+A3E8 YI SYLLABLE JUOT
+A3E9 YI SYLLABLE JUOX
+A3EA YI SYLLABLE JUO
+A3EB YI SYLLABLE JUOP
+A3EC YI SYLLABLE JOT
+A3ED YI SYLLABLE JOX
+A3EE YI SYLLABLE JO
+A3EF YI SYLLABLE JOP
+A3F0 YI SYLLABLE JUT
+A3F1 YI SYLLABLE JUX
+A3F2 YI SYLLABLE JU
+A3F3 YI SYLLABLE JUP
+A3F4 YI SYLLABLE JURX
+A3F5 YI SYLLABLE JUR
+A3F6 YI SYLLABLE JYT
+A3F7 YI SYLLABLE JYX
+A3F8 YI SYLLABLE JY
+A3F9 YI SYLLABLE JYP
+A3FA YI SYLLABLE JYRX
+A3FB YI SYLLABLE JYR
+A3FC YI SYLLABLE QIT
+A3FD YI SYLLABLE QIX
+A3FE YI SYLLABLE QI
+A3FF YI SYLLABLE QIP
+A400 YI SYLLABLE QIET
+A401 YI SYLLABLE QIEX
+A402 YI SYLLABLE QIE
+A403 YI SYLLABLE QIEP
+A404 YI SYLLABLE QUOT
+A405 YI SYLLABLE QUOX
+A406 YI SYLLABLE QUO
+A407 YI SYLLABLE QUOP
+A408 YI SYLLABLE QOT
+A409 YI SYLLABLE QOX
+A40A YI SYLLABLE QO
+A40B YI SYLLABLE QOP
+A40C YI SYLLABLE QUT
+A40D YI SYLLABLE QUX
+A40E YI SYLLABLE QU
+A40F YI SYLLABLE QUP
+A410 YI SYLLABLE QURX
+A411 YI SYLLABLE QUR
+A412 YI SYLLABLE QYT
+A413 YI SYLLABLE QYX
+A414 YI SYLLABLE QY
+A415 YI SYLLABLE QYP
+A416 YI SYLLABLE QYRX
+A417 YI SYLLABLE QYR
+A418 YI SYLLABLE JJIT
+A419 YI SYLLABLE JJIX
+A41A YI SYLLABLE JJI
+A41B YI SYLLABLE JJIP
+A41C YI SYLLABLE JJIET
+A41D YI SYLLABLE JJIEX
+A41E YI SYLLABLE JJIE
+A41F YI SYLLABLE JJIEP
+A420 YI SYLLABLE JJUOX
+A421 YI SYLLABLE JJUO
+A422 YI SYLLABLE JJUOP
+A423 YI SYLLABLE JJOT
+A424 YI SYLLABLE JJOX
+A425 YI SYLLABLE JJO
+A426 YI SYLLABLE JJOP
+A427 YI SYLLABLE JJUT
+A428 YI SYLLABLE JJUX
+A429 YI SYLLABLE JJU
+A42A YI SYLLABLE JJUP
+A42B YI SYLLABLE JJURX
+A42C YI SYLLABLE JJUR
+A42D YI SYLLABLE JJYT
+A42E YI SYLLABLE JJYX
+A42F YI SYLLABLE JJY
+A430 YI SYLLABLE JJYP
+A431 YI SYLLABLE NJIT
+A432 YI SYLLABLE NJIX
+A433 YI SYLLABLE NJI
+A434 YI SYLLABLE NJIP
+A435 YI SYLLABLE NJIET
+A436 YI SYLLABLE NJIEX
+A437 YI SYLLABLE NJIE
+A438 YI SYLLABLE NJIEP
+A439 YI SYLLABLE NJUOX
+A43A YI SYLLABLE NJUO
+A43B YI SYLLABLE NJOT
+A43C YI SYLLABLE NJOX
+A43D YI SYLLABLE NJO
+A43E YI SYLLABLE NJOP
+A43F YI SYLLABLE NJUX
+A440 YI SYLLABLE NJU
+A441 YI SYLLABLE NJUP
+A442 YI SYLLABLE NJURX
+A443 YI SYLLABLE NJUR
+A444 YI SYLLABLE NJYT
+A445 YI SYLLABLE NJYX
+A446 YI SYLLABLE NJY
+A447 YI SYLLABLE NJYP
+A448 YI SYLLABLE NJYRX
+A449 YI SYLLABLE NJYR
+A44A YI SYLLABLE NYIT
+A44B YI SYLLABLE NYIX
+A44C YI SYLLABLE NYI
+A44D YI SYLLABLE NYIP
+A44E YI SYLLABLE NYIET
+A44F YI SYLLABLE NYIEX
+A450 YI SYLLABLE NYIE
+A451 YI SYLLABLE NYIEP
+A452 YI SYLLABLE NYUOX
+A453 YI SYLLABLE NYUO
+A454 YI SYLLABLE NYUOP
+A455 YI SYLLABLE NYOT
+A456 YI SYLLABLE NYOX
+A457 YI SYLLABLE NYO
+A458 YI SYLLABLE NYOP
+A459 YI SYLLABLE NYUT
+A45A YI SYLLABLE NYUX
+A45B YI SYLLABLE NYU
+A45C YI SYLLABLE NYUP
+A45D YI SYLLABLE XIT
+A45E YI SYLLABLE XIX
+A45F YI SYLLABLE XI
+A460 YI SYLLABLE XIP
+A461 YI SYLLABLE XIET
+A462 YI SYLLABLE XIEX
+A463 YI SYLLABLE XIE
+A464 YI SYLLABLE XIEP
+A465 YI SYLLABLE XUOX
+A466 YI SYLLABLE XUO
+A467 YI SYLLABLE XOT
+A468 YI SYLLABLE XOX
+A469 YI SYLLABLE XO
+A46A YI SYLLABLE XOP
+A46B YI SYLLABLE XYT
+A46C YI SYLLABLE XYX
+A46D YI SYLLABLE XY
+A46E YI SYLLABLE XYP
+A46F YI SYLLABLE XYRX
+A470 YI SYLLABLE XYR
+A471 YI SYLLABLE YIT
+A472 YI SYLLABLE YIX
+A473 YI SYLLABLE YI
+A474 YI SYLLABLE YIP
+A475 YI SYLLABLE YIET
+A476 YI SYLLABLE YIEX
+A477 YI SYLLABLE YIE
+A478 YI SYLLABLE YIEP
+A479 YI SYLLABLE YUOT
+A47A YI SYLLABLE YUOX
+A47B YI SYLLABLE YUO
+A47C YI SYLLABLE YUOP
+A47D YI SYLLABLE YOT
+A47E YI SYLLABLE YOX
+A47F YI SYLLABLE YO
+A480 YI SYLLABLE YOP
+A481 YI SYLLABLE YUT
+A482 YI SYLLABLE YUX
+A483 YI SYLLABLE YU
+A484 YI SYLLABLE YUP
+A485 YI SYLLABLE YURX
+A486 YI SYLLABLE YUR
+A487 YI SYLLABLE YYT
+A488 YI SYLLABLE YYX
+A489 YI SYLLABLE YY
+A48A YI SYLLABLE YYP
+A48B YI SYLLABLE YYRX
+A48C YI SYLLABLE YYR
+@@ A490 Yi Radicals A4CF
+@ Yi radicals
+A490 YI RADICAL QOT
+A491 YI RADICAL LI
+A492 YI RADICAL KIT
+A493 YI RADICAL NYIP
+A494 YI RADICAL CYP
+A495 YI RADICAL SSI
+A496 YI RADICAL GGOP
+A497 YI RADICAL GEP
+A498 YI RADICAL MI
+A499 YI RADICAL HXIT
+A49A YI RADICAL LYR
+A49B YI RADICAL BBUT
+A49C YI RADICAL MOP
+A49D YI RADICAL YO
+A49E YI RADICAL PUT
+A49F YI RADICAL HXUO
+A4A0 YI RADICAL TAT
+A4A1 YI RADICAL GA
+A4A4 YI RADICAL DDUR
+A4A5 YI RADICAL BUR
+A4A6 YI RADICAL GGUO
+A4A7 YI RADICAL NYOP
+A4A8 YI RADICAL TU
+A4A9 YI RADICAL OP
+A4AA YI RADICAL JJUT
+A4AB YI RADICAL ZOT
+A4AC YI RADICAL PYT
+A4AD YI RADICAL HMO
+A4AE YI RADICAL YIT
+A4AF YI RADICAL VUR
+A4B0 YI RADICAL SHY
+A4B1 YI RADICAL VEP
+A4B2 YI RADICAL ZA
+A4B3 YI RADICAL JO
+A4B5 YI RADICAL JJY
+A4B6 YI RADICAL GOT
+A4B7 YI RADICAL JJIE
+A4B8 YI RADICAL WO
+A4B9 YI RADICAL DU
+A4BA YI RADICAL SHUR
+A4BB YI RADICAL LIE
+A4BC YI RADICAL CY
+A4BD YI RADICAL CUOP
+A4BE YI RADICAL CIP
+A4BF YI RADICAL HXOP
+A4C0 YI RADICAL SHAT
+A4C2 YI RADICAL SHOP
+A4C3 YI RADICAL CHE
+A4C4 YI RADICAL ZZIET
+A4C6 YI RADICAL KE
+@@ AC00 Hangul Syllables D7A3
+@@ D800 High Surrogates DB7F
+@@ DB80 High Private Use Surrogates DBFF
+@@ DC00 Low Surrogates DFFF
+@@ E000 Private Use Area F8FF
+@@ F900 CJK Compatibility Ideographs FAFF
+@ Pronunciation variants from KS C 5601-1987
+F900 CJK COMPATIBILITY IDEOGRAPH-F900
+ : 8C48
+F901 CJK COMPATIBILITY IDEOGRAPH-F901
+ : 66F4
+F902 CJK COMPATIBILITY IDEOGRAPH-F902
+ : 8ECA
+F903 CJK COMPATIBILITY IDEOGRAPH-F903
+ : 8CC8
+F904 CJK COMPATIBILITY IDEOGRAPH-F904
+ : 6ED1
+F905 CJK COMPATIBILITY IDEOGRAPH-F905
+ : 4E32
+F906 CJK COMPATIBILITY IDEOGRAPH-F906
+ : 53E5
+F907 CJK COMPATIBILITY IDEOGRAPH-F907
+ : 9F9C
+F908 CJK COMPATIBILITY IDEOGRAPH-F908
+ : 9F9C
+F909 CJK COMPATIBILITY IDEOGRAPH-F909
+ : 5951
+F90A CJK COMPATIBILITY IDEOGRAPH-F90A
+ : 91D1
+F90B CJK COMPATIBILITY IDEOGRAPH-F90B
+ : 5587
+F90C CJK COMPATIBILITY IDEOGRAPH-F90C
+ : 5948
+F90D CJK COMPATIBILITY IDEOGRAPH-F90D
+ : 61F6
+F90E CJK COMPATIBILITY IDEOGRAPH-F90E
+ : 7669
+F90F CJK COMPATIBILITY IDEOGRAPH-F90F
+ : 7F85
+F910 CJK COMPATIBILITY IDEOGRAPH-F910
+ : 863F
+F911 CJK COMPATIBILITY IDEOGRAPH-F911
+ : 87BA
+F912 CJK COMPATIBILITY IDEOGRAPH-F912
+ : 88F8
+F913 CJK COMPATIBILITY IDEOGRAPH-F913
+ : 908F
+F914 CJK COMPATIBILITY IDEOGRAPH-F914
+ : 6A02
+F915 CJK COMPATIBILITY IDEOGRAPH-F915
+ : 6D1B
+F916 CJK COMPATIBILITY IDEOGRAPH-F916
+ : 70D9
+F917 CJK COMPATIBILITY IDEOGRAPH-F917
+ : 73DE
+F918 CJK COMPATIBILITY IDEOGRAPH-F918
+ : 843D
+F919 CJK COMPATIBILITY IDEOGRAPH-F919
+ : 916A
+F91A CJK COMPATIBILITY IDEOGRAPH-F91A
+ : 99F1
+F91B CJK COMPATIBILITY IDEOGRAPH-F91B
+ : 4E82
+F91C CJK COMPATIBILITY IDEOGRAPH-F91C
+ : 5375
+F91D CJK COMPATIBILITY IDEOGRAPH-F91D
+ : 6B04
+F91E CJK COMPATIBILITY IDEOGRAPH-F91E
+ : 721B
+F91F CJK COMPATIBILITY IDEOGRAPH-F91F
+ : 862D
+F920 CJK COMPATIBILITY IDEOGRAPH-F920
+ : 9E1E
+F921 CJK COMPATIBILITY IDEOGRAPH-F921
+ : 5D50
+F922 CJK COMPATIBILITY IDEOGRAPH-F922
+ : 6FEB
+F923 CJK COMPATIBILITY IDEOGRAPH-F923
+ : 85CD
+F924 CJK COMPATIBILITY IDEOGRAPH-F924
+ : 8964
+F925 CJK COMPATIBILITY IDEOGRAPH-F925
+ : 62C9
+F926 CJK COMPATIBILITY IDEOGRAPH-F926
+ : 81D8
+F927 CJK COMPATIBILITY IDEOGRAPH-F927
+ : 881F
+F928 CJK COMPATIBILITY IDEOGRAPH-F928
+ : 5ECA
+F929 CJK COMPATIBILITY IDEOGRAPH-F929
+ : 6717
+F92A CJK COMPATIBILITY IDEOGRAPH-F92A
+ : 6D6A
+F92B CJK COMPATIBILITY IDEOGRAPH-F92B
+ : 72FC
+F92C CJK COMPATIBILITY IDEOGRAPH-F92C
+ : 90CE
+F92D CJK COMPATIBILITY IDEOGRAPH-F92D
+ : 4F86
+F92E CJK COMPATIBILITY IDEOGRAPH-F92E
+ : 51B7
+F92F CJK COMPATIBILITY IDEOGRAPH-F92F
+ : 52DE
+F930 CJK COMPATIBILITY IDEOGRAPH-F930
+ : 64C4
+F931 CJK COMPATIBILITY IDEOGRAPH-F931
+ : 6AD3
+F932 CJK COMPATIBILITY IDEOGRAPH-F932
+ : 7210
+F933 CJK COMPATIBILITY IDEOGRAPH-F933
+ : 76E7
+F934 CJK COMPATIBILITY IDEOGRAPH-F934
+ : 8001
+F935 CJK COMPATIBILITY IDEOGRAPH-F935
+ : 8606
+F936 CJK COMPATIBILITY IDEOGRAPH-F936
+ : 865C
+F937 CJK COMPATIBILITY IDEOGRAPH-F937
+ : 8DEF
+F938 CJK COMPATIBILITY IDEOGRAPH-F938
+ : 9732
+F939 CJK COMPATIBILITY IDEOGRAPH-F939
+ : 9B6F
+F93A CJK COMPATIBILITY IDEOGRAPH-F93A
+ : 9DFA
+F93B CJK COMPATIBILITY IDEOGRAPH-F93B
+ : 788C
+F93C CJK COMPATIBILITY IDEOGRAPH-F93C
+ : 797F
+F93D CJK COMPATIBILITY IDEOGRAPH-F93D
+ : 7DA0
+F93E CJK COMPATIBILITY IDEOGRAPH-F93E
+ : 83C9
+F93F CJK COMPATIBILITY IDEOGRAPH-F93F
+ : 9304
+F940 CJK COMPATIBILITY IDEOGRAPH-F940
+ : 9E7F
+F941 CJK COMPATIBILITY IDEOGRAPH-F941
+ : 8AD6
+F942 CJK COMPATIBILITY IDEOGRAPH-F942
+ : 58DF
+F943 CJK COMPATIBILITY IDEOGRAPH-F943
+ : 5F04
+F944 CJK COMPATIBILITY IDEOGRAPH-F944
+ : 7C60
+F945 CJK COMPATIBILITY IDEOGRAPH-F945
+ : 807E
+F946 CJK COMPATIBILITY IDEOGRAPH-F946
+ : 7262
+F947 CJK COMPATIBILITY IDEOGRAPH-F947
+ : 78CA
+F948 CJK COMPATIBILITY IDEOGRAPH-F948
+ : 8CC2
+F949 CJK COMPATIBILITY IDEOGRAPH-F949
+ : 96F7
+F94A CJK COMPATIBILITY IDEOGRAPH-F94A
+ : 58D8
+F94B CJK COMPATIBILITY IDEOGRAPH-F94B
+ : 5C62
+F94C CJK COMPATIBILITY IDEOGRAPH-F94C
+ : 6A13
+F94D CJK COMPATIBILITY IDEOGRAPH-F94D
+ : 6DDA
+F94E CJK COMPATIBILITY IDEOGRAPH-F94E
+ : 6F0F
+F94F CJK COMPATIBILITY IDEOGRAPH-F94F
+ : 7D2F
+F950 CJK COMPATIBILITY IDEOGRAPH-F950
+ : 7E37
+F951 CJK COMPATIBILITY IDEOGRAPH-F951
+ : 96FB
+F952 CJK COMPATIBILITY IDEOGRAPH-F952
+ : 52D2
+F953 CJK COMPATIBILITY IDEOGRAPH-F953
+ : 808B
+F954 CJK COMPATIBILITY IDEOGRAPH-F954
+ : 51DC
+F955 CJK COMPATIBILITY IDEOGRAPH-F955
+ : 51CC
+F956 CJK COMPATIBILITY IDEOGRAPH-F956
+ : 7A1C
+F957 CJK COMPATIBILITY IDEOGRAPH-F957
+ : 7DBE
+F958 CJK COMPATIBILITY IDEOGRAPH-F958
+ : 83F1
+F959 CJK COMPATIBILITY IDEOGRAPH-F959
+ : 9675
+F95A CJK COMPATIBILITY IDEOGRAPH-F95A
+ : 8B80
+F95B CJK COMPATIBILITY IDEOGRAPH-F95B
+ : 62CF
+F95C CJK COMPATIBILITY IDEOGRAPH-F95C
+ : 6A02
+F95D CJK COMPATIBILITY IDEOGRAPH-F95D
+ : 8AFE
+F95E CJK COMPATIBILITY IDEOGRAPH-F95E
+ : 4E39
+F95F CJK COMPATIBILITY IDEOGRAPH-F95F
+ : 5BE7
+F960 CJK COMPATIBILITY IDEOGRAPH-F960
+ : 6012
+F961 CJK COMPATIBILITY IDEOGRAPH-F961
+ : 7387
+F962 CJK COMPATIBILITY IDEOGRAPH-F962
+ : 7570
+F963 CJK COMPATIBILITY IDEOGRAPH-F963
+ : 5317
+F964 CJK COMPATIBILITY IDEOGRAPH-F964
+ : 78FB
+F965 CJK COMPATIBILITY IDEOGRAPH-F965
+ : 4FBF
+F966 CJK COMPATIBILITY IDEOGRAPH-F966
+ : 5FA9
+F967 CJK COMPATIBILITY IDEOGRAPH-F967
+ : 4E0D
+F968 CJK COMPATIBILITY IDEOGRAPH-F968
+ : 6CCC
+F969 CJK COMPATIBILITY IDEOGRAPH-F969
+ : 6578
+F96A CJK COMPATIBILITY IDEOGRAPH-F96A
+ : 7D22
+F96B CJK COMPATIBILITY IDEOGRAPH-F96B
+ : 53C3
+F96C CJK COMPATIBILITY IDEOGRAPH-F96C
+ : 585E
+F96D CJK COMPATIBILITY IDEOGRAPH-F96D
+ : 7701
+F96E CJK COMPATIBILITY IDEOGRAPH-F96E
+ : 8449
+F96F CJK COMPATIBILITY IDEOGRAPH-F96F
+ : 8AAA
+F970 CJK COMPATIBILITY IDEOGRAPH-F970
+ : 6BBA
+F971 CJK COMPATIBILITY IDEOGRAPH-F971
+ : 8FB0
+F972 CJK COMPATIBILITY IDEOGRAPH-F972
+ : 6C88
+F973 CJK COMPATIBILITY IDEOGRAPH-F973
+ : 62FE
+F974 CJK COMPATIBILITY IDEOGRAPH-F974
+ : 82E5
+F975 CJK COMPATIBILITY IDEOGRAPH-F975
+ : 63A0
+F976 CJK COMPATIBILITY IDEOGRAPH-F976
+ : 7565
+F977 CJK COMPATIBILITY IDEOGRAPH-F977
+ : 4EAE
+F978 CJK COMPATIBILITY IDEOGRAPH-F978
+ : 5169
+F979 CJK COMPATIBILITY IDEOGRAPH-F979
+ : 51C9
+F97A CJK COMPATIBILITY IDEOGRAPH-F97A
+ : 6881
+F97B CJK COMPATIBILITY IDEOGRAPH-F97B
+ : 7CE7
+F97C CJK COMPATIBILITY IDEOGRAPH-F97C
+ : 826F
+F97D CJK COMPATIBILITY IDEOGRAPH-F97D
+ : 8AD2
+F97E CJK COMPATIBILITY IDEOGRAPH-F97E
+ : 91CF
+F97F CJK COMPATIBILITY IDEOGRAPH-F97F
+ : 52F5
+F980 CJK COMPATIBILITY IDEOGRAPH-F980
+ : 5442
+F981 CJK COMPATIBILITY IDEOGRAPH-F981
+ : 5973
+F982 CJK COMPATIBILITY IDEOGRAPH-F982
+ : 5EEC
+F983 CJK COMPATIBILITY IDEOGRAPH-F983
+ : 65C5
+F984 CJK COMPATIBILITY IDEOGRAPH-F984
+ : 6FFE
+F985 CJK COMPATIBILITY IDEOGRAPH-F985
+ : 792A
+F986 CJK COMPATIBILITY IDEOGRAPH-F986
+ : 95AD
+F987 CJK COMPATIBILITY IDEOGRAPH-F987
+ : 9A6A
+F988 CJK COMPATIBILITY IDEOGRAPH-F988
+ : 9E97
+F989 CJK COMPATIBILITY IDEOGRAPH-F989
+ : 9ECE
+F98A CJK COMPATIBILITY IDEOGRAPH-F98A
+ : 529B
+F98B CJK COMPATIBILITY IDEOGRAPH-F98B
+ : 66C6
+F98C CJK COMPATIBILITY IDEOGRAPH-F98C
+ : 6B77
+F98D CJK COMPATIBILITY IDEOGRAPH-F98D
+ : 8F62
+F98E CJK COMPATIBILITY IDEOGRAPH-F98E
+ : 5E74
+F98F CJK COMPATIBILITY IDEOGRAPH-F98F
+ : 6190
+F990 CJK COMPATIBILITY IDEOGRAPH-F990
+ : 6200
+F991 CJK COMPATIBILITY IDEOGRAPH-F991
+ : 649A
+F992 CJK COMPATIBILITY IDEOGRAPH-F992
+ : 6F23
+F993 CJK COMPATIBILITY IDEOGRAPH-F993
+ : 7149
+F994 CJK COMPATIBILITY IDEOGRAPH-F994
+ : 7489
+F995 CJK COMPATIBILITY IDEOGRAPH-F995
+ : 79CA
+F996 CJK COMPATIBILITY IDEOGRAPH-F996
+ : 7DF4
+F997 CJK COMPATIBILITY IDEOGRAPH-F997
+ : 806F
+F998 CJK COMPATIBILITY IDEOGRAPH-F998
+ : 8F26
+F999 CJK COMPATIBILITY IDEOGRAPH-F999
+ : 84EE
+F99A CJK COMPATIBILITY IDEOGRAPH-F99A
+ : 9023
+F99B CJK COMPATIBILITY IDEOGRAPH-F99B
+ : 934A
+F99C CJK COMPATIBILITY IDEOGRAPH-F99C
+ : 5217
+F99D CJK COMPATIBILITY IDEOGRAPH-F99D
+ : 52A3
+F99E CJK COMPATIBILITY IDEOGRAPH-F99E
+ : 54BD
+F99F CJK COMPATIBILITY IDEOGRAPH-F99F
+ : 70C8
+F9A0 CJK COMPATIBILITY IDEOGRAPH-F9A0
+ : 88C2
+F9A1 CJK COMPATIBILITY IDEOGRAPH-F9A1
+ : 8AAA
+F9A2 CJK COMPATIBILITY IDEOGRAPH-F9A2
+ : 5EC9
+F9A3 CJK COMPATIBILITY IDEOGRAPH-F9A3
+ : 5FF5
+F9A4 CJK COMPATIBILITY IDEOGRAPH-F9A4
+ : 637B
+F9A5 CJK COMPATIBILITY IDEOGRAPH-F9A5
+ : 6BAE
+F9A6 CJK COMPATIBILITY IDEOGRAPH-F9A6
+ : 7C3E
+F9A7 CJK COMPATIBILITY IDEOGRAPH-F9A7
+ : 7375
+F9A8 CJK COMPATIBILITY IDEOGRAPH-F9A8
+ : 4EE4
+F9A9 CJK COMPATIBILITY IDEOGRAPH-F9A9
+ : 56F9
+F9AA CJK COMPATIBILITY IDEOGRAPH-F9AA
+ : 5BE7
+F9AB CJK COMPATIBILITY IDEOGRAPH-F9AB
+ : 5DBA
+F9AC CJK COMPATIBILITY IDEOGRAPH-F9AC
+ : 601C
+F9AD CJK COMPATIBILITY IDEOGRAPH-F9AD
+ : 73B2
+F9AE CJK COMPATIBILITY IDEOGRAPH-F9AE
+ : 7469
+F9AF CJK COMPATIBILITY IDEOGRAPH-F9AF
+ : 7F9A
+F9B0 CJK COMPATIBILITY IDEOGRAPH-F9B0
+ : 8046
+F9B1 CJK COMPATIBILITY IDEOGRAPH-F9B1
+ : 9234
+F9B2 CJK COMPATIBILITY IDEOGRAPH-F9B2
+ : 96F6
+F9B3 CJK COMPATIBILITY IDEOGRAPH-F9B3
+ : 9748
+F9B4 CJK COMPATIBILITY IDEOGRAPH-F9B4
+ : 9818
+F9B5 CJK COMPATIBILITY IDEOGRAPH-F9B5
+ : 4F8B
+F9B6 CJK COMPATIBILITY IDEOGRAPH-F9B6
+ : 79AE
+F9B7 CJK COMPATIBILITY IDEOGRAPH-F9B7
+ : 91B4
+F9B8 CJK COMPATIBILITY IDEOGRAPH-F9B8
+ : 96B8
+F9B9 CJK COMPATIBILITY IDEOGRAPH-F9B9
+ : 60E1
+F9BA CJK COMPATIBILITY IDEOGRAPH-F9BA
+ : 4E86
+F9BB CJK COMPATIBILITY IDEOGRAPH-F9BB
+ : 50DA
+F9BC CJK COMPATIBILITY IDEOGRAPH-F9BC
+ : 5BEE
+F9BD CJK COMPATIBILITY IDEOGRAPH-F9BD
+ : 5C3F
+F9BE CJK COMPATIBILITY IDEOGRAPH-F9BE
+ : 6599
+F9BF CJK COMPATIBILITY IDEOGRAPH-F9BF
+ : 6A02
+F9C0 CJK COMPATIBILITY IDEOGRAPH-F9C0
+ : 71CE
+F9C1 CJK COMPATIBILITY IDEOGRAPH-F9C1
+ : 7642
+F9C2 CJK COMPATIBILITY IDEOGRAPH-F9C2
+ : 84FC
+F9C3 CJK COMPATIBILITY IDEOGRAPH-F9C3
+ : 907C
+F9C4 CJK COMPATIBILITY IDEOGRAPH-F9C4
+ : 9F8D
+F9C5 CJK COMPATIBILITY IDEOGRAPH-F9C5
+ : 6688
+F9C6 CJK COMPATIBILITY IDEOGRAPH-F9C6
+ : 962E
+F9C7 CJK COMPATIBILITY IDEOGRAPH-F9C7
+ : 5289
+F9C8 CJK COMPATIBILITY IDEOGRAPH-F9C8
+ : 677B
+F9C9 CJK COMPATIBILITY IDEOGRAPH-F9C9
+ : 67F3
+F9CA CJK COMPATIBILITY IDEOGRAPH-F9CA
+ : 6D41
+F9CB CJK COMPATIBILITY IDEOGRAPH-F9CB
+ : 6E9C
+F9CC CJK COMPATIBILITY IDEOGRAPH-F9CC
+ : 7409
+F9CD CJK COMPATIBILITY IDEOGRAPH-F9CD
+ : 7559
+F9CE CJK COMPATIBILITY IDEOGRAPH-F9CE
+ : 786B
+F9CF CJK COMPATIBILITY IDEOGRAPH-F9CF
+ : 7D10
+F9D0 CJK COMPATIBILITY IDEOGRAPH-F9D0
+ : 985E
+F9D1 CJK COMPATIBILITY IDEOGRAPH-F9D1
+ : 516D
+F9D2 CJK COMPATIBILITY IDEOGRAPH-F9D2
+ : 622E
+F9D3 CJK COMPATIBILITY IDEOGRAPH-F9D3
+ : 9678
+F9D4 CJK COMPATIBILITY IDEOGRAPH-F9D4
+ : 502B
+F9D5 CJK COMPATIBILITY IDEOGRAPH-F9D5
+ : 5D19
+F9D6 CJK COMPATIBILITY IDEOGRAPH-F9D6
+ : 6DEA
+F9D7 CJK COMPATIBILITY IDEOGRAPH-F9D7
+ : 8F2A
+F9D8 CJK COMPATIBILITY IDEOGRAPH-F9D8
+ : 5F8B
+F9D9 CJK COMPATIBILITY IDEOGRAPH-F9D9
+ : 6144
+F9DA CJK COMPATIBILITY IDEOGRAPH-F9DA
+ : 6817
+F9DB CJK COMPATIBILITY IDEOGRAPH-F9DB
+ : 7387
+F9DC CJK COMPATIBILITY IDEOGRAPH-F9DC
+ : 9686
+F9DD CJK COMPATIBILITY IDEOGRAPH-F9DD
+ : 5229
+F9DE CJK COMPATIBILITY IDEOGRAPH-F9DE
+ : 540F
+F9DF CJK COMPATIBILITY IDEOGRAPH-F9DF
+ : 5C65
+F9E0 CJK COMPATIBILITY IDEOGRAPH-F9E0
+ : 6613
+F9E1 CJK COMPATIBILITY IDEOGRAPH-F9E1
+ : 674E
+F9E2 CJK COMPATIBILITY IDEOGRAPH-F9E2
+ : 68A8
+F9E3 CJK COMPATIBILITY IDEOGRAPH-F9E3
+ : 6CE5
+F9E4 CJK COMPATIBILITY IDEOGRAPH-F9E4
+ : 7406
+F9E5 CJK COMPATIBILITY IDEOGRAPH-F9E5
+ : 75E2
+F9E6 CJK COMPATIBILITY IDEOGRAPH-F9E6
+ : 7F79
+F9E7 CJK COMPATIBILITY IDEOGRAPH-F9E7
+ : 88CF
+F9E8 CJK COMPATIBILITY IDEOGRAPH-F9E8
+ : 88E1
+F9E9 CJK COMPATIBILITY IDEOGRAPH-F9E9
+ : 91CC
+F9EA CJK COMPATIBILITY IDEOGRAPH-F9EA
+ : 96E2
+F9EB CJK COMPATIBILITY IDEOGRAPH-F9EB
+ : 533F
+F9EC CJK COMPATIBILITY IDEOGRAPH-F9EC
+ : 6EBA
+F9ED CJK COMPATIBILITY IDEOGRAPH-F9ED
+ : 541D
+F9EE CJK COMPATIBILITY IDEOGRAPH-F9EE
+ : 71D0
+F9EF CJK COMPATIBILITY IDEOGRAPH-F9EF
+ : 7498
+F9F0 CJK COMPATIBILITY IDEOGRAPH-F9F0
+ : 85FA
+F9F1 CJK COMPATIBILITY IDEOGRAPH-F9F1
+ : 96A3
+F9F2 CJK COMPATIBILITY IDEOGRAPH-F9F2
+ : 9C57
+F9F3 CJK COMPATIBILITY IDEOGRAPH-F9F3
+ : 9E9F
+F9F4 CJK COMPATIBILITY IDEOGRAPH-F9F4
+ : 6797
+F9F5 CJK COMPATIBILITY IDEOGRAPH-F9F5
+ : 6DCB
+F9F6 CJK COMPATIBILITY IDEOGRAPH-F9F6
+ : 81E8
+F9F7 CJK COMPATIBILITY IDEOGRAPH-F9F7
+ : 7ACB
+F9F8 CJK COMPATIBILITY IDEOGRAPH-F9F8
+ : 7B20
+F9F9 CJK COMPATIBILITY IDEOGRAPH-F9F9
+ : 7C92
+F9FA CJK COMPATIBILITY IDEOGRAPH-F9FA
+ : 72C0
+F9FB CJK COMPATIBILITY IDEOGRAPH-F9FB
+ : 7099
+F9FC CJK COMPATIBILITY IDEOGRAPH-F9FC
+ : 8B58
+F9FD CJK COMPATIBILITY IDEOGRAPH-F9FD
+ : 4EC0
+F9FE CJK COMPATIBILITY IDEOGRAPH-F9FE
+ : 8336
+F9FF CJK COMPATIBILITY IDEOGRAPH-F9FF
+ : 523A
+FA00 CJK COMPATIBILITY IDEOGRAPH-FA00
+ : 5207
+FA01 CJK COMPATIBILITY IDEOGRAPH-FA01
+ : 5EA6
+FA02 CJK COMPATIBILITY IDEOGRAPH-FA02
+ : 62D3
+FA03 CJK COMPATIBILITY IDEOGRAPH-FA03
+ : 7CD6
+FA04 CJK COMPATIBILITY IDEOGRAPH-FA04
+ : 5B85
+FA05 CJK COMPATIBILITY IDEOGRAPH-FA05
+ : 6D1E
+FA06 CJK COMPATIBILITY IDEOGRAPH-FA06
+ : 66B4
+FA07 CJK COMPATIBILITY IDEOGRAPH-FA07
+ : 8F3B
+FA08 CJK COMPATIBILITY IDEOGRAPH-FA08
+ : 884C
+FA09 CJK COMPATIBILITY IDEOGRAPH-FA09
+ : 964D
+FA0A CJK COMPATIBILITY IDEOGRAPH-FA0A
+ : 898B
+FA0B CJK COMPATIBILITY IDEOGRAPH-FA0B
+ : 5ED3
+@ Duplicates from Big 5
+FA0C CJK COMPATIBILITY IDEOGRAPH-FA0C
+ : 5140
+FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+ : 55C0
+@ The IBM 32 compatibility additions
+FA0E CJK COMPATIBILITY IDEOGRAPH-FA0E
+ * in the set of unified ideographs
+FA0F CJK COMPATIBILITY IDEOGRAPH-FA0F
+ * in the set of unified ideographs
+FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+ : 585A
+FA11 CJK COMPATIBILITY IDEOGRAPH-FA11
+ * in the set of unified ideographs
+FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+ : 6674
+FA13 CJK COMPATIBILITY IDEOGRAPH-FA13
+ * in the set of unified ideographs
+FA14 CJK COMPATIBILITY IDEOGRAPH-FA14
+ * in the set of unified ideographs
+FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+ : 51DE
+FA16 CJK COMPATIBILITY IDEOGRAPH-FA16
+ : 732A
+FA17 CJK COMPATIBILITY IDEOGRAPH-FA17
+ : 76CA
+FA18 CJK COMPATIBILITY IDEOGRAPH-FA18
+ : 793C
+FA19 CJK COMPATIBILITY IDEOGRAPH-FA19
+ : 795E
+FA1A CJK COMPATIBILITY IDEOGRAPH-FA1A
+ : 7965
+FA1B CJK COMPATIBILITY IDEOGRAPH-FA1B
+ : 798F
+FA1C CJK COMPATIBILITY IDEOGRAPH-FA1C
+ : 9756
+FA1D CJK COMPATIBILITY IDEOGRAPH-FA1D
+ : 7CBE
+FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+ : 7FBD
+FA1F CJK COMPATIBILITY IDEOGRAPH-FA1F *
+ * in the set of unified ideographs
+FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+ : 8612
+FA21 CJK COMPATIBILITY IDEOGRAPH-FA21
+ * in the set of unified ideographs
+FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+ : 8AF8
+FA23 CJK COMPATIBILITY IDEOGRAPH-FA23 *
+ * in the set of unified ideographs
+FA24 CJK COMPATIBILITY IDEOGRAPH-FA24
+ * in the set of unified ideographs
+FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+ : 9038
+FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+ : 90FD
+FA27 CJK COMPATIBILITY IDEOGRAPH-FA27
+ * in the set of unified ideographs
+FA28 CJK COMPATIBILITY IDEOGRAPH-FA28
+ * in the set of unified ideographs
+FA29 CJK COMPATIBILITY IDEOGRAPH-FA29
+ * in the set of unified ideographs
+FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+ : 98EF
+FA2B CJK COMPATIBILITY IDEOGRAPH-FA2B
+ : 98FC
+FA2C CJK COMPATIBILITY IDEOGRAPH-FA2C
+ : 9928
+FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+ : 9DB4
+@@ FB00 Alphabetic Presentation Forms FB4F
+@ Latin ligatures
+@+ See the Basic Latin block starting at 0020
+FB00 LATIN SMALL LIGATURE FF
+ # 0066 0066
+FB01 LATIN SMALL LIGATURE FI
+ # 0066 0069
+FB02 LATIN SMALL LIGATURE FL
+ # 0066 006C
+FB03 LATIN SMALL LIGATURE FFI
+ # 0066 0066 0069
+FB04 LATIN SMALL LIGATURE FFL
+ # 0066 0066 006C
+FB05 LATIN SMALL LIGATURE LONG S T
+ # 017F 0074
+FB06 LATIN SMALL LIGATURE ST
+ # 0073 0074
+@ Armenian ligatures
+@+ See the Armenian block starting at 0530
+FB13 ARMENIAN SMALL LIGATURE MEN NOW
+ # 0574 0576
+FB14 ARMENIAN SMALL LIGATURE MEN ECH
+ # 0574 0565
+FB15 ARMENIAN SMALL LIGATURE MEN INI
+ # 0574 056B
+FB16 ARMENIAN SMALL LIGATURE VEW NOW
+ # 057E 0576
+FB17 ARMENIAN SMALL LIGATURE MEN XEH
+ # 0574 056D
+@ Hebrew presentation forms
+@+ See the Hebrew block starting at 0590
+FB1D HEBREW LETTER YOD WITH HIRIQ
+ : 05D9 05B4
+FB1E HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ : 05F2 05B7
+FB20 HEBREW LETTER ALTERNATIVE AYIN
+ # <font> 05E2 hebrew letter ayin
+FB21 HEBREW LETTER WIDE ALEF
+ # <font> 05D0 hebrew letter alef
+FB22 HEBREW LETTER WIDE DALET
+ # <font> 05D3 hebrew letter dalet
+FB23 HEBREW LETTER WIDE HE
+ # <font> 05D4 hebrew letter he
+FB24 HEBREW LETTER WIDE KAF
+ # <font> 05DB hebrew letter kaf
+FB25 HEBREW LETTER WIDE LAMED
+ # <font> 05DC hebrew letter lamed
+FB26 HEBREW LETTER WIDE FINAL MEM
+ # <font> 05DD hebrew letter final mem
+FB27 HEBREW LETTER WIDE RESH
+ # <font> 05E8 hebrew letter resh
+FB28 HEBREW LETTER WIDE TAV
+ # <font> 05EA hebrew letter tav
+FB29 HEBREW LETTER ALTERNATIVE PLUS SIGN
+ # <font> 002B plus sign
+FB2A HEBREW LETTER SHIN WITH SHIN DOT
+ : 05E9 05C1
+FB2B HEBREW LETTER SHIN WITH SIN DOT
+ : 05E9 05C2
+FB2C HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+ : FB49 05C1
+FB2D HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+ : FB49 05C2
+FB2E HEBREW LETTER ALEF WITH PATAH
+ : 05D0 05B7
+FB2F HEBREW LETTER ALEF WITH QAMATS
+ : 05D0 05B8
+FB30 HEBREW LETTER ALEF WITH MAPIQ
+ : 05D0 05BC
+FB31 HEBREW LETTER BET WITH DAGESH
+ : 05D1 05BC
+FB32 HEBREW LETTER GIMEL WITH DAGESH
+ : 05D2 05BC
+FB33 HEBREW LETTER DALET WITH DAGESH
+ : 05D3 05BC
+FB34 HEBREW LETTER HE WITH MAPIQ
+ : 05D4 05BC
+FB35 HEBREW LETTER VAV WITH DAGESH
+ : 05D5 05BC
+FB36 HEBREW LETTER ZAYIN WITH DAGESH
+ : 05D6 05BC
+FB38 HEBREW LETTER TET WITH DAGESH
+ : 05D8 05BC
+FB39 HEBREW LETTER YOD WITH DAGESH
+ : 05D9 05BC
+FB3A HEBREW LETTER FINAL KAF WITH DAGESH
+ : 05DA 05BC
+FB3B HEBREW LETTER KAF WITH DAGESH
+ : 05DB 05BC
+FB3C HEBREW LETTER LAMED WITH DAGESH
+ : 05DC 05BC
+FB3E HEBREW LETTER MEM WITH DAGESH
+ : 05DE 05BC
+FB40 HEBREW LETTER NUN WITH DAGESH
+ : 05E0 05BC
+FB41 HEBREW LETTER SAMEKH WITH DAGESH
+ : 05E1 05BC
+FB43 HEBREW LETTER FINAL PE WITH DAGESH
+ : 05E3 05BC
+FB44 HEBREW LETTER PE WITH DAGESH
+ : 05E4 05BC
+FB46 HEBREW LETTER TSADI WITH DAGESH
+ : 05E6 05BC
+FB47 HEBREW LETTER QOF WITH DAGESH
+ : 05E7 05BC
+FB48 HEBREW LETTER RESH WITH DAGESH
+ : 05E8 05BC
+FB49 HEBREW LETTER SHIN WITH DAGESH
+ : 05E9 05BC
+FB4A HEBREW LETTER TAV WITH DAGESH
+ : 05EA 05BC
+FB4B HEBREW LETTER VAV WITH HOLAM
+ : 05D5 05B9
+FB4C HEBREW LETTER BET WITH RAFE
+ : 05D1 05BF
+FB4D HEBREW LETTER KAF WITH RAFE
+ : 05DB 05BF
+FB4E HEBREW LETTER PE WITH RAFE
+ : 05E4 05BF
+FB4F HEBREW LIGATURE ALEF LAMED
+ # 05D0 05DC
+@@ FB50 Arabic Presentation Forms-A FDFF
+@+ Preferred characters are found in the Arabic block 0600 - 06FF.
+@ Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.
+FB50 ARABIC LETTER ALEF WASLA ISOLATED FORM
+ # <isolated> 0671
+FB51 ARABIC LETTER ALEF WASLA FINAL FORM
+ # <final> 0671
+FB52 ARABIC LETTER BEEH ISOLATED FORM
+ # <isolated> 067B
+FB53 ARABIC LETTER BEEH FINAL FORM
+ # <final> 067B
+FB54 ARABIC LETTER BEEH INITIAL FORM
+ # <initial> 067B
+FB55 ARABIC LETTER BEEH MEDIAL FORM
+ # <medial> 067B
+FB56 ARABIC LETTER PEH ISOLATED FORM
+ # <isolated> 067E
+FB57 ARABIC LETTER PEH FINAL FORM
+ # <final> 067E
+FB58 ARABIC LETTER PEH INITIAL FORM
+ # <initial> 067E
+FB59 ARABIC LETTER PEH MEDIAL FORM
+ # <medial> 067E
+FB5A ARABIC LETTER BEHEH ISOLATED FORM
+ # <isolated> 0680
+FB5B ARABIC LETTER BEHEH FINAL FORM
+ # <final> 0680
+FB5C ARABIC LETTER BEHEH INITIAL FORM
+ # <initial> 0680
+FB5D ARABIC LETTER BEHEH MEDIAL FORM
+ # <medial> 0680
+FB5E ARABIC LETTER TTEHEH ISOLATED FORM
+ # <isolated> 067A
+FB5F ARABIC LETTER TTEHEH FINAL FORM
+ # <final> 067A
+FB60 ARABIC LETTER TTEHEH INITIAL FORM
+ # <initial> 067A
+FB61 ARABIC LETTER TTEHEH MEDIAL FORM
+ # <medial> 067A
+FB62 ARABIC LETTER TEHEH ISOLATED FORM
+ # <isolated> 067F
+FB63 ARABIC LETTER TEHEH FINAL FORM
+ # <final> 067F
+FB64 ARABIC LETTER TEHEH INITIAL FORM
+ # <initial> 067F
+FB65 ARABIC LETTER TEHEH MEDIAL FORM
+ # <medial> 067F
+FB66 ARABIC LETTER TTEH ISOLATED FORM
+ # <isolated> 0679
+FB67 ARABIC LETTER TTEH FINAL FORM
+ # <final> 0679
+FB68 ARABIC LETTER TTEH INITIAL FORM
+ # <initial> 0679
+FB69 ARABIC LETTER TTEH MEDIAL FORM
+ # <medial> 0679
+FB6A ARABIC LETTER VEH ISOLATED FORM
+ # <isolated> 06A4
+FB6B ARABIC LETTER VEH FINAL FORM
+ # <final> 06A4
+FB6C ARABIC LETTER VEH INITIAL FORM
+ # <initial> 06A4
+FB6D ARABIC LETTER VEH MEDIAL FORM
+ # <medial> 06A4
+FB6E ARABIC LETTER PEHEH ISOLATED FORM
+ # <isolated> 06A6
+FB6F ARABIC LETTER PEHEH FINAL FORM
+ # <final> 06A6
+FB70 ARABIC LETTER PEHEH INITIAL FORM
+ # <initial> 06A6
+FB71 ARABIC LETTER PEHEH MEDIAL FORM
+ # <medial> 06A6
+FB72 ARABIC LETTER DYEH ISOLATED FORM
+ # <isolated> 0684
+FB73 ARABIC LETTER DYEH FINAL FORM
+ # <final> 0684
+FB74 ARABIC LETTER DYEH INITIAL FORM
+ # <initial> 0684
+FB75 ARABIC LETTER DYEH MEDIAL FORM
+ # <medial> 0684
+FB76 ARABIC LETTER NYEH ISOLATED FORM
+ # <isolated> 0683
+FB77 ARABIC LETTER NYEH FINAL FORM
+ # <final> 0683
+FB78 ARABIC LETTER NYEH INITIAL FORM
+ # <initial> 0683
+FB79 ARABIC LETTER NYEH MEDIAL FORM
+ # <medial> 0683
+FB7A ARABIC LETTER TCHEH ISOLATED FORM
+ # <isolated> 0686
+FB7B ARABIC LETTER TCHEH FINAL FORM
+ # <final> 0686
+FB7C ARABIC LETTER TCHEH INITIAL FORM
+ # <initial> 0686
+FB7D ARABIC LETTER TCHEH MEDIAL FORM
+ # <medial> 0686
+FB7E ARABIC LETTER TCHEHEH ISOLATED FORM
+ # <isolated> 0687
+FB7F ARABIC LETTER TCHEHEH FINAL FORM
+ # <final> 0687
+FB80 ARABIC LETTER TCHEHEH INITIAL FORM
+ # <initial> 0687
+FB81 ARABIC LETTER TCHEHEH MEDIAL FORM
+ # <medial> 0687
+FB82 ARABIC LETTER DDAHAL ISOLATED FORM
+ # <isolated> 068D
+FB83 ARABIC LETTER DDAHAL FINAL FORM
+ # <final> 068D
+FB84 ARABIC LETTER DAHAL ISOLATED FORM
+ # <isolated> 068C
+FB85 ARABIC LETTER DAHAL FINAL FORM
+ # <final> 068C
+FB86 ARABIC LETTER DUL ISOLATED FORM
+ # <isolated> 068E
+FB87 ARABIC LETTER DUL FINAL FORM
+ # <final> 068E
+FB88 ARABIC LETTER DDAL ISOLATED FORM
+ # <isolated> 0688
+FB89 ARABIC LETTER DDAL FINAL FORM
+ # <final> 0688
+FB8A ARABIC LETTER JEH ISOLATED FORM
+ # <isolated> 0698
+FB8B ARABIC LETTER JEH FINAL FORM
+ # <final> 0698
+FB8C ARABIC LETTER RREH ISOLATED FORM
+ # <isolated> 0691
+FB8D ARABIC LETTER RREH FINAL FORM
+ # <final> 0691
+FB8E ARABIC LETTER KEHEH ISOLATED FORM
+ # <isolated> 06A9
+FB8F ARABIC LETTER KEHEH FINAL FORM
+ # <final> 06A9
+FB90 ARABIC LETTER KEHEH INITIAL FORM
+ # <initial> 06A9
+FB91 ARABIC LETTER KEHEH MEDIAL FORM
+ # <medial> 06A9
+FB92 ARABIC LETTER GAF ISOLATED FORM
+ # <isolated> 06AF
+FB93 ARABIC LETTER GAF FINAL FORM
+ # <final> 06AF
+FB94 ARABIC LETTER GAF INITIAL FORM
+ # <initial> 06AF
+FB95 ARABIC LETTER GAF MEDIAL FORM
+ # <medial> 06AF
+FB96 ARABIC LETTER GUEH ISOLATED FORM
+ # <isolated> 06B3
+FB97 ARABIC LETTER GUEH FINAL FORM
+ # <final> 06B3
+FB98 ARABIC LETTER GUEH INITIAL FORM
+ # <initial> 06B3
+FB99 ARABIC LETTER GUEH MEDIAL FORM
+ # <medial> 06B3
+FB9A ARABIC LETTER NGOEH ISOLATED FORM
+ # <isolated> 06B1
+FB9B ARABIC LETTER NGOEH FINAL FORM
+ # <final> 06B1
+FB9C ARABIC LETTER NGOEH INITIAL FORM
+ # <initial> 06B1
+FB9D ARABIC LETTER NGOEH MEDIAL FORM
+ # <medial> 06B1
+FB9E ARABIC LETTER NOON GHUNNA ISOLATED FORM
+ # <isolated> 06BA
+FB9F ARABIC LETTER NOON GHUNNA FINAL FORM
+ # <final> 06BA
+FBA0 ARABIC LETTER RNOON ISOLATED FORM
+ # <isolated> 06BB
+FBA1 ARABIC LETTER RNOON FINAL FORM
+ # <final> 06BB
+FBA2 ARABIC LETTER RNOON INITIAL FORM
+ # <initial> 06BB
+FBA3 ARABIC LETTER RNOON MEDIAL FORM
+ # <medial> 06BB
+FBA4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+ # <isolated> 06C0
+FBA5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+ # <final> 06C0
+FBA6 ARABIC LETTER HEH GOAL ISOLATED FORM
+ # <isolated> 06C1
+FBA7 ARABIC LETTER HEH GOAL FINAL FORM
+ # <final> 06C1
+FBA8 ARABIC LETTER HEH GOAL INITIAL FORM
+ # <initial> 06C1
+FBA9 ARABIC LETTER HEH GOAL MEDIAL FORM
+ # <medial> 06C1
+FBAA ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+ # <isolated> 06BE
+FBAB ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+ # <final> 06BE
+FBAC ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+ # <initial> 06BE
+FBAD ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+ # <medial> 06BE
+FBAE ARABIC LETTER YEH BARREE ISOLATED FORM
+ # <isolated> 06D2
+FBAF ARABIC LETTER YEH BARREE FINAL FORM
+ # <final> 06D2
+FBB0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 06D3
+FBB1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ # <final> 06D3
+@ Glyphs for contextual forms of letters for Central Asian languages
+FBD3 ARABIC LETTER NG ISOLATED FORM
+ # <isolated> 06AD
+FBD4 ARABIC LETTER NG FINAL FORM
+ # <final> 06AD
+FBD5 ARABIC LETTER NG INITIAL FORM
+ # <initial> 06AD
+FBD6 ARABIC LETTER NG MEDIAL FORM
+ # <medial> 06AD
+FBD7 ARABIC LETTER U ISOLATED FORM
+ # <isolated> 06C7
+FBD8 ARABIC LETTER U FINAL FORM
+ # <final> 06C7
+FBD9 ARABIC LETTER OE ISOLATED FORM
+ # <isolated> 06C6
+FBDA ARABIC LETTER OE FINAL FORM
+ # <final> 06C6
+FBDB ARABIC LETTER YU ISOLATED FORM
+ # <isolated> 06C8
+FBDC ARABIC LETTER YU FINAL FORM
+ # <final> 06C8
+FBDD ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 0677
+FBDE ARABIC LETTER VE ISOLATED FORM
+ # <isolated> 06CB
+FBDF ARABIC LETTER VE FINAL FORM
+ # <final> 06CB
+FBE0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+ # <isolated> 06C5
+FBE1 ARABIC LETTER KIRGHIZ OE FINAL FORM
+ # <final> 06C5
+FBE2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+ # <isolated> 06C9
+FBE3 ARABIC LETTER KIRGHIZ YU FINAL FORM
+ # <final> 06C9
+FBE4 ARABIC LETTER E ISOLATED FORM
+ # <isolated> 06D0
+FBE5 ARABIC LETTER E FINAL FORM
+ # <final> 06D0
+FBE6 ARABIC LETTER E INITIAL FORM
+ # <initial> 06D0
+FBE7 ARABIC LETTER E MEDIAL FORM
+ # <medial> 06D0
+FBE8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+ # <initial> 0649
+FBE9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+ # <medial> 0649
+@ Ligatures (two elements)
+FBEA ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+ # <isolated> 0626 0627
+FBEB ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+ # <final> 0626 0627
+FBEC ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+ # <isolated> 0626 06D5
+FBED ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+ # <final> 0626 06D5
+FBEE ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+ # <isolated> 0626 0648
+FBEF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+ # <final> 0626 0648
+FBF0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+ # <isolated> 0626 06C7
+FBF1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+ # <final> 0626 06C7
+FBF2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+ # <isolated> 0626 06C6
+FBF3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+ # <final> 0626 06C6
+FBF4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+ # <isolated> 0626 06C8
+FBF5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+ # <final> 0626 06C8
+FBF6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+ # <isolated> 0626 06D0
+FBF7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+ # <final> 0626 06D0
+FBF8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+ # <initial> 0626 06D0
+FBF9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0626 0649
+FBFA ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+ # <final> 0626 0649
+FBFB ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+ # <initial> 0626 0649
+FBFC ARABIC LETTER FARSI YEH ISOLATED FORM
+ # <isolated> 06CC
+FBFD ARABIC LETTER FARSI YEH FINAL FORM
+ # <final> 06CC
+FBFE ARABIC LETTER FARSI YEH INITIAL FORM
+ # <initial> 06CC
+FBFF ARABIC LETTER FARSI YEH MEDIAL FORM
+ # <medial> 06CC
+FC00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+ # <isolated> 0626 062C
+FC01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+ # <isolated> 0626 062D
+FC02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+ # <isolated> 0626 0645
+FC03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0626 0649
+FC04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+ # <isolated> 0626 064A
+FC05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+ # <isolated> 0628 062C
+FC06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+ # <isolated> 0628 062D
+FC07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+ # <isolated> 0628 062E
+FC08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+ # <isolated> 0628 0645
+FC09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0628 0649
+FC0A ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+ # <isolated> 0628 064A
+FC0B ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+ # <isolated> 062A 062C
+FC0C ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+ # <isolated> 062A 062D
+FC0D ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+ # <isolated> 062A 062E
+FC0E ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+ # <isolated> 062A 0645
+FC0F ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 062A 0649
+FC10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+ # <isolated> 062A 064A
+FC11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+ # <isolated> 062B 062C
+FC12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+ # <isolated> 062B 0645
+FC13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 062B 0649
+FC14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+ # <isolated> 062B 064A
+FC15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+ # <isolated> 062C 062D
+FC16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+ # <isolated> 062C 0645
+FC17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+ # <isolated> 062D 062C
+FC18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+ # <isolated> 062D 0645
+FC19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+ # <isolated> 062E 062C
+FC1A ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+ # <isolated> 062E 062D
+FC1B ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+ # <isolated> 062E 0645
+FC1C ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+ # <isolated> 0633 062C
+FC1D ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+ # <isolated> 0633 062D
+FC1E ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+ # <isolated> 0633 062E
+FC1F ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+ # <isolated> 0633 0645
+FC20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+ # <isolated> 0635 062D
+FC21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+ # <isolated> 0635 0645
+FC22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+ # <isolated> 0636 062C
+FC23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+ # <isolated> 0636 062D
+FC24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+ # <isolated> 0636 062E
+FC25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+ # <isolated> 0636 0645
+FC26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+ # <isolated> 0637 062D
+FC27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+ # <isolated> 0637 0645
+FC28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+ # <isolated> 0638 0645
+FC29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+ # <isolated> 0639 062C
+FC2A ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+ # <isolated> 0639 0645
+FC2B ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+ # <isolated> 063A 062C
+FC2C ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+ # <isolated> 063A 0645
+FC2D ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+ # <isolated> 0641 062C
+FC2E ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+ # <isolated> 0641 062D
+FC2F ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+ # <isolated> 0641 062E
+FC30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+ # <isolated> 0641 0645
+FC31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0641 0649
+FC32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+ # <isolated> 0641 064A
+FC33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+ # <isolated> 0642 062D
+FC34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+ # <isolated> 0642 0645
+FC35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0642 0649
+FC36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+ # <isolated> 0642 064A
+FC37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+ # <isolated> 0643 0627
+FC38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+ # <isolated> 0643 062C
+FC39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+ # <isolated> 0643 062D
+FC3A ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+ # <isolated> 0643 062E
+FC3B ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+ # <isolated> 0643 0644
+FC3C ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+ # <isolated> 0643 0645
+FC3D ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0643 0649
+FC3E ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+ # <isolated> 0643 064A
+FC3F ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+ # <isolated> 0644 062C
+FC40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+ # <isolated> 0644 062D
+FC41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+ # <isolated> 0644 062E
+FC42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+ # <isolated> 0644 0645
+FC43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0644 0649
+FC44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+ # <isolated> 0644 064A
+FC45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+ # <isolated> 0645 062C
+FC46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+ # <isolated> 0645 062D
+FC47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+ # <isolated> 0645 062E
+FC48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+ # <isolated> 0645 0645
+FC49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0645 0649
+FC4A ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+ # <isolated> 0645 064A
+FC4B ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+ # <isolated> 0646 062C
+FC4C ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+ # <isolated> 0646 062D
+FC4D ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+ # <isolated> 0646 062E
+FC4E ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+ # <isolated> 0646 0645
+FC4F ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0646 0649
+FC50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+ # <isolated> 0646 064A
+FC51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+ # <isolated> 0647 062C
+FC52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+ # <isolated> 0647 0645
+FC53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0647 0649
+FC54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+ # <isolated> 0647 064A
+FC55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+ # <isolated> 064A 062C
+FC56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+ # <isolated> 064A 062D
+FC57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+ # <isolated> 064A 062E
+FC58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+ # <isolated> 064A 0645
+FC59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 064A 0649
+FC5A ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+ # <isolated> 064A 064A
+FC5B ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+ # <isolated> 0630 0670
+FC5C ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+ # <isolated> 0631 0670
+FC5D ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ # <isolated> 0649 0670
+FC5E ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+ # <isolated> 0020 064C 0651
+FC5F ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+ # <isolated> 0020 064D 0651
+FC60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+ # <isolated> 0020 064E 0651
+FC61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+ # <isolated> 0020 064F 0651
+FC62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+ # <isolated> 0020 0650 0651
+FC63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ # <isolated> 0020 0651 0670
+FC64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+ # <final> 0626 0631
+FC65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+ # <final> 0626 0632
+FC66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+ # <final> 0626 0645
+FC67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+ # <final> 0626 0646
+FC68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+ # <final> 0626 0649
+FC69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+ # <final> 0626 064A
+FC6A ARABIC LIGATURE BEH WITH REH FINAL FORM
+ # <final> 0628 0631
+FC6B ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+ # <final> 0628 0632
+FC6C ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+ # <final> 0628 0645
+FC6D ARABIC LIGATURE BEH WITH NOON FINAL FORM
+ # <final> 0628 0646
+FC6E ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0628 0649
+FC6F ARABIC LIGATURE BEH WITH YEH FINAL FORM
+ # <final> 0628 064A
+FC70 ARABIC LIGATURE TEH WITH REH FINAL FORM
+ # <final> 062A 0631
+FC71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+ # <final> 062A 0632
+FC72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+ # <final> 062A 0645
+FC73 ARABIC LIGATURE TEH WITH NOON FINAL FORM
+ # <final> 062A 0646
+FC74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062A 0649
+FC75 ARABIC LIGATURE TEH WITH YEH FINAL FORM
+ # <final> 062A 064A
+FC76 ARABIC LIGATURE THEH WITH REH FINAL FORM
+ # <final> 062B 0631
+FC77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+ # <final> 062B 0632
+FC78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+ # <final> 062B 0645
+FC79 ARABIC LIGATURE THEH WITH NOON FINAL FORM
+ # <final> 062B 0646
+FC7A ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062B 0649
+FC7B ARABIC LIGATURE THEH WITH YEH FINAL FORM
+ # <final> 062B 064A
+FC7C ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0641 0649
+FC7D ARABIC LIGATURE FEH WITH YEH FINAL FORM
+ # <final> 0641 064A
+FC7E ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+ # <final> 0642 0649
+FC7F ARABIC LIGATURE QAF WITH YEH FINAL FORM
+ # <final> 0642 064A
+FC80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+ # <final> 0643 0627
+FC81 ARABIC LIGATURE KAF WITH LAM FINAL FORM
+ # <final> 0643 0644
+FC82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+ # <final> 0643 0645
+FC83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+ # <final> 0643 0649
+FC84 ARABIC LIGATURE KAF WITH YEH FINAL FORM
+ # <final> 0643 064A
+FC85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+ # <final> 0644 0645
+FC86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+ # <final> 0644 0649
+FC87 ARABIC LIGATURE LAM WITH YEH FINAL FORM
+ # <final> 0644 064A
+FC88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+ # <final> 0645 0627
+FC89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+ # <final> 0645 0645
+FC8A ARABIC LIGATURE NOON WITH REH FINAL FORM
+ # <final> 0646 0631
+FC8B ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+ # <final> 0646 0632
+FC8C ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+ # <final> 0646 0645
+FC8D ARABIC LIGATURE NOON WITH NOON FINAL FORM
+ # <final> 0646 0646
+FC8E ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+ # <final> 0646 0649
+FC8F ARABIC LIGATURE NOON WITH YEH FINAL FORM
+ # <final> 0646 064A
+FC90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+ # <final> 0649 0670
+FC91 ARABIC LIGATURE YEH WITH REH FINAL FORM
+ # <final> 064A 0631
+FC92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+ # <final> 064A 0632
+FC93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+ # <final> 064A 0645
+FC94 ARABIC LIGATURE YEH WITH NOON FINAL FORM
+ # <final> 064A 0646
+FC95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+ # <final> 064A 0649
+FC96 ARABIC LIGATURE YEH WITH YEH FINAL FORM
+ # <final> 064A 064A
+FC97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+ # <initial> 0626 062C
+FC98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+ # <initial> 0626 062D
+FC99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+ # <initial> 0626 062E
+FC9A ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+ # <initial> 0626 0645
+FC9B ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+ # <initial> 0626 0647
+FC9C ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+ # <initial> 0628 062C
+FC9D ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+ # <initial> 0628 062D
+FC9E ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+ # <initial> 0628 062E
+FC9F ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+ # <initial> 0628 0645
+FCA0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+ # <initial> 0628 0647
+FCA1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+ # <initial> 062A 062C
+FCA2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+ # <initial> 062A 062D
+FCA3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+ # <initial> 062A 062E
+FCA4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+ # <initial> 062A 0645
+FCA5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+ # <initial> 062A 0647
+FCA6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+ # <initial> 062B 0645
+FCA7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+ # <initial> 062C 062D
+FCA8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+ # <initial> 062C 0645
+FCA9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+ # <initial> 062D 062C
+FCAA ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+ # <initial> 062D 0645
+FCAB ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+ # <initial> 062E 062C
+FCAC ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+ # <initial> 062E 0645
+FCAD ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+ # <initial> 0633 062C
+FCAE ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+ # <initial> 0633 062D
+FCAF ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+ # <initial> 0633 062E
+FCB0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+ # <initial> 0633 0645
+FCB1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+ # <initial> 0635 062D
+FCB2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+ # <initial> 0635 062E
+FCB3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+ # <initial> 0635 0645
+FCB4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+ # <initial> 0636 062C
+FCB5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+ # <initial> 0636 062D
+FCB6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+ # <initial> 0636 062E
+FCB7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+ # <initial> 0636 0645
+FCB8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+ # <initial> 0637 062D
+FCB9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+ # <initial> 0638 0645
+FCBA ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+ # <initial> 0639 062C
+FCBB ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+ # <initial> 0639 0645
+FCBC ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+ # <initial> 063A 062C
+FCBD ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+ # <initial> 063A 0645
+FCBE ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+ # <initial> 0641 062C
+FCBF ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+ # <initial> 0641 062D
+FCC0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+ # <initial> 0641 062E
+FCC1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+ # <initial> 0641 0645
+FCC2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+ # <initial> 0642 062D
+FCC3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+ # <initial> 0642 0645
+FCC4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+ # <initial> 0643 062C
+FCC5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+ # <initial> 0643 062D
+FCC6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+ # <initial> 0643 062E
+FCC7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+ # <initial> 0643 0644
+FCC8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+ # <initial> 0643 0645
+FCC9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+ # <initial> 0644 062C
+FCCA ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+ # <initial> 0644 062D
+FCCB ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+ # <initial> 0644 062E
+FCCC ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+ # <initial> 0644 0645
+FCCD ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+ # <initial> 0644 0647
+FCCE ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+ # <initial> 0645 062C
+FCCF ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+ # <initial> 0645 062D
+FCD0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+ # <initial> 0645 062E
+FCD1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+ # <initial> 0645 0645
+FCD2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+ # <initial> 0646 062C
+FCD3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+ # <initial> 0646 062D
+FCD4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+ # <initial> 0646 062E
+FCD5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+ # <initial> 0646 0645
+FCD6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+ # <initial> 0646 0647
+FCD7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+ # <initial> 0647 062C
+FCD8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+ # <initial> 0647 0645
+FCD9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+ # <initial> 0647 0670
+FCDA ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+ # <initial> 064A 062C
+FCDB ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+ # <initial> 064A 062D
+FCDC ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+ # <initial> 064A 062E
+FCDD ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+ # <initial> 064A 0645
+FCDE ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+ # <initial> 064A 0647
+FCDF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+ # <medial> 0626 0645
+FCE0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+ # <medial> 0626 0647
+FCE1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+ # <medial> 0628 0645
+FCE2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+ # <medial> 0628 0647
+FCE3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+ # <medial> 062A 0645
+FCE4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+ # <medial> 062A 0647
+FCE5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+ # <medial> 062B 0645
+FCE6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+ # <medial> 062B 0647
+FCE7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+ # <medial> 0633 0645
+FCE8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+ # <medial> 0633 0647
+FCE9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+ # <medial> 0634 0645
+FCEA ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+ # <medial> 0634 0647
+FCEB ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+ # <medial> 0643 0644
+FCEC ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+ # <medial> 0643 0645
+FCED ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+ # <medial> 0644 0645
+FCEE ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+ # <medial> 0646 0645
+FCEF ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+ # <medial> 0646 0647
+FCF0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+ # <medial> 064A 0645
+FCF1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+ # <medial> 064A 0647
+FCF2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+ # <medial> 0640 064E 0651
+FCF3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+ # <medial> 0640 064F 0651
+FCF4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+ # <medial> 0640 0650 0651
+FCF5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0637 0649
+FCF6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+ # <isolated> 0637 064A
+FCF7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0639 0649
+FCF8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+ # <isolated> 0639 064A
+FCF9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 063A 0649
+FCFA ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+ # <isolated> 063A 064A
+FCFB ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0633 0649
+FCFC ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+ # <isolated> 0633 064A
+FCFD ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0634 0649
+FCFE ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+ # <isolated> 0634 064A
+FCFF ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 062D 0649
+FD00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+ # <isolated> 062D 064A
+FD01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 062C 0649
+FD02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+ # <isolated> 062C 064A
+FD03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 062E 0649
+FD04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+ # <isolated> 062E 064A
+FD05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0635 0649
+FD06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+ # <isolated> 0635 064A
+FD07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0636 0649
+FD08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+ # <isolated> 0636 064A
+FD09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+ # <isolated> 0634 062C
+FD0A ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+ # <isolated> 0634 062D
+FD0B ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+ # <isolated> 0634 062E
+FD0C ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+ # <isolated> 0634 0645
+FD0D ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+ # <isolated> 0634 0631
+FD0E ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+ # <isolated> 0633 0631
+FD0F ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+ # <isolated> 0635 0631
+FD10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+ # <isolated> 0636 0631
+FD11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0637 0649
+FD12 ARABIC LIGATURE TAH WITH YEH FINAL FORM
+ # <final> 0637 064A
+FD13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+ # <final> 0639 0649
+FD14 ARABIC LIGATURE AIN WITH YEH FINAL FORM
+ # <final> 0639 064A
+FD15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+ # <final> 063A 0649
+FD16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+ # <final> 063A 064A
+FD17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+ # <final> 0633 0649
+FD18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+ # <final> 0633 064A
+FD19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+ # <final> 0634 0649
+FD1A ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+ # <final> 0634 064A
+FD1B ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062D 0649
+FD1C ARABIC LIGATURE HAH WITH YEH FINAL FORM
+ # <final> 062D 064A
+FD1D ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 062C 0649
+FD1E ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+ # <final> 062C 064A
+FD1F ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062E 0649
+FD20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+ # <final> 062E 064A
+FD21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+ # <final> 0635 0649
+FD22 ARABIC LIGATURE SAD WITH YEH FINAL FORM
+ # <final> 0635 064A
+FD23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+ # <final> 0636 0649
+FD24 ARABIC LIGATURE DAD WITH YEH FINAL FORM
+ # <final> 0636 064A
+FD25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+ # <final> 0634 062C
+FD26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+ # <final> 0634 062D
+FD27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+ # <final> 0634 062E
+FD28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+ # <final> 0634 0645
+FD29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+ # <final> 0634 0631
+FD2A ARABIC LIGATURE SEEN WITH REH FINAL FORM
+ # <final> 0633 0631
+FD2B ARABIC LIGATURE SAD WITH REH FINAL FORM
+ # <final> 0635 0631
+FD2C ARABIC LIGATURE DAD WITH REH FINAL FORM
+ # <final> 0636 0631
+FD2D ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+ # <initial> 0634 062C
+FD2E ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+ # <initial> 0634 062D
+FD2F ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+ # <initial> 0634 062E
+FD30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+ # <initial> 0634 0645
+FD31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+ # <initial> 0633 0647
+FD32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+ # <initial> 0634 0647
+FD33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+ # <initial> 0637 0645
+FD34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+ # <medial> 0633 062C
+FD35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+ # <medial> 0633 062D
+FD36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+ # <medial> 0633 062E
+FD37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+ # <medial> 0634 062C
+FD38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+ # <medial> 0634 062D
+FD39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+ # <medial> 0634 062E
+FD3A ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+ # <medial> 0637 0645
+FD3B ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+ # <medial> 0638 0645
+FD3C ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+ # <final> 0627 064B
+FD3D ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ # <isolated> 0627 064B
+@ Punctuation
+FD3E ORNATE LEFT PARENTHESIS
+FD3F ORNATE RIGHT PARENTHESIS
+@ Ligatures (three elements)
+FD50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+ # <initial> 062A 062C 0645
+FD51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+ # <final> 062A 062D 062C
+FD52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+ # <initial> 062A 062D 062C
+FD53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+ # <initial> 062A 062D 0645
+FD54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+ # <initial> 062A 062E 0645
+FD55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+ # <initial> 062A 0645 062C
+FD56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 062A 0645 062D
+FD57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+ # <initial> 062A 0645 062E
+FD58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+ # <final> 062C 0645 062D
+FD59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 062C 0645 062D
+FD5A ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+ # <final> 062D 0645 064A
+FD5B ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 062D 0645 0649
+FD5C ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+ # <initial> 0633 062D 062C
+FD5D ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+ # <initial> 0633 062C 062D
+FD5E ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 0633 062C 0649
+FD5F ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+ # <final> 0633 0645 062D
+FD60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 0633 0645 062D
+FD61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+ # <initial> 0633 0645 062C
+FD62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0633 0645 0645
+FD63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0633 0645 0645
+FD64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+ # <final> 0635 062D 062D
+FD65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+ # <initial> 0635 062D 062D
+FD66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0635 0645 0645
+FD67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+ # <final> 0634 062D 0645
+FD68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+ # <initial> 0634 062D 0645
+FD69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+ # <final> 0634 062C 064A
+FD6A ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+ # <final> 0634 0645 062E
+FD6B ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+ # <initial> 0634 0645 062E
+FD6C ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0634 0645 0645
+FD6D ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0634 0645 0645
+FD6E ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0636 062D 0649
+FD6F ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+ # <final> 0636 062E 0645
+FD70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+ # <initial> 0636 062E 0645
+FD71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+ # <final> 0637 0645 062D
+FD72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 0637 0645 062D
+FD73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0637 0645 0645
+FD74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+ # <final> 0637 0645 064A
+FD75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+ # <final> 0639 062C 0645
+FD76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0639 0645 0645
+FD77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0639 0645 0645
+FD78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 0639 0645 0649
+FD79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+ # <final> 063A 0645 0645
+FD7A ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+ # <final> 063A 0645 064A
+FD7B ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 063A 0645 0649
+FD7C ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+ # <final> 0641 062E 0645
+FD7D ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+ # <initial> 0641 062E 0645
+FD7E ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+ # <final> 0642 0645 062D
+FD7F ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0642 0645 0645
+FD80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+ # <final> 0644 062D 0645
+FD81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+ # <final> 0644 062D 064A
+FD82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0644 062D 0649
+FD83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+ # <initial> 0644 062C 062C
+FD84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+ # <final> 0644 062C 062C
+FD85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+ # <final> 0644 062E 0645
+FD86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+ # <initial> 0644 062E 0645
+FD87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+ # <final> 0644 0645 062D
+FD88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 0644 0645 062D
+FD89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+ # <initial> 0645 062D 062C
+FD8A ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+ # <initial> 0645 062D 0645
+FD8B ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+ # <final> 0645 062D 064A
+FD8C ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+ # <initial> 0645 062C 062D
+FD8D ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+ # <initial> 0645 062C 0645
+FD8E ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+ # <initial> 0645 062E 062C
+FD8F ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ # <initial> 0645 062E 0645
+FD92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+ # <initial> 0645 062C 062E
+FD93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+ # <initial> 0647 0645 062C
+FD94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0647 0645 0645
+FD95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+ # <initial> 0646 062D 0645
+FD96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0646 062D 0649
+FD97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+ # <final> 0646 062C 0645
+FD98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+ # <initial> 0646 062C 0645
+FD99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 0646 062C 0649
+FD9A ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+ # <final> 0646 0645 064A
+FD9B ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 0646 0645 0649
+FD9C ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+ # <final> 064A 0645 0645
+FD9D ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 064A 0645 0645
+FD9E ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+ # <final> 0628 062E 064A
+FD9F ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+ # <final> 062A 062C 064A
+FDA0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 062A 062C 0649
+FDA1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+ # <final> 062A 062E 064A
+FDA2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062A 062E 0649
+FDA3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+ # <final> 062A 0645 064A
+FDA4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 062A 0645 0649
+FDA5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+ # <final> 062C 0645 064A
+FDA6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 062C 062D 0649
+FDA7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ # <final> 062C 0645 0649
+FDA8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+ # <final> 0633 062E 0649
+FDA9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+ # <final> 0635 062D 064A
+FDAA ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+ # <final> 0634 062D 064A
+FDAB ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+ # <final> 0636 062D 064A
+FDAC ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+ # <final> 0644 062C 064A
+FDAD ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+ # <final> 0644 0645 064A
+FDAE ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+ # <final> 064A 062D 064A
+FDAF ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+ # <final> 064A 062C 064A
+FDB0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+ # <final> 064A 0645 064A
+FDB1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+ # <final> 0645 0645 064A
+FDB2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+ # <final> 0642 0645 064A
+FDB3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+ # <final> 0646 062D 064A
+FDB4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+ # <initial> 0642 0645 062D
+FDB5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+ # <initial> 0644 062D 0645
+FDB6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+ # <final> 0639 0645 064A
+FDB7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+ # <final> 0643 0645 064A
+FDB8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+ # <initial> 0646 062C 062D
+FDB9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+ # <final> 0645 062E 064A
+FDBA ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+ # <initial> 0644 062C 0645
+FDBB ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+ # <final> 0643 0645 0645
+FDBC ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+ # <final> 0644 062C 0645
+FDBD ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+ # <final> 0646 062C 062D
+FDBE ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+ # <final> 062C 062D 064A
+FDBF ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+ # <final> 062D 062C 064A
+FDC0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+ # <final> 0645 062C 064A
+FDC1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+ # <final> 0641 0645 064A
+FDC2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+ # <final> 0628 062D 064A
+FDC3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0643 0645 0645
+FDC4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+ # <initial> 0639 062C 0645
+FDC5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+ # <initial> 0635 0645 0645
+FDC6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+ # <final> 0633 062E 064A
+FDC7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ # <final> 0646 062C 064A
+@ Word ligatures
+FDF0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+ # <isolated> 0635 0644 06D2
+FDF1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+ # <isolated> 0642 0644 06D2
+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
+ # <isolated> 0627 0644 0644 0647
+FDF3 ARABIC LIGATURE AKBAR ISOLATED FORM
+ # <isolated> 0627 0643 0628 0631
+FDF4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+ # <isolated> 0645 062D 0645 062F
+FDF5 ARABIC LIGATURE SALAM ISOLATED FORM
+ # <isolated> 0635 0644 0639 0645
+FDF6 ARABIC LIGATURE RASOUL ISOLATED FORM
+ # <isolated> 0631 0633 0648 0644
+FDF7 ARABIC LIGATURE ALAYHE ISOLATED FORM
+ # <isolated> 0639 0644 064A 0647
+FDF8 ARABIC LIGATURE WASALLAM ISOLATED FORM
+ # <isolated> 0648 0633 0644 0645
+FDF9 ARABIC LIGATURE SALLA ISOLATED FORM
+ # <isolated> 0635 0644 0649
+FDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+ # <isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
+FDFB ARABIC LIGATURE JALLAJALALOUHOU
+ # <isolated> 062C 0644 0020 062C 0644 0627 0644 0647
+@@ FE20 Combining Half Marks FE2F
+@ Combining half marks
+FE20 COMBINING LIGATURE LEFT HALF
+FE21 COMBINING LIGATURE RIGHT HALF
+FE22 COMBINING DOUBLE TILDE LEFT HALF
+FE23 COMBINING DOUBLE TILDE RIGHT HALF
+@@ FE30 CJK Compatibility Forms FE4F
+@ Glyphs for vertical variants
+FE30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ # <vertical> 2025
+FE31 PRESENTATION FORM FOR VERTICAL EM DASH
+ # <vertical> 2014
+FE32 PRESENTATION FORM FOR VERTICAL EN DASH
+ # <vertical> 2013
+FE33 PRESENTATION FORM FOR VERTICAL LOW LINE
+ # <vertical> 005F
+FE34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ # <vertical> 005F
+FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ # <vertical> 0028
+FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ # <vertical> 0029
+FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ # <vertical> 007B
+FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ # <vertical> 007D
+FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ # <vertical> 3014
+FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ # <vertical> 3015
+FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ # <vertical> 3010
+FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ # <vertical> 3011
+FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ # <vertical> 300A
+FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ # <vertical> 300B
+FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ # <vertical> 3008
+FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ # <vertical> 3009
+FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ # <vertical> 300C
+FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ # <vertical> 300D
+FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ # <vertical> 300E
+FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ # <vertical> 300F
+@ Overscores and underscores
+FE49 DASHED OVERLINE
+ # 203E overline
+FE4A CENTRELINE OVERLINE
+ # 203E overline
+FE4B WAVY OVERLINE
+ # 203E overline
+FE4C DOUBLE WAVY OVERLINE
+ # 203E overline
+FE4D DASHED LOW LINE
+ # 005F low line
+FE4E CENTRELINE LOW LINE
+ # 005F low line
+FE4F WAVY LOW LINE
+ # 005F low line
+@@ FE50 Small Form Variants FE6F
+@ Small form variants
+FE50 SMALL COMMA
+ # <small> 002C
+FE51 SMALL IDEOGRAPHIC COMMA
+ # <small> 3001
+FE52 SMALL FULL STOP
+ # <small> 002E
+FE53 <reserved>
+ x (middle dot - 00B7)
+FE54 SMALL SEMICOLON
+ # <small> 003B
+FE55 SMALL COLON
+ # <small> 003A
+FE56 SMALL QUESTION MARK
+ # <small> 003F
+FE57 SMALL EXCLAMATION MARK
+ # <small> 0021
+FE58 SMALL EM DASH
+ # <small> 2014
+FE59 SMALL LEFT PARENTHESIS
+ # <small> 0028
+FE5A SMALL RIGHT PARENTHESIS
+ # <small> 0029
+FE5B SMALL LEFT CURLY BRACKET
+ # <small> 007B
+FE5C SMALL RIGHT CURLY BRACKET
+ # <small> 007D
+FE5D SMALL LEFT TORTOISE SHELL BRACKET
+ # <small> 3014
+FE5E SMALL RIGHT TORTOISE SHELL BRACKET
+ # <small> 3015
+FE5F SMALL NUMBER SIGN
+ # <small> 0023
+FE60 SMALL AMPERSAND
+ # <small> 0026
+FE61 SMALL ASTERISK
+ # <small> 002A
+FE62 SMALL PLUS SIGN
+ # <small> 002B
+FE63 SMALL HYPHEN-MINUS
+ # <small> 002D
+FE64 SMALL LESS-THAN SIGN
+ # <small> 003C
+FE65 SMALL GREATER-THAN SIGN
+ # <small> 003E
+FE66 SMALL EQUALS SIGN
+ # <small> 003D
+FE67 <reserved>
+ x (division slash - 2215)
+FE68 SMALL REVERSE SOLIDUS
+ # <small> 005C
+FE69 SMALL DOLLAR SIGN
+ # <small> 0024
+FE6A SMALL PERCENT SIGN
+ # <small> 0025
+FE6B SMALL COMMERCIAL AT
+ # <small> 0040
+@@ FE70 Arabic Presentation Forms-B FEFF
+@ Glyphs for spacing forms of Arabic points
+FE70 ARABIC FATHATAN ISOLATED FORM
+ # <isolated> 0020 064B
+FE71 ARABIC TATWEEL WITH FATHATAN ABOVE
+ # <medial> 0640 064B
+FE72 ARABIC DAMMATAN ISOLATED FORM
+ # <isolated> 0020 064C
+FE74 ARABIC KASRATAN ISOLATED FORM
+ # <isolated> 0020 064D
+FE76 ARABIC FATHA ISOLATED FORM
+ # <isolated> 0020 064E
+FE77 ARABIC FATHA MEDIAL FORM
+ # <medial> 0640 064E
+FE78 ARABIC DAMMA ISOLATED FORM
+ # <isolated> 0020 064F
+FE79 ARABIC DAMMA MEDIAL FORM
+ # <medial> 0640 064F
+FE7A ARABIC KASRA ISOLATED FORM
+ # <isolated> 0020 0650
+FE7B ARABIC KASRA MEDIAL FORM
+ # <medial> 0640 0650
+FE7C ARABIC SHADDA ISOLATED FORM
+ # <isolated> 0020 0651
+FE7D ARABIC SHADDA MEDIAL FORM
+ # <medial> 0640 0651
+FE7E ARABIC SUKUN ISOLATED FORM
+ # <isolated> 0020 0652
+FE7F ARABIC SUKUN MEDIAL FORM
+ # <medial> 0640 0652
+@ Basic glyphs for Arabic language contextual forms
+FE80 ARABIC LETTER HAMZA ISOLATED FORM
+ # <isolated> 0621
+FE81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+ # <isolated> 0622
+FE82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+ # <final> 0622
+FE83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 0623
+FE84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+ # <final> 0623
+FE85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 0624
+FE86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+ # <final> 0624
+FE87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+ # <isolated> 0625
+FE88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+ # <final> 0625
+FE89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 0626
+FE8A ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+ # <final> 0626
+FE8B ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+ # <initial> 0626
+FE8C ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+ # <medial> 0626
+FE8D ARABIC LETTER ALEF ISOLATED FORM
+ # <isolated> 0627
+FE8E ARABIC LETTER ALEF FINAL FORM
+ # <final> 0627
+FE8F ARABIC LETTER BEH ISOLATED FORM
+ # <isolated> 0628
+FE90 ARABIC LETTER BEH FINAL FORM
+ # <final> 0628
+FE91 ARABIC LETTER BEH INITIAL FORM
+ # <initial> 0628
+FE92 ARABIC LETTER BEH MEDIAL FORM
+ # <medial> 0628
+FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM
+ # <isolated> 0629
+FE94 ARABIC LETTER TEH MARBUTA FINAL FORM
+ # <final> 0629
+FE95 ARABIC LETTER TEH ISOLATED FORM
+ # <isolated> 062A
+FE96 ARABIC LETTER TEH FINAL FORM
+ # <final> 062A
+FE97 ARABIC LETTER TEH INITIAL FORM
+ # <initial> 062A
+FE98 ARABIC LETTER TEH MEDIAL FORM
+ # <medial> 062A
+FE99 ARABIC LETTER THEH ISOLATED FORM
+ # <isolated> 062B
+FE9A ARABIC LETTER THEH FINAL FORM
+ # <final> 062B
+FE9B ARABIC LETTER THEH INITIAL FORM
+ # <initial> 062B
+FE9C ARABIC LETTER THEH MEDIAL FORM
+ # <medial> 062B
+FE9D ARABIC LETTER JEEM ISOLATED FORM
+ # <isolated> 062C
+FE9E ARABIC LETTER JEEM FINAL FORM
+ # <final> 062C
+FE9F ARABIC LETTER JEEM INITIAL FORM
+ # <initial> 062C
+FEA0 ARABIC LETTER JEEM MEDIAL FORM
+ # <medial> 062C
+FEA1 ARABIC LETTER HAH ISOLATED FORM
+ # <isolated> 062D
+FEA2 ARABIC LETTER HAH FINAL FORM
+ # <final> 062D
+FEA3 ARABIC LETTER HAH INITIAL FORM
+ # <initial> 062D
+FEA4 ARABIC LETTER HAH MEDIAL FORM
+ # <medial> 062D
+FEA5 ARABIC LETTER KHAH ISOLATED FORM
+ # <isolated> 062E
+FEA6 ARABIC LETTER KHAH FINAL FORM
+ # <final> 062E
+FEA7 ARABIC LETTER KHAH INITIAL FORM
+ # <initial> 062E
+FEA8 ARABIC LETTER KHAH MEDIAL FORM
+ # <medial> 062E
+FEA9 ARABIC LETTER DAL ISOLATED FORM
+ # <isolated> 062F
+FEAA ARABIC LETTER DAL FINAL FORM
+ # <final> 062F
+FEAB ARABIC LETTER THAL ISOLATED FORM
+ # <isolated> 0630
+FEAC ARABIC LETTER THAL FINAL FORM
+ # <final> 0630
+FEAD ARABIC LETTER REH ISOLATED FORM
+ # <isolated> 0631
+FEAE ARABIC LETTER REH FINAL FORM
+ # <final> 0631
+FEAF ARABIC LETTER ZAIN ISOLATED FORM
+ # <isolated> 0632
+FEB0 ARABIC LETTER ZAIN FINAL FORM
+ # <final> 0632
+FEB1 ARABIC LETTER SEEN ISOLATED FORM
+ # <isolated> 0633
+FEB2 ARABIC LETTER SEEN FINAL FORM
+ # <final> 0633
+FEB3 ARABIC LETTER SEEN INITIAL FORM
+ # <initial> 0633
+FEB4 ARABIC LETTER SEEN MEDIAL FORM
+ # <medial> 0633
+FEB5 ARABIC LETTER SHEEN ISOLATED FORM
+ # <isolated> 0634
+FEB6 ARABIC LETTER SHEEN FINAL FORM
+ # <final> 0634
+FEB7 ARABIC LETTER SHEEN INITIAL FORM
+ # <initial> 0634
+FEB8 ARABIC LETTER SHEEN MEDIAL FORM
+ # <medial> 0634
+FEB9 ARABIC LETTER SAD ISOLATED FORM
+ # <isolated> 0635
+FEBA ARABIC LETTER SAD FINAL FORM
+ # <final> 0635
+FEBB ARABIC LETTER SAD INITIAL FORM
+ # <initial> 0635
+FEBC ARABIC LETTER SAD MEDIAL FORM
+ # <medial> 0635
+FEBD ARABIC LETTER DAD ISOLATED FORM
+ # <isolated> 0636
+FEBE ARABIC LETTER DAD FINAL FORM
+ # <final> 0636
+FEBF ARABIC LETTER DAD INITIAL FORM
+ # <initial> 0636
+FEC0 ARABIC LETTER DAD MEDIAL FORM
+ # <medial> 0636
+FEC1 ARABIC LETTER TAH ISOLATED FORM
+ # <isolated> 0637
+FEC2 ARABIC LETTER TAH FINAL FORM
+ # <final> 0637
+FEC3 ARABIC LETTER TAH INITIAL FORM
+ # <initial> 0637
+FEC4 ARABIC LETTER TAH MEDIAL FORM
+ # <medial> 0637
+FEC5 ARABIC LETTER ZAH ISOLATED FORM
+ # <isolated> 0638
+FEC6 ARABIC LETTER ZAH FINAL FORM
+ # <final> 0638
+FEC7 ARABIC LETTER ZAH INITIAL FORM
+ # <initial> 0638
+FEC8 ARABIC LETTER ZAH MEDIAL FORM
+ # <medial> 0638
+FEC9 ARABIC LETTER AIN ISOLATED FORM
+ # <isolated> 0639
+FECA ARABIC LETTER AIN FINAL FORM
+ # <final> 0639
+FECB ARABIC LETTER AIN INITIAL FORM
+ # <initial> 0639
+FECC ARABIC LETTER AIN MEDIAL FORM
+ # <medial> 0639
+FECD ARABIC LETTER GHAIN ISOLATED FORM
+ # <isolated> 063A
+FECE ARABIC LETTER GHAIN FINAL FORM
+ # <final> 063A
+FECF ARABIC LETTER GHAIN INITIAL FORM
+ # <initial> 063A
+FED0 ARABIC LETTER GHAIN MEDIAL FORM
+ # <medial> 063A
+FED1 ARABIC LETTER FEH ISOLATED FORM
+ # <isolated> 0641
+FED2 ARABIC LETTER FEH FINAL FORM
+ # <final> 0641
+FED3 ARABIC LETTER FEH INITIAL FORM
+ # <initial> 0641
+FED4 ARABIC LETTER FEH MEDIAL FORM
+ # <medial> 0641
+FED5 ARABIC LETTER QAF ISOLATED FORM
+ # <isolated> 0642
+FED6 ARABIC LETTER QAF FINAL FORM
+ # <final> 0642
+FED7 ARABIC LETTER QAF INITIAL FORM
+ # <initial> 0642
+FED8 ARABIC LETTER QAF MEDIAL FORM
+ # <medial> 0642
+FED9 ARABIC LETTER KAF ISOLATED FORM
+ # <isolated> 0643
+FEDA ARABIC LETTER KAF FINAL FORM
+ # <final> 0643
+FEDB ARABIC LETTER KAF INITIAL FORM
+ # <initial> 0643
+FEDC ARABIC LETTER KAF MEDIAL FORM
+ # <medial> 0643
+FEDD ARABIC LETTER LAM ISOLATED FORM
+ # <isolated> 0644
+FEDE ARABIC LETTER LAM FINAL FORM
+ # <final> 0644
+FEDF ARABIC LETTER LAM INITIAL FORM
+ # <initial> 0644
+FEE0 ARABIC LETTER LAM MEDIAL FORM
+ # <medial> 0644
+FEE1 ARABIC LETTER MEEM ISOLATED FORM
+ # <isolated> 0645
+FEE2 ARABIC LETTER MEEM FINAL FORM
+ # <final> 0645
+FEE3 ARABIC LETTER MEEM INITIAL FORM
+ # <initial> 0645
+FEE4 ARABIC LETTER MEEM MEDIAL FORM
+ # <medial> 0645
+FEE5 ARABIC LETTER NOON ISOLATED FORM
+ # <isolated> 0646
+FEE6 ARABIC LETTER NOON FINAL FORM
+ # <final> 0646
+FEE7 ARABIC LETTER NOON INITIAL FORM
+ # <initial> 0646
+FEE8 ARABIC LETTER NOON MEDIAL FORM
+ # <medial> 0646
+FEE9 ARABIC LETTER HEH ISOLATED FORM
+ # <isolated> 0647
+FEEA ARABIC LETTER HEH FINAL FORM
+ # <final> 0647
+FEEB ARABIC LETTER HEH INITIAL FORM
+ # <initial> 0647
+FEEC ARABIC LETTER HEH MEDIAL FORM
+ # <medial> 0647
+FEED ARABIC LETTER WAW ISOLATED FORM
+ # <isolated> 0648
+FEEE ARABIC LETTER WAW FINAL FORM
+ # <final> 0648
+FEEF ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+ # <isolated> 0649
+FEF0 ARABIC LETTER ALEF MAKSURA FINAL FORM
+ # <final> 0649
+FEF1 ARABIC LETTER YEH ISOLATED FORM
+ # <isolated> 064A
+FEF2 ARABIC LETTER YEH FINAL FORM
+ # <final> 064A
+FEF3 ARABIC LETTER YEH INITIAL FORM
+ # <initial> 064A
+FEF4 ARABIC LETTER YEH MEDIAL FORM
+ # <medial> 064A
+FEF5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ # <isolated> 0644 0622
+FEF6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+ # <final> 0644 0622
+FEF7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ # <isolated> 0644 0623
+FEF8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+ # <final> 0644 0623
+FEF9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+ # <isolated> 0644 0625
+FEFA ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+ # <final> 0644 0625
+FEFB ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ # <isolated> 0644 0627
+FEFC ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ # <final> 0644 0627
+@ Special
+FEFF ZERO WIDTH NO-BREAK SPACE
+ = BYTE ORDER MARK (BOM)
+ * may be used to detect byte order by contrast with FFFE which is not a character
+ x (<not a character> - FFFE)
+ x (zero width space - 200B)
+@@ FF00 Halfwidth and Fullwidth Forms FFEF
+@ Fullwidth ASCII variants
+@+ See ASCII 0020 - 007E
+FF01 FULLWIDTH EXCLAMATION MARK
+ # <wide> 0021
+FF02 FULLWIDTH QUOTATION MARK
+ # <wide> 0022
+FF03 FULLWIDTH NUMBER SIGN
+ # <wide> 0023
+FF04 FULLWIDTH DOLLAR SIGN
+ # <wide> 0024
+FF05 FULLWIDTH PERCENT SIGN
+ # <wide> 0025
+FF06 FULLWIDTH AMPERSAND
+ # <wide> 0026
+FF07 FULLWIDTH APOSTROPHE
+ # <wide> 0027
+FF08 FULLWIDTH LEFT PARENTHESIS
+ # <wide> 0028
+FF09 FULLWIDTH RIGHT PARENTHESIS
+ # <wide> 0029
+FF0A FULLWIDTH ASTERISK
+ # <wide> 002A
+FF0B FULLWIDTH PLUS SIGN
+ # <wide> 002B
+FF0C FULLWIDTH COMMA
+ # <wide> 002C
+FF0D FULLWIDTH HYPHEN-MINUS
+ # <wide> 002D
+FF0E FULLWIDTH FULL STOP
+ # <wide> 002E
+FF0F FULLWIDTH SOLIDUS
+ # <wide> 002F
+FF10 FULLWIDTH DIGIT ZERO
+ # <wide> 0030
+FF11 FULLWIDTH DIGIT ONE
+ # <wide> 0031
+FF12 FULLWIDTH DIGIT TWO
+ # <wide> 0032
+FF13 FULLWIDTH DIGIT THREE
+ # <wide> 0033
+FF14 FULLWIDTH DIGIT FOUR
+ # <wide> 0034
+FF15 FULLWIDTH DIGIT FIVE
+ # <wide> 0035
+FF16 FULLWIDTH DIGIT SIX
+ # <wide> 0036
+FF17 FULLWIDTH DIGIT SEVEN
+ # <wide> 0037
+FF18 FULLWIDTH DIGIT EIGHT
+ # <wide> 0038
+FF19 FULLWIDTH DIGIT NINE
+ # <wide> 0039
+FF1A FULLWIDTH COLON
+ # <wide> 003A
+FF1B FULLWIDTH SEMICOLON
+ # <wide> 003B
+FF1C FULLWIDTH LESS-THAN SIGN
+ # <wide> 003C
+FF1D FULLWIDTH EQUALS SIGN
+ # <wide> 003D
+FF1E FULLWIDTH GREATER-THAN SIGN
+ # <wide> 003E
+FF1F FULLWIDTH QUESTION MARK
+ # <wide> 003F
+FF20 FULLWIDTH COMMERCIAL AT
+ # <wide> 0040
+FF21 FULLWIDTH LATIN CAPITAL LETTER A
+ # <wide> 0041
+FF22 FULLWIDTH LATIN CAPITAL LETTER B
+ # <wide> 0042
+FF23 FULLWIDTH LATIN CAPITAL LETTER C
+ # <wide> 0043
+FF24 FULLWIDTH LATIN CAPITAL LETTER D
+ # <wide> 0044
+FF25 FULLWIDTH LATIN CAPITAL LETTER E
+ # <wide> 0045
+FF26 FULLWIDTH LATIN CAPITAL LETTER F
+ # <wide> 0046
+FF27 FULLWIDTH LATIN CAPITAL LETTER G
+ # <wide> 0047
+FF28 FULLWIDTH LATIN CAPITAL LETTER H
+ # <wide> 0048
+FF29 FULLWIDTH LATIN CAPITAL LETTER I
+ # <wide> 0049
+FF2A FULLWIDTH LATIN CAPITAL LETTER J
+ # <wide> 004A
+FF2B FULLWIDTH LATIN CAPITAL LETTER K
+ # <wide> 004B
+FF2C FULLWIDTH LATIN CAPITAL LETTER L
+ # <wide> 004C
+FF2D FULLWIDTH LATIN CAPITAL LETTER M
+ # <wide> 004D
+FF2E FULLWIDTH LATIN CAPITAL LETTER N
+ # <wide> 004E
+FF2F FULLWIDTH LATIN CAPITAL LETTER O
+ # <wide> 004F
+FF30 FULLWIDTH LATIN CAPITAL LETTER P
+ # <wide> 0050
+FF31 FULLWIDTH LATIN CAPITAL LETTER Q
+ # <wide> 0051
+FF32 FULLWIDTH LATIN CAPITAL LETTER R
+ # <wide> 0052
+FF33 FULLWIDTH LATIN CAPITAL LETTER S
+ # <wide> 0053
+FF34 FULLWIDTH LATIN CAPITAL LETTER T
+ # <wide> 0054
+FF35 FULLWIDTH LATIN CAPITAL LETTER U
+ # <wide> 0055
+FF36 FULLWIDTH LATIN CAPITAL LETTER V
+ # <wide> 0056
+FF37 FULLWIDTH LATIN CAPITAL LETTER W
+ # <wide> 0057
+FF38 FULLWIDTH LATIN CAPITAL LETTER X
+ # <wide> 0058
+FF39 FULLWIDTH LATIN CAPITAL LETTER Y
+ # <wide> 0059
+FF3A FULLWIDTH LATIN CAPITAL LETTER Z
+ # <wide> 005A
+FF3B FULLWIDTH LEFT SQUARE BRACKET
+ # <wide> 005B
+FF3C FULLWIDTH REVERSE SOLIDUS
+ # <wide> 005C
+FF3D FULLWIDTH RIGHT SQUARE BRACKET
+ # <wide> 005D
+FF3E FULLWIDTH CIRCUMFLEX ACCENT
+ # <wide> 005E
+FF3F FULLWIDTH LOW LINE
+ # <wide> 005F
+FF40 FULLWIDTH GRAVE ACCENT
+ # <wide> 0060
+FF41 FULLWIDTH LATIN SMALL LETTER A
+ # <wide> 0061
+FF42 FULLWIDTH LATIN SMALL LETTER B
+ # <wide> 0062
+FF43 FULLWIDTH LATIN SMALL LETTER C
+ # <wide> 0063
+FF44 FULLWIDTH LATIN SMALL LETTER D
+ # <wide> 0064
+FF45 FULLWIDTH LATIN SMALL LETTER E
+ # <wide> 0065
+FF46 FULLWIDTH LATIN SMALL LETTER F
+ # <wide> 0066
+FF47 FULLWIDTH LATIN SMALL LETTER G
+ # <wide> 0067
+FF48 FULLWIDTH LATIN SMALL LETTER H
+ # <wide> 0068
+FF49 FULLWIDTH LATIN SMALL LETTER I
+ # <wide> 0069
+FF4A FULLWIDTH LATIN SMALL LETTER J
+ # <wide> 006A
+FF4B FULLWIDTH LATIN SMALL LETTER K
+ # <wide> 006B
+FF4C FULLWIDTH LATIN SMALL LETTER L
+ # <wide> 006C
+FF4D FULLWIDTH LATIN SMALL LETTER M
+ # <wide> 006D
+FF4E FULLWIDTH LATIN SMALL LETTER N
+ # <wide> 006E
+FF4F FULLWIDTH LATIN SMALL LETTER O
+ # <wide> 006F
+FF50 FULLWIDTH LATIN SMALL LETTER P
+ # <wide> 0070
+FF51 FULLWIDTH LATIN SMALL LETTER Q
+ # <wide> 0071
+FF52 FULLWIDTH LATIN SMALL LETTER R
+ # <wide> 0072
+FF53 FULLWIDTH LATIN SMALL LETTER S
+ # <wide> 0073
+FF54 FULLWIDTH LATIN SMALL LETTER T
+ # <wide> 0074
+FF55 FULLWIDTH LATIN SMALL LETTER U
+ # <wide> 0075
+FF56 FULLWIDTH LATIN SMALL LETTER V
+ # <wide> 0076
+FF57 FULLWIDTH LATIN SMALL LETTER W
+ # <wide> 0077
+FF58 FULLWIDTH LATIN SMALL LETTER X
+ # <wide> 0078
+FF59 FULLWIDTH LATIN SMALL LETTER Y
+ # <wide> 0079
+FF5A FULLWIDTH LATIN SMALL LETTER Z
+ # <wide> 007A
+FF5B FULLWIDTH LEFT CURLY BRACKET
+ # <wide> 007B
+FF5C FULLWIDTH VERTICAL LINE
+ # <wide> 007C
+FF5D FULLWIDTH RIGHT CURLY BRACKET
+ # <wide> 007D
+FF5E FULLWIDTH TILDE
+ # <wide> 007E
+@ Halfwidth CJK punctuation
+@+ See CJK punctuation 3000 - 303F
+FF61 HALFWIDTH IDEOGRAPHIC FULL STOP
+ # <narrow> 3002
+FF62 HALFWIDTH LEFT CORNER BRACKET
+ # <narrow> 300C
+FF63 HALFWIDTH RIGHT CORNER BRACKET
+ # <narrow> 300D
+FF64 HALFWIDTH IDEOGRAPHIC COMMA
+ # <narrow> 3001
+@ Halfwidth Katakana variants
+@+ See Katakana 30A0 - 30FF
+FF65 HALFWIDTH KATAKANA MIDDLE DOT
+ # <narrow> 30FB
+FF66 HALFWIDTH KATAKANA LETTER WO
+ # <narrow> 30F2
+FF67 HALFWIDTH KATAKANA LETTER SMALL A
+ # <narrow> 30A1
+FF68 HALFWIDTH KATAKANA LETTER SMALL I
+ # <narrow> 30A3
+FF69 HALFWIDTH KATAKANA LETTER SMALL U
+ # <narrow> 30A5
+FF6A HALFWIDTH KATAKANA LETTER SMALL E
+ # <narrow> 30A7
+FF6B HALFWIDTH KATAKANA LETTER SMALL O
+ # <narrow> 30A9
+FF6C HALFWIDTH KATAKANA LETTER SMALL YA
+ # <narrow> 30E3
+FF6D HALFWIDTH KATAKANA LETTER SMALL YU
+ # <narrow> 30E5
+FF6E HALFWIDTH KATAKANA LETTER SMALL YO
+ # <narrow> 30E7
+FF6F HALFWIDTH KATAKANA LETTER SMALL TU
+ # <narrow> 30C3
+FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ # <narrow> 30FC
+FF71 HALFWIDTH KATAKANA LETTER A
+ # <narrow> 30A2
+FF72 HALFWIDTH KATAKANA LETTER I
+ # <narrow> 30A4
+FF73 HALFWIDTH KATAKANA LETTER U
+ # <narrow> 30A6
+FF74 HALFWIDTH KATAKANA LETTER E
+ # <narrow> 30A8
+FF75 HALFWIDTH KATAKANA LETTER O
+ # <narrow> 30AA
+FF76 HALFWIDTH KATAKANA LETTER KA
+ # <narrow> 30AB
+FF77 HALFWIDTH KATAKANA LETTER KI
+ # <narrow> 30AD
+FF78 HALFWIDTH KATAKANA LETTER KU
+ # <narrow> 30AF
+FF79 HALFWIDTH KATAKANA LETTER KE
+ # <narrow> 30B1
+FF7A HALFWIDTH KATAKANA LETTER KO
+ # <narrow> 30B3
+FF7B HALFWIDTH KATAKANA LETTER SA
+ # <narrow> 30B5
+FF7C HALFWIDTH KATAKANA LETTER SI
+ # <narrow> 30B7
+FF7D HALFWIDTH KATAKANA LETTER SU
+ # <narrow> 30B9
+FF7E HALFWIDTH KATAKANA LETTER SE
+ # <narrow> 30BB
+FF7F HALFWIDTH KATAKANA LETTER SO
+ # <narrow> 30BD
+FF80 HALFWIDTH KATAKANA LETTER TA
+ # <narrow> 30BF
+FF81 HALFWIDTH KATAKANA LETTER TI
+ # <narrow> 30C1
+FF82 HALFWIDTH KATAKANA LETTER TU
+ # <narrow> 30C4
+FF83 HALFWIDTH KATAKANA LETTER TE
+ # <narrow> 30C6
+FF84 HALFWIDTH KATAKANA LETTER TO
+ # <narrow> 30C8
+FF85 HALFWIDTH KATAKANA LETTER NA
+ # <narrow> 30CA
+FF86 HALFWIDTH KATAKANA LETTER NI
+ # <narrow> 30CB
+FF87 HALFWIDTH KATAKANA LETTER NU
+ # <narrow> 30CC
+FF88 HALFWIDTH KATAKANA LETTER NE
+ # <narrow> 30CD
+FF89 HALFWIDTH KATAKANA LETTER NO
+ # <narrow> 30CE
+FF8A HALFWIDTH KATAKANA LETTER HA
+ # <narrow> 30CF
+FF8B HALFWIDTH KATAKANA LETTER HI
+ # <narrow> 30D2
+FF8C HALFWIDTH KATAKANA LETTER HU
+ # <narrow> 30D5
+FF8D HALFWIDTH KATAKANA LETTER HE
+ # <narrow> 30D8
+FF8E HALFWIDTH KATAKANA LETTER HO
+ # <narrow> 30DB
+FF8F HALFWIDTH KATAKANA LETTER MA
+ # <narrow> 30DE
+FF90 HALFWIDTH KATAKANA LETTER MI
+ # <narrow> 30DF
+FF91 HALFWIDTH KATAKANA LETTER MU
+ # <narrow> 30E0
+FF92 HALFWIDTH KATAKANA LETTER ME
+ # <narrow> 30E1
+FF93 HALFWIDTH KATAKANA LETTER MO
+ # <narrow> 30E2
+FF94 HALFWIDTH KATAKANA LETTER YA
+ # <narrow> 30E4
+FF95 HALFWIDTH KATAKANA LETTER YU
+ # <narrow> 30E6
+FF96 HALFWIDTH KATAKANA LETTER YO
+ # <narrow> 30E8
+FF97 HALFWIDTH KATAKANA LETTER RA
+ # <narrow> 30E9
+FF98 HALFWIDTH KATAKANA LETTER RI
+ # <narrow> 30EA
+FF99 HALFWIDTH KATAKANA LETTER RU
+ # <narrow> 30EB
+FF9A HALFWIDTH KATAKANA LETTER RE
+ # <narrow> 30EC
+FF9B HALFWIDTH KATAKANA LETTER RO
+ # <narrow> 30ED
+FF9C HALFWIDTH KATAKANA LETTER WA
+ # <narrow> 30EF
+FF9D HALFWIDTH KATAKANA LETTER N
+ # <narrow> 30F3
+FF9E HALFWIDTH KATAKANA VOICED SOUND MARK (halfwidth katakana-hiragana voiced sound mark)
+ # <narrow> 3099
+FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK (halfwidth katakana-hiragana semi-voiced sound mark)
+ # <narrow> 309A
+@ Halfwidth Hangul variants
+@+ See Hangul Compatibility Jamo 3130 - 318F
+FFA0 HALFWIDTH HANGUL FILLER
+ # <narrow> 3164
+FFA1 HALFWIDTH HANGUL LETTER KIYEOK
+ # <narrow> 3131
+FFA2 HALFWIDTH HANGUL LETTER SSANGKIYEOK
+ # <narrow> 3132
+FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+ # <narrow> 3133
+FFA4 HALFWIDTH HANGUL LETTER NIEUN
+ # <narrow> 3134
+FFA5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+ # <narrow> 3135
+FFA6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+ # <narrow> 3136
+FFA7 HALFWIDTH HANGUL LETTER TIKEUT
+ # <narrow> 3137
+FFA8 HALFWIDTH HANGUL LETTER SSANGTIKEUT
+ # <narrow> 3138
+FFA9 HALFWIDTH HANGUL LETTER RIEUL
+ # <narrow> 3139
+FFAA HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+ # <narrow> 313A
+FFAB HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+ # <narrow> 313B
+FFAC HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+ # <narrow> 313C
+FFAD HALFWIDTH HANGUL LETTER RIEUL-SIOS
+ # <narrow> 313D
+FFAE HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+ # <narrow> 313E
+FFAF HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+ # <narrow> 313F
+FFB0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+ # <narrow> 3140
+FFB1 HALFWIDTH HANGUL LETTER MIEUM
+ # <narrow> 3141
+FFB2 HALFWIDTH HANGUL LETTER PIEUP
+ # <narrow> 3142
+FFB3 HALFWIDTH HANGUL LETTER SSANGPIEUP
+ # <narrow> 3143
+FFB4 HALFWIDTH HANGUL LETTER PIEUP-SIOS
+ # <narrow> 3144
+FFB5 HALFWIDTH HANGUL LETTER SIOS
+ # <narrow> 3145
+FFB6 HALFWIDTH HANGUL LETTER SSANGSIOS
+ # <narrow> 3146
+FFB7 HALFWIDTH HANGUL LETTER IEUNG
+ # <narrow> 3147
+FFB8 HALFWIDTH HANGUL LETTER CIEUC
+ # <narrow> 3148
+FFB9 HALFWIDTH HANGUL LETTER SSANGCIEUC
+ # <narrow> 3149
+FFBA HALFWIDTH HANGUL LETTER CHIEUCH
+ # <narrow> 314A
+FFBB HALFWIDTH HANGUL LETTER KHIEUKH
+ # <narrow> 314B
+FFBC HALFWIDTH HANGUL LETTER THIEUTH
+ # <narrow> 314C
+FFBD HALFWIDTH HANGUL LETTER PHIEUPH
+ # <narrow> 314D
+FFBE HALFWIDTH HANGUL LETTER HIEUH
+ # <narrow> 314E
+FFC2 HALFWIDTH HANGUL LETTER A
+ # <narrow> 314F
+FFC3 HALFWIDTH HANGUL LETTER AE
+ # <narrow> 3150
+FFC4 HALFWIDTH HANGUL LETTER YA
+ # <narrow> 3151
+FFC5 HALFWIDTH HANGUL LETTER YAE
+ # <narrow> 3152
+FFC6 HALFWIDTH HANGUL LETTER EO
+ # <narrow> 3153
+FFC7 HALFWIDTH HANGUL LETTER E
+ # <narrow> 3154
+FFCA HALFWIDTH HANGUL LETTER YEO
+ # <narrow> 3155
+FFCB HALFWIDTH HANGUL LETTER YE
+ # <narrow> 3156
+FFCC HALFWIDTH HANGUL LETTER O
+ # <narrow> 3157
+FFCD HALFWIDTH HANGUL LETTER WA
+ # <narrow> 3158
+FFCE HALFWIDTH HANGUL LETTER WAE
+ # <narrow> 3159
+FFCF HALFWIDTH HANGUL LETTER OE
+ # <narrow> 315A
+FFD2 HALFWIDTH HANGUL LETTER YO
+ # <narrow> 315B
+FFD3 HALFWIDTH HANGUL LETTER U
+ # <narrow> 315C
+FFD4 HALFWIDTH HANGUL LETTER WEO
+ # <narrow> 315D
+FFD5 HALFWIDTH HANGUL LETTER WE
+ # <narrow> 315E
+FFD6 HALFWIDTH HANGUL LETTER WI
+ # <narrow> 315F
+FFD7 HALFWIDTH HANGUL LETTER YU
+ # <narrow> 3160
+FFDA HALFWIDTH HANGUL LETTER EU
+ # <narrow> 3161
+FFDB HALFWIDTH HANGUL LETTER YI
+ # <narrow> 3162
+FFDC HALFWIDTH HANGUL LETTER I
+ # <narrow> 3163
+@ Fullwidth symbol variants
+@+ See Latin-1 00A0 - 00FF
+FFE0 FULLWIDTH CENT SIGN
+ # <wide> 00A2
+FFE1 FULLWIDTH POUND SIGN
+ # <wide> 00A3
+FFE2 FULLWIDTH NOT SIGN
+ # <wide> 00AC
+FFE3 FULLWIDTH MACRON *
+ * sometimes treated as fullwidth overline
+ x (overline - 203E)
+ # <wide> 00AF
+FFE4 FULLWIDTH BROKEN BAR
+ # <wide> 00A6
+FFE5 FULLWIDTH YEN SIGN
+ # <wide> 00A5
+FFE6 FULLWIDTH WON SIGN
+ # <wide> 20A9
+@ Halfwidth symbol variants
+FFE8 HALFWIDTH FORMS LIGHT VERTICAL
+ # <narrow> 2502
+FFE9 HALFWIDTH LEFTWARDS ARROW
+ # <narrow> 2190
+FFEA HALFWIDTH UPWARDS ARROW
+ # <narrow> 2191
+FFEB HALFWIDTH RIGHTWARDS ARROW
+ # <narrow> 2192
+FFEC HALFWIDTH DOWNWARDS ARROW
+ # <narrow> 2193
+FFED HALFWIDTH BLACK SQUARE
+ # <narrow> 25A0
+FFEE HALFWIDTH WHITE CIRCLE
+ # <narrow> 25CB
+@@ FFF0 Specials FFFF
+@ Interlinear annotation
+@+ Used internally for Japanese Ruby (furigana), etc.
+FFF9 INTERLINEAR ANNOTATION ANCHOR
+ * marks start of annotated text
+FFFA INTERLINEAR ANNOTATION SEPARATOR
+ * marks start of annotating character(s)
+FFFB INTERLINEAR ANNOTATION TERMINATOR
+ * marks end of annotation block
+@ Replacement characters
+FFFC OBJECT REPLACEMENT CHARACTER
+ * used as placeholder in text for an otherwise unspecified object
+FFFD REPLACEMENT CHARACTER
+ * used to replace an incoming character whose value is unknown or unrepresentable in Unicode
+ * compare the use of 001A as a control character to indicate the substitute function
+@ Not character codes
+FFFE <not a character>
+ * the value FFFE is guaranteed not to be a Unicode character at all
+ * may be used to detect byte order by contrast with FEFF which is a character
+ x (zero width no-break space - FEFF)
+FFFF <not a character>
+ * the value FFFF is guaranteed not to be a Unicode character at all
diff --git a/contrib/perl5/lib/unicode/NamesList.html b/contrib/perl5/lib/unicode/NamesList.html
new file mode 100644
index 0000000..0bfc5db
--- /dev/null
+++ b/contrib/perl5/lib/unicode/NamesList.html
@@ -0,0 +1,226 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
+<title>Unicode 3.0 NamesList File Structure</title>
+</head>
+
+<body>
+
+<h3>Unicode NamesList File Format</h3>
+
+<p>Last updated: 1999-07-06</p>
+
+<h3>1.0 Introduction</h3>
+
+<p>The Unicode name list file NamesList.txt (also NamesList.lst) is a plain text file used
+to drive the layout of the character code charts in the Unicode Standard. The information
+in this file is a combination of several fields from the UnicodeData.txt and Blocks.txt files,
+together with additional annotations for many characters. This document describes the
+syntax rules for the file format, but also gives brief information on how each construct
+is rendered when laid out for the book. Some of the syntax elements were used in
+preparation of the drafts of the book and may not be present in the final, released form
+of the NamesList.txt file.</p>
+
+<p>The same input file can be used to do the draft preparation for ISO/IEC 10646 (referred
+below as ISO-style). This necessitates the presence of some information in the name list
+file that is not needed (and in fact removed during parsing) for the Unicode book.</p>
+
+<p>With access to the layout program (unibook.exe) it is a simple matter of creating
+name lists for the purpose of formatting working drafts containing proposed characters.</p>
+
+<h3>1.1 NamesList File Overview</h3>
+
+<p>The *.lst files are plain text files which in their most simple form look like this</p>
+
+<p>@@&lt;tab&gt;0020&lt;tab&gt;BASIC LATIN&lt;tab&gt;007F<br>
+; this is a file comment (ignored)<br>
+0020&lt;tab&gt;SPACE<br>
+0021&lt;tab&gt;EXCLAMATION MARK<br>
+0022&lt;tab&gt;QUOTATION MARK<br>
+. . . <br>
+007F&lt;tab&gt;DELETE</p>
+
+<p>The semicolon (as first character), @ and &lt;tab&gt; characters are used by the file
+syntax and must be provided as shown. Hexadecimal digits must be in UPPER CASE). A double
+@@ introduces a block header, with the title, and start and ending code of the block
+provided as shown.</p>
+
+<p>For an ISO-style, minimal name list, only the NAME_LINE and BLOCKHEADER and their
+constituent syntax elements are needed.</p>
+
+<p>The full syntax with all the options is provided in the following sections.</p>
+
+<h3>1.2 NamesList File Structure</h3>
+
+<p>This section gives defines the overall file structure</p>
+
+<pre><strong>NAMELIST: TITLE_PAGE* BLOCK*
+</strong>
+<strong>TITLE_PAGE: TITLE
+ | TITLE_PAGE SUBTITLE
+ | TITLE_PAGE SUBHEADER
+ | TITLE_PAGE IGNORED_LINE
+ | TITLE_PAGE EMPTY_LINE
+ | TITLE_PAGE COMMENTLINE
+ | TITLE_PAGE NOTICE
+ | TITLE_PAGE PAGEBREAK
+</strong>
+<strong>BLOCK: BLOCKHEADER
+ | BLOCK CHAR_ENTRY
+ | BLOCK SUBHEADER
+ | BLOCK NOTICE
+ | BLOCK EMPTY_LINE
+ | BLOCK IGNORED_LINE
+ | BLOCK PAGEBREAK
+
+CHAR_ENTRY: NAME_LINE | RESERVED_LINE
+ | CHAR_ENTRY ALIAS_LINE
+ | CHAR_ENTRY COMMENT_LINE
+ | CHAR_ENTRY CROSS_REF
+ | CHAR_ENTRY DECOMPOSITION
+ | CHAR_ENTRY COMPAT_MAPPING
+ | CHAR_ENTRY IGNORED_LINE
+ | CHAR_ENTRY EMPTY_LINE
+ | CHAR_ENTRY NOTICE
+</strong></pre>
+
+<p>In other words:<br>
+<br>
+Neither TITLE nor&nbsp; SUBTITLE may occur after the first BLOCKHEADER. </p>
+
+<p>Only TITLE, SUBTITLE, SUBHEADER, PAGEBREAK, COMMENT_LINE,&nbsp; and IGNORED_LINE may
+occur before the first BLOCKHEADER.</p>
+
+<p>Directly following either a NAME_LINE or a RESERVED_LINE an uninterrupted sequence of
+the following lines may occur (in any order and repeated as often as needed): ALIAS_LINE,
+CROSS_REF, DECOMPOSITION, COMPAT_MAPPING, NOTICE, EMPTY_LINE and IGNORED_LINE.</p>
+
+<p>Except for EMPTY_LINE, NOTICE and IGNORED_LINE, none of these lines may occur in any other
+place. </p>
+
+<p>Note: A NOTICE displays differently depending on whether it follows a header or title
+or is part of a CHAR_ENTRY.</p>
+
+<h3>1.3 NamesList File Elements</h3>
+
+<p>This section provides the details of the syntax for the individual elements.</p>
+
+<pre><small><strong>ELEMENT SYNTAX</strong> // How rendered</small></pre>
+
+<pre><small><strong>NAME_LINE: CHAR &lt;tab&gt; LINE
+</strong> // the CHAR and the corresponding image are echoed,
+ // followed by the name as given in LINE
+
+<strong> CHAR TAB NAME COMMENT LF
+</strong> // Names may have a comment, which is stripped off
+ // unless the file is parsed for an ISO style list
+
+<strong>RESERVED_LINE: CHAR TAB &lt;reserved&gt;
+</strong> // the CHAR is echoed followed by an icon for the
+ // reserved character and a fixed string e.g. &lt;reserved&gt;
+
+<strong>COMMMENT_LINE: &lt;tab&gt; &quot;*&quot; SP EXPAND_LINE
+</strong> // * is replaced by BULLET, output line as comment
+ <strong>&lt;tab&gt; EXPAND_LINE</strong>
+ // output line as comment
+
+<strong>ALIAS_LINE: &lt;tab&gt; &quot;=&quot; SP LINE
+</strong> // replace = by itself, output line as alias
+
+<strong>CROSS_REF: &lt;tab&gt; &quot;X&quot; SP EXPAND_LINE
+</strong> // X is replaced by a right arrow
+<strong> &lt;tab&gt; &quot;X&quot; SP &quot;(&quot; STRING SP &quot;-&quot; SP CHAR &quot;)&quot;
+</strong> // X is replaced by a right arrow
+ // the &quot;(&quot;, &quot;-&quot;, &quot;)&quot; are removed, the
+ // order of CHAR and STRING is reversed
+ // i.e. both inputs result in the same output
+
+<strong>IGNORED_LINE: &lt;tab&gt; &quot;;&quot; EXPAND_LINE
+EMPTY_LINE: LF
+</strong> // empty lines and file comments are ignored
+
+<strong>DECOMPOSITION: &lt;tab&gt; &quot;:&quot; EXPAND_LINE
+</strong> // replace ':' by EQUIV, expand line into
+ // decomposition
+
+<strong>COMPAT_MAPPING: &lt;tab&gt; &quot;#&quot; SP EXPAND_LINE
+</strong> // replace '#' by APPROX, output line as mapping
+
+<strong>NOTICE: &quot;@+&quot; &lt;tab&gt; LINE
+</strong> // skip '@+', output text as notice
+<strong> &quot;@+&quot; TAB * SP LINE
+</strong> // skip '@', output text as notice
+ // &quot;*&quot; expands to a bullet character
+ // Notices following a character code apply to the
+ // character and are indented. Notices not following
+ // a character code apply to the page/block/column
+ // and are italicized, but not indented
+
+<strong>SUBTITLE: &quot;@@@+&quot; &lt;tab&gt; LINE
+</strong> // skip &quot;@@@+&quot;, output text as subtitle
+
+<strong>SUBHEADER: &quot;@&quot; &lt;tab&gt; LINE
+</strong> // skip '@', output line as text as column header
+
+<strong>BLOCKHEADER: &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME &lt;tab&gt; BLOCKEND
+</strong> // skip &quot;@@&quot;, cause a page break and optional
+ // blank page, then output one or more charts
+ // followed by the list of character names.
+ // use BLOCKSTART and BLOCKEND to define the
+ // what characters belong to a block
+ // use blockname in page and table headers
+ <strong> &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME COMMENT &lt;tab&gt; BLOCKEND
+ </strong>// if a comment is present it replaces the blockname
+ // when an ISO-style namelist is laid out
+
+<strong>BLOCKSTART: CHAR</strong> // first character position in block
+<strong>BLOCKEND: CHAR</strong> // last character position in block
+<strong>PAGE_BREAK: &quot;@@&quot;</strong> // insert a (column) break
+
+<strong>TITLE: &quot;@@@&quot; &lt;tab&gt; LINE</strong>
+ // skip &quot;@@@&quot;, output line as text
+ // Title is used in page headers
+
+<strong>EXPAND_LINE: {CHAR | STRING}+ LF </strong>
+ // all instances of CHAR *) are replaced by
+ // CHAR NBSP x NBSP where x is the single Unicode
+ // character corresponding to char
+ // If character is combining, it is replaced with
+ // CHAR NBSP &lt;circ&gt; x NBSP where &lt;circ&gt; is the
+ // dotted circle</small>
+</pre>
+
+<h3><strong>1.4 NamesList File Primitives</strong></h3>
+
+<p>The following are the primitives and terminals for the NamesList syntax.</p>
+
+<pre><small><strong>LINE: STRING LF
+COMMENT: &quot;(&quot; NAME &quot;)&quot;
+ &quot;(&quot; NAME &quot;)&quot; &quot;*&quot;
+</strong>
+<strong>NAME</strong>: &lt;sequence of ASCII characters, except &quot;(&quot; or &quot;)&quot; &gt;
+<strong>STRING</strong>: &lt;sequence of Latin-1 characters&gt;
+<strong>CHAR</strong>: <strong>X X X X</strong>
+ <strong>| X X X X X X X X X</strong></small>
+<small><strong>X: &quot;0&quot;|&quot;1&quot;|&quot;2&quot;|&quot;3&quot;|&quot;4&quot;|&quot;5&quot;|&quot;6&quot;|&quot;7&quot;|&quot;8&quot;|&quot;9&quot;|&quot;A&quot;|&quot;B&quot;|&quot;C&quot;|&quot;D&quot;|&quot;E&quot;|&quot;F&quot;
+&lt;tab&gt;:</strong> &lt;sequence of one or more ASCII tab characters 0x09&gt;
+<strong>SP</strong>: &lt;ASCII 0x20&gt;
+<strong>LF</strong>: &lt;any sequence of ASCII 0x0A and 0x0D&gt;
+</small></pre>
+
+<p><strong>Notes:</strong>
+
+<ul>
+ <li>Special lookahead logic prevents a mention of a 4 digit standard, such as ISO 9999 from
+ being misinterpreted as ISO CHAR.</li>
+ <li>Use of Latin-1 is supported in unibook.exe, but not portably, unless the file is encoded as
+ UTF-16LE.</li>
+ <li>The final LF in the file must be present</li>
+ <li>A CHAR inside ' or &quot; is expanded, but only its glyph image is printed,&nbsp; the
+ code value is not echoed</li>
+ <li>Straight quotes in an EXPAND_LINE are replaced by curly quotes using English rules.
+ Apostrophes are supported, but nested quotes are not.</li>
+</ul>
+</body>
+</html>
diff --git a/contrib/perl5/lib/unicode/Number.pl b/contrib/perl5/lib/unicode/Number.pl
new file mode 100644
index 0000000..b0e054a
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Number.pl
@@ -0,0 +1,386 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0031 1
+0032 2
+0033 3
+0034 4
+0035 5
+0036 6
+0037 7
+0038 8
+0039 9
+00b2 2
+00b3 3
+00b9 1
+00bc 1/4
+00bd 1/2
+00be 3/4
+0661 1
+0662 2
+0663 3
+0664 4
+0665 5
+0666 6
+0667 7
+0668 8
+0669 9
+06f1 1
+06f2 2
+06f3 3
+06f4 4
+06f5 5
+06f6 6
+06f7 7
+06f8 8
+06f9 9
+0967 1
+0968 2
+0969 3
+096a 4
+096b 5
+096c 6
+096d 7
+096e 8
+096f 9
+09e7 1
+09e8 2
+09e9 3
+09ea 4
+09eb 5
+09ec 6
+09ed 7
+09ee 8
+09ef 9
+09f4 1
+09f5 2
+09f6 3
+09f7 4
+09f9 16
+0a67 1
+0a68 2
+0a69 3
+0a6a 4
+0a6b 5
+0a6c 6
+0a6d 7
+0a6e 8
+0a6f 9
+0ae7 1
+0ae8 2
+0ae9 3
+0aea 4
+0aeb 5
+0aec 6
+0aed 7
+0aee 8
+0aef 9
+0b67 1
+0b68 2
+0b69 3
+0b6a 4
+0b6b 5
+0b6c 6
+0b6d 7
+0b6e 8
+0b6f 9
+0be7 1
+0be8 2
+0be9 3
+0bea 4
+0beb 5
+0bec 6
+0bed 7
+0bee 8
+0bef 9
+0bf0 10
+0bf1 100
+0bf2 1000
+0c67 1
+0c68 2
+0c69 3
+0c6a 4
+0c6b 5
+0c6c 6
+0c6d 7
+0c6e 8
+0c6f 9
+0ce7 1
+0ce8 2
+0ce9 3
+0cea 4
+0ceb 5
+0cec 6
+0ced 7
+0cee 8
+0cef 9
+0d67 1
+0d68 2
+0d69 3
+0d6a 4
+0d6b 5
+0d6c 6
+0d6d 7
+0d6e 8
+0d6f 9
+0e51 1
+0e52 2
+0e53 3
+0e54 4
+0e55 5
+0e56 6
+0e57 7
+0e58 8
+0e59 9
+0ed1 1
+0ed2 2
+0ed3 3
+0ed4 4
+0ed5 5
+0ed6 6
+0ed7 7
+0ed8 8
+0ed9 9
+0f21 1
+0f22 2
+0f23 3
+0f24 4
+0f25 5
+0f26 6
+0f27 7
+0f28 8
+0f29 9
+1041 1
+1042 2
+1043 3
+1044 4
+1045 5
+1046 6
+1047 7
+1048 8
+1049 9
+1369 1
+136a 2
+136b 3
+136c 4
+136d 5
+136e 6
+136f 7
+1370 8
+1371 9
+1372 10
+1373 20
+1374 30
+1375 40
+1376 50
+1377 60
+1378 70
+1379 80
+137a 90
+137b 100
+137c 10000
+16ee 17
+16ef 18
+16f0 19
+17e1 1
+17e2 2
+17e3 3
+17e4 4
+17e5 5
+17e6 6
+17e7 7
+17e8 8
+17e9 9
+1811 1
+1812 2
+1813 3
+1814 4
+1815 5
+1816 6
+1817 7
+1818 8
+1819 9
+2074 4
+2075 5
+2076 6
+2077 7
+2078 8
+2079 9
+2081 1
+2082 2
+2083 3
+2084 4
+2085 5
+2086 6
+2087 7
+2088 8
+2089 9
+2153 1/3
+2154 2/3
+2155 1/5
+2156 2/5
+2157 3/5
+2158 4/5
+2159 1/6
+215a 5/6
+215b 1/8
+215c 3/8
+215d 5/8
+215e 7/8
+215f 2160 1
+2161 2
+2162 3
+2163 4
+2164 5
+2165 6
+2166 7
+2167 8
+2168 9
+2169 10
+216a 11
+216b 12
+216c 50
+216d 100
+216e 500
+216f 1000
+2170 1
+2171 2
+2172 3
+2173 4
+2174 5
+2175 6
+2176 7
+2177 8
+2178 9
+2179 10
+217a 11
+217b 12
+217c 50
+217d 100
+217e 500
+217f 2180 1000
+2181 5000
+2182 10000
+2460 1
+2461 2
+2462 3
+2463 4
+2464 5
+2465 6
+2466 7
+2467 8
+2468 9
+2469 10
+246a 11
+246b 12
+246c 13
+246d 14
+246e 15
+246f 16
+2470 17
+2471 18
+2472 19
+2473 20
+2474 1
+2475 2
+2476 3
+2477 4
+2478 5
+2479 6
+247a 7
+247b 8
+247c 9
+247d 10
+247e 11
+247f 12
+2480 13
+2481 14
+2482 15
+2483 16
+2484 17
+2485 18
+2486 19
+2487 20
+2488 1
+2489 2
+248a 3
+248b 4
+248c 5
+248d 6
+248e 7
+248f 8
+2490 9
+2491 10
+2492 11
+2493 12
+2494 13
+2495 14
+2496 15
+2497 16
+2498 17
+2499 18
+249a 19
+249b 20
+2776 1
+2777 2
+2778 3
+2779 4
+277a 5
+277b 6
+277c 7
+277d 8
+277e 9
+277f 10
+2780 1
+2781 2
+2782 3
+2783 4
+2784 5
+2785 6
+2786 7
+2787 8
+2788 9
+2789 10
+278a 1
+278b 2
+278c 3
+278d 4
+278e 5
+278f 6
+2790 7
+2791 8
+2792 9
+2793 10
+3021 1
+3022 2
+3023 3
+3024 4
+3025 5
+3026 6
+3027 7
+3028 8
+3029 9
+3038 10
+3039 20
+303a 30
+3280 1
+3281 2
+3282 3
+3283 4
+3284 5
+3285 6
+3286 7
+3287 8
+3288 9
+3289 10
+ff11 1
+ff12 2
+ff13 3
+ff14 4
+ff15 5
+ff16 6
+ff17 7
+ff18 8
+ff19 9
+END
diff --git a/contrib/perl5/lib/unicode/Props.txt b/contrib/perl5/lib/unicode/Props.txt
new file mode 100644
index 0000000..b3548e1
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Props.txt
@@ -0,0 +1,3640 @@
+Property dump: UnicodeData-3.0.0.txt
+
+*******************************************
+
+Property dump for: 0x10000001 (Zero-width)
+
+070F
+180B..180E (4 chars)
+200B..200F (5 chars)
+202A..202E (5 chars)
+206A..206F (6 chars)
+FEFF
+FFF9..FFFB (3 chars)
+
+*******************************************
+
+Property dump for: 0x10000002 (Space)
+
+0020
+00A0
+1680
+2000..200B (12 chars)
+202F
+3000
+
+*******************************************
+
+Property dump for: 0x10000004 (White space)
+
+0009..000D (5 chars)
+0020
+0085
+00A0
+1680
+2000..200B (12 chars)
+2028..2029 (2 chars)
+202F
+3000
+
+*******************************************
+
+Property dump for: 0x00400000 (Non-break)
+
+00A0
+0F0C
+2007
+2011
+202F
+FEFF
+
+*******************************************
+
+Property dump for: 0x10000008 (ISO Control)
+
+0000..001F (32 chars)
+007F..009F (33 chars)
+
+*******************************************
+
+Property dump for: 0x10000090 (Bidi Control)
+
+200E..200F (2 chars)
+202A..202E (5 chars)
+
+*******************************************
+
+Property dump for: 0x100000A0 (Join Control)
+
+200C..200D (2 chars)
+
+*******************************************
+
+Property dump for: 0x100000C0 (Format Control)
+
+070F
+180B..180E (4 chars)
+206A..206F (6 chars)
+FFF9..FFFB (3 chars)
+
+*******************************************
+
+Property dump for: 0x20000400 (Dash)
+
+002D
+00AD
+058A
+1806
+2010..2015 (6 chars)
+207B
+208B
+2212
+301C
+3030
+FE31..FE32 (2 chars)
+FE58
+FE63
+FF0D
+
+*******************************************
+
+Property dump for: 0x20000800 (Hyphen)
+
+002D
+00AD
+058A
+1806
+2010..2011 (2 chars)
+30FB
+FE63
+FF0D
+FF65
+
+*******************************************
+
+Property dump for: 0x20001000 (Punctuation)
+
+0021..0023 (3 chars)
+0025..002A (6 chars)
+002C..002F (4 chars)
+003A..003B (2 chars)
+003F..0040 (2 chars)
+005B..005D (3 chars)
+005F
+007B
+007D
+00A1
+00AB
+00AD
+00B7
+00BB
+00BF
+037E
+0387
+055A..055F (6 chars)
+0589..058A (2 chars)
+05BE
+05C0
+05C3
+05F3..05F4 (2 chars)
+060C
+061B
+061F
+066A..066D (4 chars)
+06D4
+0700..070D (14 chars)
+0964..0965 (2 chars)
+0970
+0DF4
+0E4F
+0E5A..0E5B (2 chars)
+0F04..0F12 (15 chars)
+0F3A..0F3D (4 chars)
+0F85
+104A..104F (6 chars)
+10FB
+1361..1368 (8 chars)
+166D..166E (2 chars)
+169B..169C (2 chars)
+16EB..16ED (3 chars)
+17D4..17DA (7 chars)
+17DC
+1800..180A (11 chars)
+2010..2027 (24 chars)
+2030..2043 (20 chars)
+2045..2046 (2 chars)
+2048..204D (6 chars)
+207D..207E (2 chars)
+208D..208E (2 chars)
+2329..232A (2 chars)
+3001..3003 (3 chars)
+3008..3011 (10 chars)
+3014..301F (12 chars)
+3030
+30FB
+FD3E..FD3F (2 chars)
+FE30..FE44 (21 chars)
+FE49..FE52 (10 chars)
+FE54..FE61 (14 chars)
+FE63
+FE68
+FE6A..FE6B (2 chars)
+FF01..FF03 (3 chars)
+FF05..FF0A (6 chars)
+FF0C..FF0F (4 chars)
+FF1A..FF1B (2 chars)
+FF1F..FF20 (2 chars)
+FF3B..FF3D (3 chars)
+FF3F
+FF5B
+FF5D
+FF61..FF65 (5 chars)
+
+*******************************************
+
+Property dump for: 0x00800000 (Delimiter)
+
+0000
+0009..000D (5 chars)
+001C..0023 (8 chars)
+0028..0029 (2 chars)
+002C
+002E..002F (2 chars)
+003A..003B (2 chars)
+003F
+005B..005D (3 chars)
+007B..007D (3 chars)
+0085
+00A0..00A1 (2 chars)
+00A6..00A7 (2 chars)
+00AB
+00B6
+00BB
+00BF
+037E
+0387
+055C..055E (3 chars)
+0589
+060C
+061B
+061F
+066B..066C (2 chars)
+06D4
+0700..0709 (10 chars)
+070B..070D (3 chars)
+0964..0965 (2 chars)
+0DF4
+0E5A..0E5B (2 chars)
+0F0B
+0F0D..0F12 (6 chars)
+0F3A..0F3D (4 chars)
+104A..104B (2 chars)
+10FB
+1361..1368 (8 chars)
+166D..166E (2 chars)
+1680
+169B..169C (2 chars)
+16EB..16ED (3 chars)
+17D4..17D6 (3 chars)
+17DA
+1802..1805 (4 chars)
+1808..1809 (2 chars)
+2000..200B (12 chars)
+2016
+2018..201F (8 chars)
+2028..2029 (2 chars)
+202F
+2039..203A (2 chars)
+203C..203D (2 chars)
+2045..2046 (2 chars)
+2048..2049 (2 chars)
+207D..207E (2 chars)
+208D..208E (2 chars)
+2329..232A (2 chars)
+3000..3002 (3 chars)
+3008..3011 (10 chars)
+3014..301B (8 chars)
+301D..301F (3 chars)
+30FB
+FD3E..FD3F (2 chars)
+FE35..FE44 (16 chars)
+FE50..FE52 (3 chars)
+FE54..FE57 (4 chars)
+FE59..FE5F (7 chars)
+FE68
+FF01..FF03 (3 chars)
+FF08..FF09 (2 chars)
+FF0C
+FF0E..FF0F (2 chars)
+FF1A..FF1B (2 chars)
+FF1F
+FF3B..FF3D (3 chars)
+FF5B..FF5D (3 chars)
+FF61..FF65 (5 chars)
+FFE4
+
+*******************************************
+
+Property dump for: 0x80000003 (Line Separator)
+
+2028
+
+*******************************************
+
+Property dump for: 0x80000004 (Paragraph Separator)
+
+2029
+
+*******************************************
+
+Property dump for: 0x20002000 (Quotation Mark)
+
+0022
+0027
+00AB
+00BB
+2018..201F (8 chars)
+2039..203A (2 chars)
+300C..300F (4 chars)
+301D..301F (3 chars)
+FE41..FE44 (4 chars)
+FF02
+FF07
+FF62..FF63 (2 chars)
+
+*******************************************
+
+Property dump for: 0x20004000 (Terminal Punctuation)
+
+0021
+002C
+002E
+003A..003B (2 chars)
+003F
+037E
+0387
+0589
+060C
+061B
+061F
+06D4
+0700..070A (11 chars)
+070C
+0964..0965 (2 chars)
+0E5A..0E5B (2 chars)
+104A..104B (2 chars)
+1361..1368 (8 chars)
+166D..166E (2 chars)
+16EB..16ED (3 chars)
+17D4..17D6 (3 chars)
+17DA
+1802..1805 (4 chars)
+1808..1809 (2 chars)
+203C..203D (2 chars)
+2048..2049 (2 chars)
+3001..3002 (2 chars)
+FE50..FE52 (3 chars)
+FE54..FE57 (4 chars)
+FF01
+FF0C
+FF0E
+FF1A..FF1B (2 chars)
+FF1F
+FF61
+FF64
+
+*******************************************
+
+Property dump for: 0x20008000 (Currency Symbol)
+
+0024
+00A2..00A5 (4 chars)
+09F2..09F3 (2 chars)
+0E3F
+17DB
+20A0..20AF (16 chars)
+FE69
+FF04
+FFE0..FFE1 (2 chars)
+FFE5..FFE6 (2 chars)
+
+*******************************************
+
+Property dump for: 0x20080000 (Math)
+
+0028..002B (4 chars)
+002D
+002F
+003C..003E (3 chars)
+005B..005E (4 chars)
+007B..007E (4 chars)
+00AC
+00B1
+00D7
+00F7
+2016
+2032..2034 (3 chars)
+2044
+207A..207E (5 chars)
+208A..208E (5 chars)
+20D0..20DC (13 chars)
+20E1
+2190..2194 (5 chars)
+219A..219B (2 chars)
+21A0
+21A3
+21A6
+21AE
+21CE..21CF (2 chars)
+21D2
+21D4
+2200..22F1 (242 chars)
+2308..230B (4 chars)
+2320..2321 (2 chars)
+2329..232A (2 chars)
+25B7
+25C1
+266F
+300A..300B (2 chars)
+301A..301B (2 chars)
+FB29
+FE35..FE38 (4 chars)
+FE59..FE5C (4 chars)
+FE61..FE66 (6 chars)
+FE68
+FF08..FF0B (4 chars)
+FF0D
+FF0F
+FF1C..FF1E (3 chars)
+FF3B..FF3E (4 chars)
+FF5B..FF5E (4 chars)
+FFE2
+FFE9..FFEC (4 chars)
+
+*******************************************
+
+Property dump for: 0x20000100 (Paired Punctuation)
+
+0028..0029 (2 chars)
+005B
+005D
+007B
+007D
+00AB
+00BB
+0F3A..0F3D (4 chars)
+169B..169C (2 chars)
+2018..201F (8 chars)
+2039..203A (2 chars)
+2045..2046 (2 chars)
+207D..207E (2 chars)
+208D..208E (2 chars)
+2329..232A (2 chars)
+3008..3011 (10 chars)
+3014..301B (8 chars)
+301D..301F (3 chars)
+FD3E..FD3F (2 chars)
+FE35..FE44 (16 chars)
+FE59..FE5E (6 chars)
+FF08..FF09 (2 chars)
+FF3B
+FF3D
+FF5B
+FF5D
+FF62..FF63 (2 chars)
+
+*******************************************
+
+Property dump for: 0x20000300 (Left of Pair)
+
+0028
+005B
+007B
+00AB
+0F3A
+0F3C
+169B
+2018
+201A..201C (3 chars)
+201E..201F (2 chars)
+2039
+2045
+207D
+208D
+2329
+3008
+300A
+300C
+300E
+3010
+3014
+3016
+3018
+301A
+301D
+FD3E
+FE35
+FE37
+FE39
+FE3B
+FE3D
+FE3F
+FE41
+FE43
+FE59
+FE5B
+FE5D
+FF08
+FF3B
+FF5B
+FF62
+
+*******************************************
+
+Property dump for: 0x20000004 (Combining)
+
+0300..034E (79 chars)
+0360..0362 (3 chars)
+0483..0486 (4 chars)
+0488..0489 (2 chars)
+0591..05A1 (17 chars)
+05A3..05B9 (23 chars)
+05BB..05BD (3 chars)
+05BF
+05C1..05C2 (2 chars)
+05C4
+064B..0655 (11 chars)
+0670
+06D6..06E4 (15 chars)
+06E7..06E8 (2 chars)
+06EA..06ED (4 chars)
+0711
+0730..074A (27 chars)
+07A6..07B0 (11 chars)
+0901..0903 (3 chars)
+093C
+093E..094D (16 chars)
+0951..0954 (4 chars)
+0962..0963 (2 chars)
+0981..0983 (3 chars)
+09BC
+09BE..09C4 (7 chars)
+09C7..09C8 (2 chars)
+09CB..09CD (3 chars)
+09D7
+09E2..09E3 (2 chars)
+0A02
+0A3C
+0A3E..0A42 (5 chars)
+0A47..0A48 (2 chars)
+0A4B..0A4D (3 chars)
+0A70..0A71 (2 chars)
+0A81..0A83 (3 chars)
+0ABC
+0ABE..0AC5 (8 chars)
+0AC7..0AC9 (3 chars)
+0ACB..0ACD (3 chars)
+0B01..0B03 (3 chars)
+0B3C
+0B3E..0B43 (6 chars)
+0B47..0B48 (2 chars)
+0B4B..0B4D (3 chars)
+0B56..0B57 (2 chars)
+0B82..0B83 (2 chars)
+0BBE..0BC2 (5 chars)
+0BC6..0BC8 (3 chars)
+0BCA..0BCD (4 chars)
+0BD7
+0C01..0C03 (3 chars)
+0C3E..0C44 (7 chars)
+0C46..0C48 (3 chars)
+0C4A..0C4D (4 chars)
+0C55..0C56 (2 chars)
+0C82..0C83 (2 chars)
+0CBE..0CC4 (7 chars)
+0CC6..0CC8 (3 chars)
+0CCA..0CCD (4 chars)
+0CD5..0CD6 (2 chars)
+0D02..0D03 (2 chars)
+0D3E..0D43 (6 chars)
+0D46..0D48 (3 chars)
+0D4A..0D4D (4 chars)
+0D57
+0D82..0D83 (2 chars)
+0DCA
+0DCF..0DD4 (6 chars)
+0DD6
+0DD8..0DDF (8 chars)
+0DF2..0DF3 (2 chars)
+0E31
+0E34..0E3A (7 chars)
+0E47..0E4E (8 chars)
+0EB1
+0EB4..0EB9 (6 chars)
+0EBB..0EBC (2 chars)
+0EC8..0ECD (6 chars)
+0F18..0F19 (2 chars)
+0F35
+0F37
+0F39
+0F3E..0F3F (2 chars)
+0F71..0F84 (20 chars)
+0F86..0F87 (2 chars)
+0F90..0F97 (8 chars)
+0F99..0FBC (36 chars)
+0FC6
+102C..1032 (7 chars)
+1036..1039 (4 chars)
+1056..1059 (4 chars)
+17B4..17D3 (32 chars)
+18A9
+20D0..20E3 (20 chars)
+302A..302F (6 chars)
+3099..309A (2 chars)
+F8F0..F8FF (16 chars)
+FB1E
+FE20..FE23 (4 chars)
+
+*******************************************
+
+Property dump for: 0x20040000 (Non-spacing)
+
+0300..034E (79 chars)
+0360..0362 (3 chars)
+0483..0486 (4 chars)
+0488..0489 (2 chars)
+0591..05A1 (17 chars)
+05A3..05B9 (23 chars)
+05BB..05BD (3 chars)
+05BF
+05C1..05C2 (2 chars)
+05C4
+064B..0655 (11 chars)
+0670
+06D6..06E4 (15 chars)
+06E7..06E8 (2 chars)
+06EA..06ED (4 chars)
+0711
+0730..074A (27 chars)
+07A6..07B0 (11 chars)
+0901..0902 (2 chars)
+093C
+0941..0948 (8 chars)
+094D
+0951..0954 (4 chars)
+0962..0963 (2 chars)
+0981
+09BC
+09C1..09C4 (4 chars)
+09CD
+09E2..09E3 (2 chars)
+0A02
+0A3C
+0A41..0A42 (2 chars)
+0A47..0A48 (2 chars)
+0A4B..0A4D (3 chars)
+0A70..0A71 (2 chars)
+0A81..0A82 (2 chars)
+0ABC
+0AC1..0AC5 (5 chars)
+0AC7..0AC8 (2 chars)
+0ACD
+0B01
+0B3C
+0B3F
+0B41..0B43 (3 chars)
+0B4D
+0B56
+0B82
+0BC0
+0BCD
+0C3E..0C40 (3 chars)
+0C46..0C48 (3 chars)
+0C4A..0C4D (4 chars)
+0C55..0C56 (2 chars)
+0CBF
+0CC6
+0CCC..0CCD (2 chars)
+0D41..0D43 (3 chars)
+0D4D
+0DCA
+0DD2..0DD4 (3 chars)
+0DD6
+0E31
+0E34..0E3A (7 chars)
+0E47..0E4E (8 chars)
+0EB1
+0EB4..0EB9 (6 chars)
+0EBB..0EBC (2 chars)
+0EC8..0ECD (6 chars)
+0F18..0F19 (2 chars)
+0F35
+0F37
+0F39
+0F71..0F7E (14 chars)
+0F80..0F84 (5 chars)
+0F86..0F87 (2 chars)
+0F90..0F97 (8 chars)
+0F99..0FBC (36 chars)
+0FC6
+102D..1030 (4 chars)
+1032
+1036..1037 (2 chars)
+1039
+1058..1059 (2 chars)
+17B7..17BD (7 chars)
+17C6
+17C9..17D3 (11 chars)
+18A9
+20D0..20E3 (20 chars)
+302A..302F (6 chars)
+3099..309A (2 chars)
+F8F0..F8FF (16 chars)
+FB1E
+FE20..FE23 (4 chars)
+
+*******************************************
+
+Property dump for: 0x20000008 (Composite)
+
+00C0..00C5 (6 chars)
+00C7..00CF (9 chars)
+00D1..00D6 (6 chars)
+00D9..00DD (5 chars)
+00E0..00E5 (6 chars)
+00E7..00EF (9 chars)
+00F1..00F6 (6 chars)
+00F9..00FD (5 chars)
+00FF..0130 (50 chars)
+0132..0137 (6 chars)
+0139..0149 (17 chars)
+014C..0151 (6 chars)
+0154..017E (43 chars)
+01A0..01A1 (2 chars)
+01AF..01B0 (2 chars)
+01C4..01DC (25 chars)
+01DE..01E3 (6 chars)
+01E6..01F5 (16 chars)
+01F8..0209 (18 chars)
+020C..021B (16 chars)
+021E..021F (2 chars)
+0226..0233 (14 chars)
+0344
+0385..0386 (2 chars)
+0388..038A (3 chars)
+038C
+038E..0390 (3 chars)
+03AA..03B0 (7 chars)
+03CA..03CE (5 chars)
+03D3..03D5 (3 chars)
+0400..0401 (2 chars)
+0403
+0407
+040C..040E (3 chars)
+0419
+0439
+0450..0451 (2 chars)
+0453
+0457
+045C..045E (3 chars)
+0476..0477 (2 chars)
+04BE..04BF (2 chars)
+04C1..04C2 (2 chars)
+04D0..04D3 (4 chars)
+04D6..04D7 (2 chars)
+04DA..04E7 (14 chars)
+04EA..04F5 (12 chars)
+04F8..04F9 (2 chars)
+0587
+0622..0626 (5 chars)
+06C0
+06C2
+06D6..06D7 (2 chars)
+0929
+0931
+0934
+0950
+0958..095F (8 chars)
+09CB..09CC (2 chars)
+09DC..09DD (2 chars)
+09DF
+0A33
+0A36
+0A59..0A5B (3 chars)
+0A5E
+0A74
+0AD0
+0B01
+0B48
+0B4B..0B4C (2 chars)
+0B5C..0B5D (2 chars)
+0B94
+0BCA..0BCC (3 chars)
+0C48
+0CC0
+0CC7..0CC8 (2 chars)
+0CCA..0CCB (2 chars)
+0D4A..0D4C (3 chars)
+0DDA
+0DDC..0DDE (3 chars)
+0E33
+0EB3
+0EDC..0EDD (2 chars)
+0F00
+0F43
+0F4D
+0F52
+0F57
+0F5C
+0F69
+0F73
+0F75..0F79 (5 chars)
+0F81
+0F93
+0F9D
+0FA2
+0FA7
+0FAC
+0FB9
+1026
+1E00..1E9B (156 chars)
+1EA0..1EF9 (90 chars)
+1F00..1F15 (22 chars)
+1F18..1F1D (6 chars)
+1F20..1F45 (38 chars)
+1F48..1F4D (6 chars)
+1F50..1F57 (8 chars)
+1F59
+1F5B
+1F5D
+1F5F..1F7D (31 chars)
+1F80..1FB4 (53 chars)
+1FB6..1FBC (7 chars)
+1FC1..1FC4 (4 chars)
+1FC6..1FD3 (14 chars)
+1FD6..1FDB (6 chars)
+1FDD..1FEE (18 chars)
+1FF2..1FF4 (3 chars)
+1FF6..1FFC (7 chars)
+203C
+2048..2049 (2 chars)
+2161..2163 (3 chars)
+2165..2168 (4 chars)
+216A..216B (2 chars)
+2171..2173 (3 chars)
+2175..2178 (4 chars)
+217A..217B (2 chars)
+2204
+2209
+220C
+2226
+222C..222D (2 chars)
+222F..2230 (2 chars)
+2247
+2249
+2260
+2262
+226D..2271 (5 chars)
+2274..2275 (2 chars)
+2278..2279 (2 chars)
+2280..2281 (2 chars)
+2284..2285 (2 chars)
+2288..2289 (2 chars)
+22AC..22AF (4 chars)
+22E0..22E3 (4 chars)
+22EA..22ED (4 chars)
+2460..24B5 (86 chars)
+24EA
+304C
+304E
+3050
+3052
+3054
+3056
+3058
+305A
+305C
+305E
+3060
+3062
+3065
+3067
+3069
+3070..3071 (2 chars)
+3073..3074 (2 chars)
+3076..3077 (2 chars)
+3079..307A (2 chars)
+307C..307D (2 chars)
+3094
+309E
+30AC
+30AE
+30B0
+30B2
+30B4
+30B6
+30B8
+30BA
+30BC
+30BE
+30C0
+30C2
+30C5
+30C7
+30C9
+30D0..30D1 (2 chars)
+30D3..30D4 (2 chars)
+30D6..30D7 (2 chars)
+30D9..30DA (2 chars)
+30DC..30DD (2 chars)
+30F4
+30FE
+3200..321C (29 chars)
+3220..3243 (36 chars)
+32C0..32CB (12 chars)
+3300..3376 (119 chars)
+337B..33DD (99 chars)
+33E0..33FE (31 chars)
+AC00..D7A3 (11172 chars)
+FB00..FB06 (7 chars)
+FB13..FB17 (5 chars)
+FB1D
+FB1F
+FB2A..FB36 (13 chars)
+FB38..FB3C (5 chars)
+FB3E
+FB40..FB41 (2 chars)
+FB43..FB44 (2 chars)
+FB46..FB4F (10 chars)
+FBEA..FBFB (18 chars)
+FC00..FD3D (318 chars)
+FD50..FD8F (64 chars)
+FD92..FDC7 (54 chars)
+FDF0..FDFB (12 chars)
+FE70..FE72 (3 chars)
+FE74
+FE76..FE7F (10 chars)
+
+*******************************************
+
+Property dump for: 0x20000080 (Hex Digit)
+
+0030..0039 (10 chars)
+0041..0046 (6 chars)
+0061..0066 (6 chars)
+FF10..FF19 (10 chars)
+FF21..FF26 (6 chars)
+FF41..FF46 (6 chars)
+
+*******************************************
+
+Property dump for: 0x20000030 (Decimal Digit)
+
+0030..0039 (10 chars)
+0660..0669 (10 chars)
+06F0..06F9 (10 chars)
+0966..096F (10 chars)
+09E6..09EF (10 chars)
+0A66..0A6F (10 chars)
+0AE6..0AEF (10 chars)
+0B66..0B6F (10 chars)
+0BE7..0BEF (9 chars)
+0C66..0C6F (10 chars)
+0CE6..0CEF (10 chars)
+0D66..0D6F (10 chars)
+0E50..0E59 (10 chars)
+0ED0..0ED9 (10 chars)
+0F20..0F29 (10 chars)
+1040..1049 (10 chars)
+1369..1371 (9 chars)
+17E0..17E9 (10 chars)
+1810..1819 (10 chars)
+FF10..FF19 (10 chars)
+
+*******************************************
+
+Property dump for: 0x20000010 (Numeric)
+
+0030..0039 (10 chars)
+00B2..00B3 (2 chars)
+00B9
+00BC..00BE (3 chars)
+0660..0669 (10 chars)
+06F0..06F9 (10 chars)
+0966..096F (10 chars)
+09E6..09EF (10 chars)
+09F4..09F9 (6 chars)
+0A66..0A6F (10 chars)
+0AE6..0AEF (10 chars)
+0B66..0B6F (10 chars)
+0BE7..0BF2 (12 chars)
+0C66..0C6F (10 chars)
+0CE6..0CEF (10 chars)
+0D66..0D6F (10 chars)
+0E50..0E59 (10 chars)
+0ED0..0ED9 (10 chars)
+0F20..0F33 (20 chars)
+1040..1049 (10 chars)
+1369..137C (20 chars)
+16EE..16F0 (3 chars)
+17E0..17E9 (10 chars)
+1810..1819 (10 chars)
+2070
+2074..2079 (6 chars)
+2080..2089 (10 chars)
+2153..2183 (49 chars)
+2460..249B (60 chars)
+24EA
+2776..2793 (30 chars)
+3007
+3021..3029 (9 chars)
+3038..303A (3 chars)
+3192..3195 (4 chars)
+3220..3229 (10 chars)
+3280..3289 (10 chars)
+FF10..FF19 (10 chars)
+
+*******************************************
+
+Property dump for: 0x20000001 (Alphabetic)
+
+0041..005A (26 chars)
+0061..007A (26 chars)
+00AA
+00B5
+00BA
+00C0..00D6 (23 chars)
+00D8..00F6 (31 chars)
+00F8..021F (296 chars)
+0222..0233 (18 chars)
+0250..02AD (94 chars)
+02B0..02B8 (9 chars)
+02BB..02C1 (7 chars)
+02E0..02E4 (5 chars)
+02EE
+0345
+037A
+0386
+0388..038A (3 chars)
+038C
+038E..03A1 (20 chars)
+03A3..03CE (44 chars)
+03D0..03D7 (8 chars)
+03DA..03F3 (26 chars)
+0400..0481 (130 chars)
+048C..04C4 (57 chars)
+04C7..04C8 (2 chars)
+04CB..04CC (2 chars)
+04D0..04F5 (38 chars)
+04F8..04F9 (2 chars)
+0531..0556 (38 chars)
+0559
+0561..0587 (39 chars)
+05D0..05EA (27 chars)
+05F0..05F2 (3 chars)
+0621..063A (26 chars)
+0641..0655 (21 chars)
+0670..06D3 (100 chars)
+06D5..06DC (8 chars)
+06E1..06E8 (8 chars)
+06ED
+06FA..06FC (3 chars)
+0710..072C (29 chars)
+0730..073F (16 chars)
+0780..07B0 (49 chars)
+0901..0903 (3 chars)
+0905..0939 (53 chars)
+093D..094C (16 chars)
+0950
+0958..0963 (12 chars)
+0981..0983 (3 chars)
+0985..098C (8 chars)
+098F..0990 (2 chars)
+0993..09A8 (22 chars)
+09AA..09B0 (7 chars)
+09B2
+09B6..09B9 (4 chars)
+09BE..09C4 (7 chars)
+09C7..09C8 (2 chars)
+09CB..09CC (2 chars)
+09D7
+09DC..09DD (2 chars)
+09DF..09E3 (5 chars)
+09F0..09F1 (2 chars)
+0A02
+0A05..0A0A (6 chars)
+0A0F..0A10 (2 chars)
+0A13..0A28 (22 chars)
+0A2A..0A30 (7 chars)
+0A32..0A33 (2 chars)
+0A35..0A36 (2 chars)
+0A38..0A39 (2 chars)
+0A3E..0A42 (5 chars)
+0A47..0A48 (2 chars)
+0A4B..0A4C (2 chars)
+0A59..0A5C (4 chars)
+0A5E
+0A70..0A74 (5 chars)
+0A81..0A83 (3 chars)
+0A85..0A8B (7 chars)
+0A8D
+0A8F..0A91 (3 chars)
+0A93..0AA8 (22 chars)
+0AAA..0AB0 (7 chars)
+0AB2..0AB3 (2 chars)
+0AB5..0AB9 (5 chars)
+0ABD..0AC5 (9 chars)
+0AC7..0AC9 (3 chars)
+0ACB..0ACC (2 chars)
+0AD0
+0AE0
+0B01..0B03 (3 chars)
+0B05..0B0C (8 chars)
+0B0F..0B10 (2 chars)
+0B13..0B28 (22 chars)
+0B2A..0B30 (7 chars)
+0B32..0B33 (2 chars)
+0B36..0B39 (4 chars)
+0B3D..0B43 (7 chars)
+0B47..0B48 (2 chars)
+0B4B..0B4C (2 chars)
+0B56..0B57 (2 chars)
+0B5C..0B5D (2 chars)
+0B5F..0B61 (3 chars)
+0B82..0B83 (2 chars)
+0B85..0B8A (6 chars)
+0B8E..0B90 (3 chars)
+0B92..0B95 (4 chars)
+0B99..0B9A (2 chars)
+0B9C
+0B9E..0B9F (2 chars)
+0BA3..0BA4 (2 chars)
+0BA8..0BAA (3 chars)
+0BAE..0BB5 (8 chars)
+0BB7..0BB9 (3 chars)
+0BBE..0BC2 (5 chars)
+0BC6..0BC8 (3 chars)
+0BCA..0BCC (3 chars)
+0BD7
+0C01..0C03 (3 chars)
+0C05..0C0C (8 chars)
+0C0E..0C10 (3 chars)
+0C12..0C28 (23 chars)
+0C2A..0C33 (10 chars)
+0C35..0C39 (5 chars)
+0C3E..0C44 (7 chars)
+0C46..0C48 (3 chars)
+0C4A..0C4C (3 chars)
+0C55..0C56 (2 chars)
+0C60..0C61 (2 chars)
+0C82..0C83 (2 chars)
+0C85..0C8C (8 chars)
+0C8E..0C90 (3 chars)
+0C92..0CA8 (23 chars)
+0CAA..0CB3 (10 chars)
+0CB5..0CB9 (5 chars)
+0CBE..0CC4 (7 chars)
+0CC6..0CC8 (3 chars)
+0CCA..0CCC (3 chars)
+0CD5..0CD6 (2 chars)
+0CDE
+0CE0..0CE1 (2 chars)
+0D02..0D03 (2 chars)
+0D05..0D0C (8 chars)
+0D0E..0D10 (3 chars)
+0D12..0D28 (23 chars)
+0D2A..0D39 (16 chars)
+0D3E..0D43 (6 chars)
+0D46..0D48 (3 chars)
+0D4A..0D4C (3 chars)
+0D57
+0D60..0D61 (2 chars)
+0D82..0D83 (2 chars)
+0D85..0D96 (18 chars)
+0D9A..0DB1 (24 chars)
+0DB3..0DBB (9 chars)
+0DBD
+0DC0..0DC6 (7 chars)
+0DCF..0DD4 (6 chars)
+0DD6
+0DD8..0DDF (8 chars)
+0DF2..0DF3 (2 chars)
+0E01..0E3A (58 chars)
+0E40..0E45 (6 chars)
+0E47
+0E4D
+0E81..0E82 (2 chars)
+0E84
+0E87..0E88 (2 chars)
+0E8A
+0E8D
+0E94..0E97 (4 chars)
+0E99..0E9F (7 chars)
+0EA1..0EA3 (3 chars)
+0EA5
+0EA7
+0EAA..0EAB (2 chars)
+0EAD..0EB9 (13 chars)
+0EBB..0EBD (3 chars)
+0EC0..0EC4 (5 chars)
+0ECD
+0EDC..0EDD (2 chars)
+0F00
+0F40..0F47 (8 chars)
+0F49..0F6A (34 chars)
+0F71..0F81 (17 chars)
+0F88..0F8B (4 chars)
+0F90..0F97 (8 chars)
+0F99..0FBC (36 chars)
+1000..1021 (34 chars)
+1023..1027 (5 chars)
+1029..102A (2 chars)
+102C..1032 (7 chars)
+1036
+1038
+1050..1059 (10 chars)
+10A0..10C5 (38 chars)
+10D0..10F6 (39 chars)
+1100..1159 (90 chars)
+115F..11A2 (68 chars)
+11A8..11F9 (82 chars)
+1200..1206 (7 chars)
+1208..1246 (63 chars)
+1248
+124A..124D (4 chars)
+1250..1256 (7 chars)
+1258
+125A..125D (4 chars)
+1260..1286 (39 chars)
+1288
+128A..128D (4 chars)
+1290..12AE (31 chars)
+12B0
+12B2..12B5 (4 chars)
+12B8..12BE (7 chars)
+12C0
+12C2..12C5 (4 chars)
+12C8..12CE (7 chars)
+12D0..12D6 (7 chars)
+12D8..12EE (23 chars)
+12F0..130E (31 chars)
+1310
+1312..1315 (4 chars)
+1318..131E (7 chars)
+1320..1346 (39 chars)
+1348..135A (19 chars)
+13A0..13F4 (85 chars)
+1401..166C (620 chars)
+166F..1676 (8 chars)
+1681..169A (26 chars)
+16A0..16EA (75 chars)
+1780..17C8 (73 chars)
+1820..1842 (35 chars)
+1844..1877 (52 chars)
+1880..18A9 (42 chars)
+1E00..1E9B (156 chars)
+1EA0..1EF9 (90 chars)
+1F00..1F15 (22 chars)
+1F18..1F1D (6 chars)
+1F20..1F45 (38 chars)
+1F48..1F4D (6 chars)
+1F50..1F57 (8 chars)
+1F59
+1F5B
+1F5D
+1F5F..1F7D (31 chars)
+1F80..1FB4 (53 chars)
+1FB6..1FBC (7 chars)
+1FBE
+1FC2..1FC4 (3 chars)
+1FC6..1FCC (7 chars)
+1FD0..1FD3 (4 chars)
+1FD6..1FDB (6 chars)
+1FE0..1FEC (13 chars)
+1FF2..1FF4 (3 chars)
+1FF6..1FFC (7 chars)
+207F
+2102
+2107
+210A..2113 (10 chars)
+2115
+2119..211D (5 chars)
+2124
+2126
+2128
+212A..212D (4 chars)
+212F..2131 (3 chars)
+2133..2139 (7 chars)
+2160..2183 (36 chars)
+3041..3094 (84 chars)
+30A1..30FA (90 chars)
+3105..312C (40 chars)
+3131..318E (94 chars)
+31A0..31B7 (24 chars)
+A000..A48C (1165 chars)
+AC00..D7A3 (11172 chars)
+FB00..FB06 (7 chars)
+FB13..FB17 (5 chars)
+FB1D
+FB1F..FB28 (10 chars)
+FB2A..FB36 (13 chars)
+FB38..FB3C (5 chars)
+FB3E
+FB40..FB41 (2 chars)
+FB43..FB44 (2 chars)
+FB46..FBB1 (108 chars)
+FBD3..FD3D (363 chars)
+FD50..FD8F (64 chars)
+FD92..FDC7 (54 chars)
+FDF0..FDFB (12 chars)
+FE70..FE72 (3 chars)
+FE74
+FE76..FEFC (135 chars)
+FF21..FF3A (26 chars)
+FF41..FF5A (26 chars)
+FF66..FF6F (10 chars)
+FF71..FF9D (45 chars)
+FFA0..FFBE (31 chars)
+FFC2..FFC7 (6 chars)
+FFCA..FFCF (6 chars)
+FFD2..FFD7 (6 chars)
+FFDA..FFDC (3 chars)
+
+*******************************************
+
+Property dump for: 0x20000002 (Ideographic)
+
+3006..3007 (2 chars)
+3021..3029 (9 chars)
+3038..303A (3 chars)
+3400..4DB5 (6582 chars)
+4E00..9FA5 (20902 chars)
+F900..FA2D (302 chars)
+
+*******************************************
+
+Property dump for: 0x20010000 (Diacritic)
+
+005E
+0060
+00A8
+00AF
+00B4
+00B7..00B8 (2 chars)
+02B0..02EE (63 chars)
+0300..034E (79 chars)
+0360..0362 (3 chars)
+0374..0375 (2 chars)
+037A
+0384..0385 (2 chars)
+0483..0486 (4 chars)
+0559
+0591..05A1 (17 chars)
+05A3..05B9 (23 chars)
+05BB..05BD (3 chars)
+05BF
+05C1..05C2 (2 chars)
+05C4
+06DF..06E0 (2 chars)
+06E5..06E6 (2 chars)
+06EA..06EC (3 chars)
+0740..074A (11 chars)
+093C
+094D
+0951..0954 (4 chars)
+09BC
+09CD
+0A3C
+0A4D
+0ABC
+0ACD
+0B3C
+0B4D
+0BCD
+0C4D
+0CCD
+0D4D
+0DCA
+0E48..0E4C (5 chars)
+0E4E
+0EC8..0ECC (5 chars)
+0F18..0F19 (2 chars)
+0F35
+0F37
+0F39
+0F3E..0F3F (2 chars)
+0F82..0F84 (3 chars)
+0F86..0F87 (2 chars)
+0FC6
+1037
+1039
+17C9..17D3 (11 chars)
+1FBD
+1FBF..1FC1 (3 chars)
+1FCD..1FCF (3 chars)
+1FDD..1FDF (3 chars)
+1FED..1FEF (3 chars)
+1FFD..1FFE (2 chars)
+302A..302F (6 chars)
+3099..309C (4 chars)
+30FC
+FB1E
+FE20..FE23 (4 chars)
+FF3E
+FF40
+FF70
+FF9E..FF9F (2 chars)
+FFE3
+
+*******************************************
+
+Property dump for: 0x20000040 (Extender)
+
+00B7
+02D0..02D1 (2 chars)
+0640
+0E46
+0EC6
+1843
+3005
+3031..3035 (5 chars)
+309D..309E (2 chars)
+30FC..30FE (3 chars)
+FF70
+
+*******************************************
+
+Property dump for: 0x20020000 (Identifier Part)
+
+0030..0039 (10 chars)
+0041..005A (26 chars)
+005F
+0061..007A (26 chars)
+00AA
+00B5
+00BA
+00C0..00D6 (23 chars)
+00D8..00F6 (31 chars)
+00F8..021F (296 chars)
+0222..0233 (18 chars)
+0250..02AD (94 chars)
+02B0..02B8 (9 chars)
+02BB..02C1 (7 chars)
+02D0..02D1 (2 chars)
+02E0..02E4 (5 chars)
+02EE
+0300..034E (79 chars)
+0360..0362 (3 chars)
+037A
+0386
+0388..038A (3 chars)
+038C
+038E..03A1 (20 chars)
+03A3..03CE (44 chars)
+03D0..03D7 (8 chars)
+03DA..03F3 (26 chars)
+0400..0481 (130 chars)
+0483..0486 (4 chars)
+048C..04C4 (57 chars)
+04C7..04C8 (2 chars)
+04CB..04CC (2 chars)
+04D0..04F5 (38 chars)
+04F8..04F9 (2 chars)
+0531..0556 (38 chars)
+0559
+0561..0587 (39 chars)
+0591..05A1 (17 chars)
+05A3..05B9 (23 chars)
+05BB..05BD (3 chars)
+05BF
+05C1..05C2 (2 chars)
+05C4
+05D0..05EA (27 chars)
+05F0..05F2 (3 chars)
+0621..063A (26 chars)
+0640..0655 (22 chars)
+0660..0669 (10 chars)
+0670..06D3 (100 chars)
+06D5..06DC (8 chars)
+06DF..06E8 (10 chars)
+06EA..06ED (4 chars)
+06F0..06FC (13 chars)
+0710..072C (29 chars)
+0730..074A (27 chars)
+0780..07B0 (49 chars)
+0901..0903 (3 chars)
+0905..0939 (53 chars)
+093C..094D (18 chars)
+0950..0954 (5 chars)
+0958..0963 (12 chars)
+0966..096F (10 chars)
+0981..0983 (3 chars)
+0985..098C (8 chars)
+098F..0990 (2 chars)
+0993..09A8 (22 chars)
+09AA..09B0 (7 chars)
+09B2
+09B6..09B9 (4 chars)
+09BC
+09BE..09C4 (7 chars)
+09C7..09C8 (2 chars)
+09CB..09CD (3 chars)
+09D7
+09DC..09DD (2 chars)
+09DF..09E3 (5 chars)
+09E6..09F1 (12 chars)
+0A02
+0A05..0A0A (6 chars)
+0A0F..0A10 (2 chars)
+0A13..0A28 (22 chars)
+0A2A..0A30 (7 chars)
+0A32..0A33 (2 chars)
+0A35..0A36 (2 chars)
+0A38..0A39 (2 chars)
+0A3C
+0A3E..0A42 (5 chars)
+0A47..0A48 (2 chars)
+0A4B..0A4D (3 chars)
+0A59..0A5C (4 chars)
+0A5E
+0A66..0A74 (15 chars)
+0A81..0A83 (3 chars)
+0A85..0A8B (7 chars)
+0A8D
+0A8F..0A91 (3 chars)
+0A93..0AA8 (22 chars)
+0AAA..0AB0 (7 chars)
+0AB2..0AB3 (2 chars)
+0AB5..0AB9 (5 chars)
+0ABC..0AC5 (10 chars)
+0AC7..0AC9 (3 chars)
+0ACB..0ACD (3 chars)
+0AD0
+0AE0
+0AE6..0AEF (10 chars)
+0B01..0B03 (3 chars)
+0B05..0B0C (8 chars)
+0B0F..0B10 (2 chars)
+0B13..0B28 (22 chars)
+0B2A..0B30 (7 chars)
+0B32..0B33 (2 chars)
+0B36..0B39 (4 chars)
+0B3C..0B43 (8 chars)
+0B47..0B48 (2 chars)
+0B4B..0B4D (3 chars)
+0B56..0B57 (2 chars)
+0B5C..0B5D (2 chars)
+0B5F..0B61 (3 chars)
+0B66..0B6F (10 chars)
+0B82..0B83 (2 chars)
+0B85..0B8A (6 chars)
+0B8E..0B90 (3 chars)
+0B92..0B95 (4 chars)
+0B99..0B9A (2 chars)
+0B9C
+0B9E..0B9F (2 chars)
+0BA3..0BA4 (2 chars)
+0BA8..0BAA (3 chars)
+0BAE..0BB5 (8 chars)
+0BB7..0BB9 (3 chars)
+0BBE..0BC2 (5 chars)
+0BC6..0BC8 (3 chars)
+0BCA..0BCD (4 chars)
+0BD7
+0BE7..0BEF (9 chars)
+0C01..0C03 (3 chars)
+0C05..0C0C (8 chars)
+0C0E..0C10 (3 chars)
+0C12..0C28 (23 chars)
+0C2A..0C33 (10 chars)
+0C35..0C39 (5 chars)
+0C3E..0C44 (7 chars)
+0C46..0C48 (3 chars)
+0C4A..0C4D (4 chars)
+0C55..0C56 (2 chars)
+0C60..0C61 (2 chars)
+0C66..0C6F (10 chars)
+0C82..0C83 (2 chars)
+0C85..0C8C (8 chars)
+0C8E..0C90 (3 chars)
+0C92..0CA8 (23 chars)
+0CAA..0CB3 (10 chars)
+0CB5..0CB9 (5 chars)
+0CBE..0CC4 (7 chars)
+0CC6..0CC8 (3 chars)
+0CCA..0CCD (4 chars)
+0CD5..0CD6 (2 chars)
+0CDE
+0CE0..0CE1 (2 chars)
+0CE6..0CEF (10 chars)
+0D02..0D03 (2 chars)
+0D05..0D0C (8 chars)
+0D0E..0D10 (3 chars)
+0D12..0D28 (23 chars)
+0D2A..0D39 (16 chars)
+0D3E..0D43 (6 chars)
+0D46..0D48 (3 chars)
+0D4A..0D4D (4 chars)
+0D57
+0D60..0D61 (2 chars)
+0D66..0D6F (10 chars)
+0D82..0D83 (2 chars)
+0D85..0D96 (18 chars)
+0D9A..0DB1 (24 chars)
+0DB3..0DBB (9 chars)
+0DBD
+0DC0..0DC6 (7 chars)
+0DCA
+0DCF..0DD4 (6 chars)
+0DD6
+0DD8..0DDF (8 chars)
+0DF2..0DF3 (2 chars)
+0E01..0E3A (58 chars)
+0E40..0E4E (15 chars)
+0E50..0E59 (10 chars)
+0E81..0E82 (2 chars)
+0E84
+0E87..0E88 (2 chars)
+0E8A
+0E8D
+0E94..0E97 (4 chars)
+0E99..0E9F (7 chars)
+0EA1..0EA3 (3 chars)
+0EA5
+0EA7
+0EAA..0EAB (2 chars)
+0EAD..0EB9 (13 chars)
+0EBB..0EBD (3 chars)
+0EC0..0EC4 (5 chars)
+0EC6
+0EC8..0ECD (6 chars)
+0ED0..0ED9 (10 chars)
+0EDC..0EDD (2 chars)
+0F00
+0F18..0F19 (2 chars)
+0F20..0F29 (10 chars)
+0F35
+0F37
+0F39
+0F3E..0F47 (10 chars)
+0F49..0F6A (34 chars)
+0F71..0F84 (20 chars)
+0F86..0F8B (6 chars)
+0F90..0F97 (8 chars)
+0F99..0FBC (36 chars)
+0FC6
+1000..1021 (34 chars)
+1023..1027 (5 chars)
+1029..102A (2 chars)
+102C..1032 (7 chars)
+1036..1039 (4 chars)
+1040..1049 (10 chars)
+1050..1059 (10 chars)
+10A0..10C5 (38 chars)
+10D0..10F6 (39 chars)
+1100..1159 (90 chars)
+115F..11A2 (68 chars)
+11A8..11F9 (82 chars)
+1200..1206 (7 chars)
+1208..1246 (63 chars)
+1248
+124A..124D (4 chars)
+1250..1256 (7 chars)
+1258
+125A..125D (4 chars)
+1260..1286 (39 chars)
+1288
+128A..128D (4 chars)
+1290..12AE (31 chars)
+12B0
+12B2..12B5 (4 chars)
+12B8..12BE (7 chars)
+12C0
+12C2..12C5 (4 chars)
+12C8..12CE (7 chars)
+12D0..12D6 (7 chars)
+12D8..12EE (23 chars)
+12F0..130E (31 chars)
+1310
+1312..1315 (4 chars)
+1318..131E (7 chars)
+1320..1346 (39 chars)
+1348..135A (19 chars)
+1369..1371 (9 chars)
+13A0..13F4 (85 chars)
+1401..166C (620 chars)
+166F..1676 (8 chars)
+1681..169A (26 chars)
+16A0..16EA (75 chars)
+1780..17D3 (84 chars)
+17E0..17E9 (10 chars)
+1810..1819 (10 chars)
+1820..1877 (88 chars)
+1880..18A9 (42 chars)
+1E00..1E9B (156 chars)
+1EA0..1EF9 (90 chars)
+1F00..1F15 (22 chars)
+1F18..1F1D (6 chars)
+1F20..1F45 (38 chars)
+1F48..1F4D (6 chars)
+1F50..1F57 (8 chars)
+1F59
+1F5B
+1F5D
+1F5F..1F7D (31 chars)
+1F80..1FB4 (53 chars)
+1FB6..1FBC (7 chars)
+1FBE
+1FC2..1FC4 (3 chars)
+1FC6..1FCC (7 chars)
+1FD0..1FD3 (4 chars)
+1FD6..1FDB (6 chars)
+1FE0..1FEC (13 chars)
+1FF2..1FF4 (3 chars)
+1FF6..1FFC (7 chars)
+203F..2040 (2 chars)
+207F
+20D0..20DC (13 chars)
+20E1
+2102
+2107
+210A..2113 (10 chars)
+2115
+2119..211D (5 chars)
+2124
+2126
+2128
+212A..212D (4 chars)
+212F..2131 (3 chars)
+2133..2139 (7 chars)
+2160..2183 (36 chars)
+3005..3007 (3 chars)
+3021..302F (15 chars)
+3031..3035 (5 chars)
+3038..303A (3 chars)
+3041..3094 (84 chars)
+3099..309A (2 chars)
+309D..309E (2 chars)
+30A1..30FE (94 chars)
+3105..312C (40 chars)
+3131..318E (94 chars)
+31A0..31B7 (24 chars)
+3400..4DB5 (6582 chars)
+4E00..9FA5 (20902 chars)
+A000..A48C (1165 chars)
+AC00..D7A3 (11172 chars)
+F900..FA2D (302 chars)
+FB00..FB06 (7 chars)
+FB13..FB17 (5 chars)
+FB1D..FB28 (12 chars)
+FB2A..FB36 (13 chars)
+FB38..FB3C (5 chars)
+FB3E
+FB40..FB41 (2 chars)
+FB43..FB44 (2 chars)
+FB46..FBB1 (108 chars)
+FBD3..FD3D (363 chars)
+FD50..FD8F (64 chars)
+FD92..FDC7 (54 chars)
+FDF0..FDFB (12 chars)
+FE20..FE23 (4 chars)
+FE33..FE34 (2 chars)
+FE4D..FE4F (3 chars)
+FE70..FE72 (3 chars)
+FE74
+FE76..FEFC (135 chars)
+FF10..FF19 (10 chars)
+FF21..FF3A (26 chars)
+FF3F
+FF41..FF5A (26 chars)
+FF65..FFBE (90 chars)
+FFC2..FFC7 (6 chars)
+FFCA..FFCF (6 chars)
+FFD2..FFD7 (6 chars)
+FFDA..FFDC (3 chars)
+
+*******************************************
+
+Property dump for: 0x10000080 (Ignorable Control)
+
+0001..0008 (8 chars)
+000E..001B (14 chars)
+007F..0084 (6 chars)
+0086..009F (26 chars)
+070F
+180B..180E (4 chars)
+200C..200F (4 chars)
+202A..202E (5 chars)
+206A..206F (6 chars)
+FEFF
+FFF9..FFFB (3 chars)
+
+*******************************************
+
+Property dump for: 0x01000000 (Bidi: Left-to-Right)
+
+0041..005A (26 chars)
+0061..007A (26 chars)
+00AA
+00B5
+00BA
+00C0..00D6 (23 chars)
+00D8..00F6 (31 chars)
+00F8..021F (296 chars)
+0222..0233 (18 chars)
+0250..02AD (94 chars)
+02B0..02B8 (9 chars)
+02BB..02C1 (7 chars)
+02D0..02D1 (2 chars)
+02E0..02E4 (5 chars)
+02EE
+037A
+0386
+0388..038A (3 chars)
+038C
+038E..03A1 (20 chars)
+03A3..03CE (44 chars)
+03D0..03D7 (8 chars)
+03DA..03F3 (26 chars)
+0400..0482 (131 chars)
+048C..04C4 (57 chars)
+04C7..04C8 (2 chars)
+04CB..04CC (2 chars)
+04D0..04F5 (38 chars)
+04F8..04F9 (2 chars)
+0531..0556 (38 chars)
+0559..055F (7 chars)
+0561..0587 (39 chars)
+0589
+0903
+0905..0939 (53 chars)
+093D..0940 (4 chars)
+0949..094C (4 chars)
+0950
+0958..0961 (10 chars)
+0964..0970 (13 chars)
+0982..0983 (2 chars)
+0985..098C (8 chars)
+098F..0990 (2 chars)
+0993..09A8 (22 chars)
+09AA..09B0 (7 chars)
+09B2
+09B6..09B9 (4 chars)
+09BE..09C0 (3 chars)
+09C7..09C8 (2 chars)
+09CB..09CC (2 chars)
+09D7
+09DC..09DD (2 chars)
+09DF..09E1 (3 chars)
+09E6..09F1 (12 chars)
+09F4..09FA (7 chars)
+0A05..0A0A (6 chars)
+0A0F..0A10 (2 chars)
+0A13..0A28 (22 chars)
+0A2A..0A30 (7 chars)
+0A32..0A33 (2 chars)
+0A35..0A36 (2 chars)
+0A38..0A39 (2 chars)
+0A3E..0A40 (3 chars)
+0A59..0A5C (4 chars)
+0A5E
+0A66..0A6F (10 chars)
+0A72..0A74 (3 chars)
+0A83
+0A85..0A8B (7 chars)
+0A8D
+0A8F..0A91 (3 chars)
+0A93..0AA8 (22 chars)
+0AAA..0AB0 (7 chars)
+0AB2..0AB3 (2 chars)
+0AB5..0AB9 (5 chars)
+0ABD..0AC0 (4 chars)
+0AC9
+0ACB..0ACC (2 chars)
+0AD0
+0AE0
+0AE6..0AEF (10 chars)
+0B02..0B03 (2 chars)
+0B05..0B0C (8 chars)
+0B0F..0B10 (2 chars)
+0B13..0B28 (22 chars)
+0B2A..0B30 (7 chars)
+0B32..0B33 (2 chars)
+0B36..0B39 (4 chars)
+0B3D..0B3E (2 chars)
+0B40
+0B47..0B48 (2 chars)
+0B4B..0B4C (2 chars)
+0B57
+0B5C..0B5D (2 chars)
+0B5F..0B61 (3 chars)
+0B66..0B70 (11 chars)
+0B83
+0B85..0B8A (6 chars)
+0B8E..0B90 (3 chars)
+0B92..0B95 (4 chars)
+0B99..0B9A (2 chars)
+0B9C
+0B9E..0B9F (2 chars)
+0BA3..0BA4 (2 chars)
+0BA8..0BAA (3 chars)
+0BAE..0BB5 (8 chars)
+0BB7..0BB9 (3 chars)
+0BBE..0BBF (2 chars)
+0BC1..0BC2 (2 chars)
+0BC6..0BC8 (3 chars)
+0BCA..0BCC (3 chars)
+0BD7
+0BE7..0BF2 (12 chars)
+0C01..0C03 (3 chars)
+0C05..0C0C (8 chars)
+0C0E..0C10 (3 chars)
+0C12..0C28 (23 chars)
+0C2A..0C33 (10 chars)
+0C35..0C39 (5 chars)
+0C41..0C44 (4 chars)
+0C60..0C61 (2 chars)
+0C66..0C6F (10 chars)
+0C82..0C83 (2 chars)
+0C85..0C8C (8 chars)
+0C8E..0C90 (3 chars)
+0C92..0CA8 (23 chars)
+0CAA..0CB3 (10 chars)
+0CB5..0CB9 (5 chars)
+0CBE
+0CC0..0CC4 (5 chars)
+0CC7..0CC8 (2 chars)
+0CCA..0CCB (2 chars)
+0CD5..0CD6 (2 chars)
+0CDE
+0CE0..0CE1 (2 chars)
+0CE6..0CEF (10 chars)
+0D02..0D03 (2 chars)
+0D05..0D0C (8 chars)
+0D0E..0D10 (3 chars)
+0D12..0D28 (23 chars)
+0D2A..0D39 (16 chars)
+0D3E..0D40 (3 chars)
+0D46..0D48 (3 chars)
+0D4A..0D4C (3 chars)
+0D57
+0D60..0D61 (2 chars)
+0D66..0D6F (10 chars)
+0D82..0D83 (2 chars)
+0D85..0D96 (18 chars)
+0D9A..0DB1 (24 chars)
+0DB3..0DBB (9 chars)
+0DBD
+0DC0..0DC6 (7 chars)
+0DCF..0DD1 (3 chars)
+0DD8..0DDF (8 chars)
+0DF2..0DF4 (3 chars)
+0E01..0E30 (48 chars)
+0E32..0E33 (2 chars)
+0E40..0E46 (7 chars)
+0E4F..0E5B (13 chars)
+0E81..0E82 (2 chars)
+0E84
+0E87..0E88 (2 chars)
+0E8A
+0E8D
+0E94..0E97 (4 chars)
+0E99..0E9F (7 chars)
+0EA1..0EA3 (3 chars)
+0EA5
+0EA7
+0EAA..0EAB (2 chars)
+0EAD..0EB0 (4 chars)
+0EB2..0EB3 (2 chars)
+0EBD
+0EC0..0EC4 (5 chars)
+0EC6
+0ED0..0ED9 (10 chars)
+0EDC..0EDD (2 chars)
+0F00..0F17 (24 chars)
+0F1A..0F34 (27 chars)
+0F36
+0F38
+0F3E..0F47 (10 chars)
+0F49..0F6A (34 chars)
+0F7F
+0F85
+0F88..0F8B (4 chars)
+0FBE..0FC5 (8 chars)
+0FC7..0FCC (6 chars)
+0FCF
+1000..1021 (34 chars)
+1023..1027 (5 chars)
+1029..102A (2 chars)
+102C
+1031
+1038
+1040..1057 (24 chars)
+10A0..10C5 (38 chars)
+10D0..10F6 (39 chars)
+10FB
+1100..1159 (90 chars)
+115F..11A2 (68 chars)
+11A8..11F9 (82 chars)
+1200..1206 (7 chars)
+1208..1246 (63 chars)
+1248
+124A..124D (4 chars)
+1250..1256 (7 chars)
+1258
+125A..125D (4 chars)
+1260..1286 (39 chars)
+1288
+128A..128D (4 chars)
+1290..12AE (31 chars)
+12B0
+12B2..12B5 (4 chars)
+12B8..12BE (7 chars)
+12C0
+12C2..12C5 (4 chars)
+12C8..12CE (7 chars)
+12D0..12D6 (7 chars)
+12D8..12EE (23 chars)
+12F0..130E (31 chars)
+1310
+1312..1315 (4 chars)
+1318..131E (7 chars)
+1320..1346 (39 chars)
+1348..135A (19 chars)
+1361..137C (28 chars)
+13A0..13F4 (85 chars)
+1401..1676 (630 chars)
+1681..169A (26 chars)
+16A0..16F0 (81 chars)
+1780..17B6 (55 chars)
+17BE..17C5 (8 chars)
+17C7..17C8 (2 chars)
+17D4..17DA (7 chars)
+17DC
+17E0..17E9 (10 chars)
+1810..1819 (10 chars)
+1820..1877 (88 chars)
+1880..18A8 (41 chars)
+1E00..1E9B (156 chars)
+1EA0..1EF9 (90 chars)
+1F00..1F15 (22 chars)
+1F18..1F1D (6 chars)
+1F20..1F45 (38 chars)
+1F48..1F4D (6 chars)
+1F50..1F57 (8 chars)
+1F59
+1F5B
+1F5D
+1F5F..1F7D (31 chars)
+1F80..1FB4 (53 chars)
+1FB6..1FBC (7 chars)
+1FBE
+1FC2..1FC4 (3 chars)
+1FC6..1FCC (7 chars)
+1FD0..1FD3 (4 chars)
+1FD6..1FDB (6 chars)
+1FE0..1FEC (13 chars)
+1FF2..1FF4 (3 chars)
+1FF6..1FFC (7 chars)
+200E
+207F
+2102
+2107
+210A..2113 (10 chars)
+2115
+2119..211D (5 chars)
+2124
+2126
+2128
+212A..212D (4 chars)
+212F..2131 (3 chars)
+2133..2139 (7 chars)
+2160..2183 (36 chars)
+2336..237A (69 chars)
+2395
+249C..24E9 (78 chars)
+3005..3007 (3 chars)
+3021..3029 (9 chars)
+3031..3035 (5 chars)
+3038..303A (3 chars)
+3041..3094 (84 chars)
+309D..309E (2 chars)
+30A1..30FA (90 chars)
+30FC..30FE (3 chars)
+3105..312C (40 chars)
+3131..318E (94 chars)
+3190..31B7 (40 chars)
+3200..321C (29 chars)
+3220..3243 (36 chars)
+3260..327B (28 chars)
+327F..32B0 (50 chars)
+32C0..32CB (12 chars)
+32D0..32FE (47 chars)
+3300..3376 (119 chars)
+337B..33DD (99 chars)
+33E0..33FE (31 chars)
+3400..4DB5 (6582 chars)
+4E00..9FA5 (20902 chars)
+A000..A48C (1165 chars)
+AC00..D7A3 (11172 chars)
+D800..F7FF (8192 chars)
+F900..FA2D (302 chars)
+FB00..FB06 (7 chars)
+FB13..FB17 (5 chars)
+FF21..FF3A (26 chars)
+FF41..FF5A (26 chars)
+FF66..FFBE (89 chars)
+FFC2..FFC7 (6 chars)
+FFCA..FFCF (6 chars)
+FFD2..FFD7 (6 chars)
+FFDA..FFDC (3 chars)
+
+*******************************************
+
+Property dump for: 0x02000000 (Bidi: (Hebrew) Right-to-Left)
+
+05BE
+05C0
+05C3
+05D0..05EA (27 chars)
+05F0..05F4 (5 chars)
+200F
+FB1D
+FB1F..FB28 (10 chars)
+FB2A..FB36 (13 chars)
+FB38..FB3C (5 chars)
+FB3E
+FB40..FB41 (2 chars)
+FB43..FB44 (2 chars)
+FB46..FB4F (10 chars)
+
+*******************************************
+
+Property dump for: 0x0B000000 (Bidi: Arabic Right-to-Left)
+
+061B
+061F
+0621..063A (26 chars)
+0640..064A (11 chars)
+066D
+0671..06D5 (101 chars)
+06E5..06E6 (2 chars)
+06FA..06FE (5 chars)
+0700..070D (14 chars)
+0710
+0712..072C (27 chars)
+0780..07A5 (38 chars)
+FB50..FBB1 (98 chars)
+FBD3..FD3D (363 chars)
+FD50..FD8F (64 chars)
+FD92..FDC7 (54 chars)
+FDF0..FDFB (12 chars)
+FE70..FE72 (3 chars)
+FE74
+FE76..FEFC (135 chars)
+
+*******************************************
+
+Property dump for: 0x03000000 (Bidi: European Digit)
+
+0030..0039 (10 chars)
+00B2..00B3 (2 chars)
+00B9
+06F0..06F9 (10 chars)
+2070
+2074..2079 (6 chars)
+2080..2089 (10 chars)
+2460..249B (60 chars)
+24EA
+FF10..FF19 (10 chars)
+
+*******************************************
+
+Property dump for: 0x04000000 (Bidi: Eur Num Separator)
+
+002F
+FF0F
+
+*******************************************
+
+Property dump for: 0x05000000 (Bidi: Eur Num Terminator)
+
+0023..0025 (3 chars)
+002B
+002D
+00A2..00A5 (4 chars)
+00B0..00B1 (2 chars)
+066A
+09F2..09F3 (2 chars)
+0E3F
+17DB
+2030..2034 (5 chars)
+207A..207B (2 chars)
+208A..208B (2 chars)
+20A0..20AF (16 chars)
+212E
+2212..2213 (2 chars)
+FB29
+FE5F
+FE62..FE63 (2 chars)
+FE69..FE6A (2 chars)
+FF03..FF05 (3 chars)
+FF0B
+FF0D
+FFE0..FFE1 (2 chars)
+FFE5..FFE6 (2 chars)
+
+*******************************************
+
+Property dump for: 0x06000000 (Bidi: Arabic Digit)
+
+0660..0669 (10 chars)
+066B..066C (2 chars)
+
+*******************************************
+
+Property dump for: 0x07000000 (Bidi: Common Separator)
+
+002C
+002E
+003A
+00A0
+060C
+FE50
+FE52
+FE55
+FF0C
+FF0E
+FF1A
+
+*******************************************
+
+Property dump for: 0x08000000 (Bidi: Block Separator)
+
+000A
+000D
+001C..001E (3 chars)
+0085
+2029
+
+*******************************************
+
+Property dump for: 0x09000000 (Bidi: Segment Separator)
+
+0009
+000B
+001F
+
+*******************************************
+
+Property dump for: 0x0A000000 (Bidi: Whitespace)
+
+000C
+0020
+1680
+2000..200A (11 chars)
+2028
+202F
+3000
+
+*******************************************
+
+Property dump for: 0x0C000000 (Bidi: Non-spacing Mark)
+
+0300..034E (79 chars)
+0360..0362 (3 chars)
+0483..0486 (4 chars)
+0488..0489 (2 chars)
+0591..05A1 (17 chars)
+05A3..05B9 (23 chars)
+05BB..05BD (3 chars)
+05BF
+05C1..05C2 (2 chars)
+05C4
+064B..0655 (11 chars)
+0670
+06D6..06E4 (15 chars)
+06E7..06E8 (2 chars)
+06EA..06ED (4 chars)
+0711
+0730..074A (27 chars)
+07A6..07B0 (11 chars)
+0901..0902 (2 chars)
+093C
+0941..0948 (8 chars)
+094D
+0951..0954 (4 chars)
+0962..0963 (2 chars)
+0981
+09BC
+09C1..09C4 (4 chars)
+09CD
+09E2..09E3 (2 chars)
+0A02
+0A3C
+0A41..0A42 (2 chars)
+0A47..0A48 (2 chars)
+0A4B..0A4D (3 chars)
+0A70..0A71 (2 chars)
+0A81..0A82 (2 chars)
+0ABC
+0AC1..0AC5 (5 chars)
+0AC7..0AC8 (2 chars)
+0ACD
+0B01
+0B3C
+0B3F
+0B41..0B43 (3 chars)
+0B4D
+0B56
+0B82
+0BC0
+0BCD
+0C3E..0C40 (3 chars)
+0C46..0C48 (3 chars)
+0C4A..0C4D (4 chars)
+0C55..0C56 (2 chars)
+0CBF
+0CC6
+0CCC..0CCD (2 chars)
+0D41..0D43 (3 chars)
+0D4D
+0DCA
+0DD2..0DD4 (3 chars)
+0DD6
+0E31
+0E34..0E3A (7 chars)
+0E47..0E4E (8 chars)
+0EB1
+0EB4..0EB9 (6 chars)
+0EBB..0EBC (2 chars)
+0EC8..0ECD (6 chars)
+0F18..0F19 (2 chars)
+0F35
+0F37
+0F39
+0F71..0F7E (14 chars)
+0F80..0F84 (5 chars)
+0F86..0F87 (2 chars)
+0F90..0F97 (8 chars)
+0F99..0FBC (36 chars)
+0FC6
+102D..1030 (4 chars)
+1032
+1036..1037 (2 chars)
+1039
+1058..1059 (2 chars)
+17B7..17BD (7 chars)
+17C6
+17C9..17D3 (11 chars)
+18A9
+20D0..20E3 (20 chars)
+302A..302F (6 chars)
+3099..309A (2 chars)
+F8F0..F8FF (16 chars)
+FB1E
+FE20..FE23 (4 chars)
+
+*******************************************
+
+Property dump for: 0x0D000000 (Bidi: Boundary Neutral)
+
+0000..0008 (9 chars)
+000E..001B (14 chars)
+007F..0084 (6 chars)
+0086..009F (26 chars)
+070F
+180B..180E (4 chars)
+200B..200D (3 chars)
+206A..206F (6 chars)
+FEFF
+FFF9..FFFB (3 chars)
+
+*******************************************
+
+Property dump for: 0x0E000000 (Bidi: PDF)
+
+202C
+
+*******************************************
+
+Property dump for: 0x0F000000 (Bidi: Embedding or Override)
+
+202A..202B (2 chars)
+202D..202E (2 chars)
+
+*******************************************
+
+Property dump for: 0x80000009 (Bidi: Other Neutral)
+
+0021..0022 (2 chars)
+0026..002A (5 chars)
+003B..0040 (6 chars)
+005B..0060 (6 chars)
+007B..007E (4 chars)
+00A1
+00A6..00A9 (4 chars)
+00AB..00AF (5 chars)
+00B4
+00B6..00B8 (3 chars)
+00BB..00BF (5 chars)
+00D7
+00F7
+02B9..02BA (2 chars)
+02C2..02CF (14 chars)
+02D2..02DF (14 chars)
+02E5..02ED (9 chars)
+0374..0375 (2 chars)
+037E
+0384..0385 (2 chars)
+0387
+058A
+06E9
+0F3A..0F3D (4 chars)
+169B..169C (2 chars)
+1800..180A (11 chars)
+1FBD
+1FBF..1FC1 (3 chars)
+1FCD..1FCF (3 chars)
+1FDD..1FDF (3 chars)
+1FED..1FEF (3 chars)
+1FFD..1FFE (2 chars)
+2010..2027 (24 chars)
+2035..2046 (18 chars)
+2048..204D (6 chars)
+207C..207E (3 chars)
+208C..208E (3 chars)
+2100..2101 (2 chars)
+2103..2106 (4 chars)
+2108..2109 (2 chars)
+2114
+2116..2118 (3 chars)
+211E..2123 (6 chars)
+2125
+2127
+2129
+2132
+213A
+2153..215F (13 chars)
+2190..21F3 (100 chars)
+2200..2211 (18 chars)
+2214..22F1 (222 chars)
+2300..2335 (54 chars)
+237B
+237D..2394 (24 chars)
+2396..239A (5 chars)
+2400..2426 (39 chars)
+2440..244A (11 chars)
+2500..2595 (150 chars)
+25A0..25F7 (88 chars)
+2600..2613 (20 chars)
+2619..2671 (89 chars)
+2701..2704 (4 chars)
+2706..2709 (4 chars)
+270C..2727 (28 chars)
+2729..274B (35 chars)
+274D
+274F..2752 (4 chars)
+2756
+2758..275E (7 chars)
+2761..2767 (7 chars)
+2776..2794 (31 chars)
+2798..27AF (24 chars)
+27B1..27BE (14 chars)
+2800..28FF (256 chars)
+2E80..2E99 (26 chars)
+2E9B..2EF3 (89 chars)
+2F00..2FD5 (214 chars)
+2FF0..2FFB (12 chars)
+3001..3004 (4 chars)
+3008..3020 (25 chars)
+3030
+3036..3037 (2 chars)
+303E..303F (2 chars)
+309B..309C (2 chars)
+30FB
+A490..A4A1 (18 chars)
+A4A4..A4B3 (16 chars)
+A4B5..A4C0 (12 chars)
+A4C2..A4C4 (3 chars)
+A4C6
+FD3E..FD3F (2 chars)
+FE30..FE44 (21 chars)
+FE49..FE4F (7 chars)
+FE51
+FE54
+FE56..FE5E (9 chars)
+FE60..FE61 (2 chars)
+FE64..FE66 (3 chars)
+FE68
+FE6B
+FF01..FF02 (2 chars)
+FF06..FF0A (5 chars)
+FF1B..FF20 (6 chars)
+FF3B..FF40 (6 chars)
+FF5B..FF5E (4 chars)
+FF61..FF65 (5 chars)
+FFE2..FFE4 (3 chars)
+FFE8..FFEE (7 chars)
+FFFC..FFFD (2 chars)
+
+*******************************************
+
+Property dump for: 0x80000005 (Private Use)
+
+E000..F8FF (6400 chars)
+
+*******************************************
+
+Property dump for: 0x80000000 (Uppercase)
+
+0041..005A (26 chars)
+00C0..00D6 (23 chars)
+00D8..00DE (7 chars)
+0100
+0102
+0104
+0106
+0108
+010A
+010C
+010E
+0110
+0112
+0114
+0116
+0118
+011A
+011C
+011E
+0120
+0122
+0124
+0126
+0128
+012A
+012C
+012E
+0130
+0132
+0134
+0136
+0139
+013B
+013D
+013F
+0141
+0143
+0145
+0147
+014A
+014C
+014E
+0150
+0152
+0154
+0156
+0158
+015A
+015C
+015E
+0160
+0162
+0164
+0166
+0168
+016A
+016C
+016E
+0170
+0172
+0174
+0176
+0178..0179 (2 chars)
+017B
+017D
+0181..0182 (2 chars)
+0184
+0186..0187 (2 chars)
+0189..018B (3 chars)
+018E..0191 (4 chars)
+0193..0194 (2 chars)
+0196..0198 (3 chars)
+019C..019D (2 chars)
+019F..01A0 (2 chars)
+01A2
+01A4
+01A6..01A7 (2 chars)
+01A9
+01AC
+01AE..01AF (2 chars)
+01B1..01B3 (3 chars)
+01B5
+01B7..01B8 (2 chars)
+01BC
+01C4
+01C7
+01CA
+01CD
+01CF
+01D1
+01D3
+01D5
+01D7
+01D9
+01DB
+01DE
+01E0
+01E2
+01E4
+01E6
+01E8
+01EA
+01EC
+01EE
+01F1
+01F4
+01F6..01F8 (3 chars)
+01FA
+01FC
+01FE
+0200
+0202
+0204
+0206
+0208
+020A
+020C
+020E
+0210
+0212
+0214
+0216
+0218
+021A
+021C
+021E
+0222
+0224
+0226
+0228
+022A
+022C
+022E
+0230
+0232
+0386
+0388..038A (3 chars)
+038C
+038E..038F (2 chars)
+0391..03A1 (17 chars)
+03A3..03AB (9 chars)
+03D2..03D4 (3 chars)
+03DA
+03DC
+03DE
+03E0
+03E2
+03E4
+03E6
+03E8
+03EA
+03EC
+03EE
+0400..042F (48 chars)
+0460
+0462
+0464
+0466
+0468
+046A
+046C
+046E
+0470
+0472
+0474
+0476
+0478
+047A
+047C
+047E
+0480
+048C
+048E
+0490
+0492
+0494
+0496
+0498
+049A
+049C
+049E
+04A0
+04A2
+04A4
+04A6
+04A8
+04AA
+04AC
+04AE
+04B0
+04B2
+04B4
+04B6
+04B8
+04BA
+04BC
+04BE
+04C0..04C1 (2 chars)
+04C3
+04C7
+04CB
+04D0
+04D2
+04D4
+04D6
+04D8
+04DA
+04DC
+04DE
+04E0
+04E2
+04E4
+04E6
+04E8
+04EA
+04EC
+04EE
+04F0
+04F2
+04F4
+04F8
+0531..0556 (38 chars)
+10A0..10C5 (38 chars)
+1E00
+1E02
+1E04
+1E06
+1E08
+1E0A
+1E0C
+1E0E
+1E10
+1E12
+1E14
+1E16
+1E18
+1E1A
+1E1C
+1E1E
+1E20
+1E22
+1E24
+1E26
+1E28
+1E2A
+1E2C
+1E2E
+1E30
+1E32
+1E34
+1E36
+1E38
+1E3A
+1E3C
+1E3E
+1E40
+1E42
+1E44
+1E46
+1E48
+1E4A
+1E4C
+1E4E
+1E50
+1E52
+1E54
+1E56
+1E58
+1E5A
+1E5C
+1E5E
+1E60
+1E62
+1E64
+1E66
+1E68
+1E6A
+1E6C
+1E6E
+1E70
+1E72
+1E74
+1E76
+1E78
+1E7A
+1E7C
+1E7E
+1E80
+1E82
+1E84
+1E86
+1E88
+1E8A
+1E8C
+1E8E
+1E90
+1E92
+1E94
+1EA0
+1EA2
+1EA4
+1EA6
+1EA8
+1EAA
+1EAC
+1EAE
+1EB0
+1EB2
+1EB4
+1EB6
+1EB8
+1EBA
+1EBC
+1EBE
+1EC0
+1EC2
+1EC4
+1EC6
+1EC8
+1ECA
+1ECC
+1ECE
+1ED0
+1ED2
+1ED4
+1ED6
+1ED8
+1EDA
+1EDC
+1EDE
+1EE0
+1EE2
+1EE4
+1EE6
+1EE8
+1EEA
+1EEC
+1EEE
+1EF0
+1EF2
+1EF4
+1EF6
+1EF8
+1F08..1F0F (8 chars)
+1F18..1F1D (6 chars)
+1F28..1F2F (8 chars)
+1F38..1F3F (8 chars)
+1F48..1F4D (6 chars)
+1F59
+1F5B
+1F5D
+1F5F
+1F68..1F6F (8 chars)
+1FB8..1FBB (4 chars)
+1FC8..1FCB (4 chars)
+1FD8..1FDB (4 chars)
+1FE8..1FEC (5 chars)
+1FF8..1FFB (4 chars)
+2102
+2107
+210B..210D (3 chars)
+2110..2112 (3 chars)
+2115
+2119..211D (5 chars)
+2124
+2126
+2128
+212A..212D (4 chars)
+2130..2131 (2 chars)
+2133
+2160..216F (16 chars)
+24B6..24CF (26 chars)
+FF21..FF3A (26 chars)
+
+*******************************************
+
+Property dump for: 0x80000001 (Lowercase)
+
+0061..007A (26 chars)
+00AA
+00B5
+00BA
+00DF..00F6 (24 chars)
+00F8..00FF (8 chars)
+0101
+0103
+0105
+0107
+0109
+010B
+010D
+010F
+0111
+0113
+0115
+0117
+0119
+011B
+011D
+011F
+0121
+0123
+0125
+0127
+0129
+012B
+012D
+012F
+0131
+0133
+0135
+0137..0138 (2 chars)
+013A
+013C
+013E
+0140
+0142
+0144
+0146
+0148..0149 (2 chars)
+014B
+014D
+014F
+0151
+0153
+0155
+0157
+0159
+015B
+015D
+015F
+0161
+0163
+0165
+0167
+0169
+016B
+016D
+016F
+0171
+0173
+0175
+0177
+017A
+017C
+017E..0180 (3 chars)
+0183
+0185
+0188
+018C..018D (2 chars)
+0192
+0195
+0199..019B (3 chars)
+019E
+01A1
+01A3
+01A5
+01A8
+01AA..01AB (2 chars)
+01AD
+01B0
+01B4
+01B6
+01B9..01BA (2 chars)
+01BD..01BF (3 chars)
+01C6
+01C9
+01CC
+01CE
+01D0
+01D2
+01D4
+01D6
+01D8
+01DA
+01DC..01DD (2 chars)
+01DF
+01E1
+01E3
+01E5
+01E7
+01E9
+01EB
+01ED
+01EF..01F0 (2 chars)
+01F3
+01F5
+01F9
+01FB
+01FD
+01FF
+0201
+0203
+0205
+0207
+0209
+020B
+020D
+020F
+0211
+0213
+0215
+0217
+0219
+021B
+021D
+021F
+0223
+0225
+0227
+0229
+022B
+022D
+022F
+0231
+0233
+0250..02AD (94 chars)
+02B0..02B8 (9 chars)
+02C0..02C1 (2 chars)
+02E0..02E4 (5 chars)
+0390
+03AC..03CE (35 chars)
+03D0..03D1 (2 chars)
+03D5..03D7 (3 chars)
+03DB
+03DD
+03DF
+03E1
+03E3
+03E5
+03E7
+03E9
+03EB
+03ED
+03EF..03F3 (5 chars)
+0430..045F (48 chars)
+0461
+0463
+0465
+0467
+0469
+046B
+046D
+046F
+0471
+0473
+0475
+0477
+0479
+047B
+047D
+047F
+0481
+048D
+048F
+0491
+0493
+0495
+0497
+0499
+049B
+049D
+049F
+04A1
+04A3
+04A5
+04A7
+04A9
+04AB
+04AD
+04AF
+04B1
+04B3
+04B5
+04B7
+04B9
+04BB
+04BD
+04BF
+04C2
+04C4
+04C8
+04CC
+04D1
+04D3
+04D5
+04D7
+04D9
+04DB
+04DD
+04DF
+04E1
+04E3
+04E5
+04E7
+04E9
+04EB
+04ED
+04EF
+04F1
+04F3
+04F5
+04F9
+0561..0587 (39 chars)
+1E01
+1E03
+1E05
+1E07
+1E09
+1E0B
+1E0D
+1E0F
+1E11
+1E13
+1E15
+1E17
+1E19
+1E1B
+1E1D
+1E1F
+1E21
+1E23
+1E25
+1E27
+1E29
+1E2B
+1E2D
+1E2F
+1E31
+1E33
+1E35
+1E37
+1E39
+1E3B
+1E3D
+1E3F
+1E41
+1E43
+1E45
+1E47
+1E49
+1E4B
+1E4D
+1E4F
+1E51
+1E53
+1E55
+1E57
+1E59
+1E5B
+1E5D
+1E5F
+1E61
+1E63
+1E65
+1E67
+1E69
+1E6B
+1E6D
+1E6F
+1E71
+1E73
+1E75
+1E77
+1E79
+1E7B
+1E7D
+1E7F
+1E81
+1E83
+1E85
+1E87
+1E89
+1E8B
+1E8D
+1E8F
+1E91
+1E93
+1E95..1E9B (7 chars)
+1EA1
+1EA3
+1EA5
+1EA7
+1EA9
+1EAB
+1EAD
+1EAF
+1EB1
+1EB3
+1EB5
+1EB7
+1EB9
+1EBB
+1EBD
+1EBF
+1EC1
+1EC3
+1EC5
+1EC7
+1EC9
+1ECB
+1ECD
+1ECF
+1ED1
+1ED3
+1ED5
+1ED7
+1ED9
+1EDB
+1EDD
+1EDF
+1EE1
+1EE3
+1EE5
+1EE7
+1EE9
+1EEB
+1EED
+1EEF
+1EF1
+1EF3
+1EF5
+1EF7
+1EF9
+1F00..1F07 (8 chars)
+1F10..1F15 (6 chars)
+1F20..1F27 (8 chars)
+1F30..1F37 (8 chars)
+1F40..1F45 (6 chars)
+1F50..1F57 (8 chars)
+1F60..1F67 (8 chars)
+1F70..1F7D (14 chars)
+1F80..1F87 (8 chars)
+1F90..1F97 (8 chars)
+1FA0..1FA7 (8 chars)
+1FB0..1FB4 (5 chars)
+1FB6..1FB7 (2 chars)
+1FBE
+1FC2..1FC4 (3 chars)
+1FC6..1FC7 (2 chars)
+1FD0..1FD3 (4 chars)
+1FD6..1FD7 (2 chars)
+1FE0..1FE7 (8 chars)
+1FF2..1FF4 (3 chars)
+1FF6..1FF7 (2 chars)
+207F
+210A
+210E..210F (2 chars)
+2113
+212F
+2134
+2139
+2170..217F (16 chars)
+24D0..24E9 (26 chars)
+FB00..FB06 (7 chars)
+FB13..FB17 (5 chars)
+FF41..FF5A (26 chars)
+
+*******************************************
+
+Property dump for: 0x80000002 (Titlecase)
+
+01C5
+01C8
+01CB
+01F2
+1F88..1F8F (8 chars)
+1F98..1F9F (8 chars)
+1FA8..1FAF (8 chars)
+1FBC
+1FCC
+1FFC
+
+*******************************************
+
+Property dump for: 0x80000006 (Low Surrogate)
+
+DC00..DFFF (1024 chars)
+
+*******************************************
+
+Property dump for: 0x80000007 (High Surrogate)
+
+D800..DB7F (896 chars)
+
+*******************************************
+
+Property dump for: 0x80000008 (Private Use High Surrogate)
+
+DB80..DBFF (128 chars)
+
+*******************************************
+
+Property dump for: 0x00000000 (Unassigned Code Value)
+
+0220..0221 (2 chars)
+0234..024F (28 chars)
+02AE..02AF (2 chars)
+02EF..02FF (17 chars)
+034F..035F (17 chars)
+0363..0373 (17 chars)
+0376..0379 (4 chars)
+037B..037D (3 chars)
+037F..0383 (5 chars)
+038B
+038D
+03A2
+03CF
+03D8..03D9 (2 chars)
+03F4..03FF (12 chars)
+0487
+048A..048B (2 chars)
+04C5..04C6 (2 chars)
+04C9..04CA (2 chars)
+04CD..04CF (3 chars)
+04F6..04F7 (2 chars)
+04FA..0530 (55 chars)
+0557..0558 (2 chars)
+0560
+0588
+058B..0590 (6 chars)
+05A2
+05BA
+05C5..05CF (11 chars)
+05EB..05EF (5 chars)
+05F5..060B (23 chars)
+060D..061A (14 chars)
+061C..061E (3 chars)
+0620
+063B..063F (5 chars)
+0656..065F (10 chars)
+066E..066F (2 chars)
+06EE..06EF (2 chars)
+06FF
+070E
+072D..072F (3 chars)
+074B..077F (53 chars)
+07B1..0900 (336 chars)
+0904
+093A..093B (2 chars)
+094E..094F (2 chars)
+0955..0957 (3 chars)
+0971..0980 (16 chars)
+0984
+098D..098E (2 chars)
+0991..0992 (2 chars)
+09A9
+09B1
+09B3..09B5 (3 chars)
+09BA..09BB (2 chars)
+09BD
+09C5..09C6 (2 chars)
+09C9..09CA (2 chars)
+09CE..09D6 (9 chars)
+09D8..09DB (4 chars)
+09DE
+09E4..09E5 (2 chars)
+09FB..0A01 (7 chars)
+0A03..0A04 (2 chars)
+0A0B..0A0E (4 chars)
+0A11..0A12 (2 chars)
+0A29
+0A31
+0A34
+0A37
+0A3A..0A3B (2 chars)
+0A3D
+0A43..0A46 (4 chars)
+0A49..0A4A (2 chars)
+0A4E..0A58 (11 chars)
+0A5D
+0A5F..0A65 (7 chars)
+0A75..0A80 (12 chars)
+0A84
+0A8C
+0A8E
+0A92
+0AA9
+0AB1
+0AB4
+0ABA..0ABB (2 chars)
+0AC6
+0ACA
+0ACE..0ACF (2 chars)
+0AD1..0ADF (15 chars)
+0AE1..0AE5 (5 chars)
+0AF0..0B00 (17 chars)
+0B04
+0B0D..0B0E (2 chars)
+0B11..0B12 (2 chars)
+0B29
+0B31
+0B34..0B35 (2 chars)
+0B3A..0B3B (2 chars)
+0B44..0B46 (3 chars)
+0B49..0B4A (2 chars)
+0B4E..0B55 (8 chars)
+0B58..0B5B (4 chars)
+0B5E
+0B62..0B65 (4 chars)
+0B71..0B81 (17 chars)
+0B84
+0B8B..0B8D (3 chars)
+0B91
+0B96..0B98 (3 chars)
+0B9B
+0B9D
+0BA0..0BA2 (3 chars)
+0BA5..0BA7 (3 chars)
+0BAB..0BAD (3 chars)
+0BB6
+0BBA..0BBD (4 chars)
+0BC3..0BC5 (3 chars)
+0BC9
+0BCE..0BD6 (9 chars)
+0BD8..0BE6 (15 chars)
+0BF3..0C00 (14 chars)
+0C04
+0C0D
+0C11
+0C29
+0C34
+0C3A..0C3D (4 chars)
+0C45
+0C49
+0C4E..0C54 (7 chars)
+0C57..0C5F (9 chars)
+0C62..0C65 (4 chars)
+0C70..0C81 (18 chars)
+0C84
+0C8D
+0C91
+0CA9
+0CB4
+0CBA..0CBD (4 chars)
+0CC5
+0CC9
+0CCE..0CD4 (7 chars)
+0CD7..0CDD (7 chars)
+0CDF
+0CE2..0CE5 (4 chars)
+0CF0..0D01 (18 chars)
+0D04
+0D0D
+0D11
+0D29
+0D3A..0D3D (4 chars)
+0D44..0D45 (2 chars)
+0D49
+0D4E..0D56 (9 chars)
+0D58..0D5F (8 chars)
+0D62..0D65 (4 chars)
+0D70..0D81 (18 chars)
+0D84
+0D97..0D99 (3 chars)
+0DB2
+0DBC
+0DBE..0DBF (2 chars)
+0DC7..0DC9 (3 chars)
+0DCB..0DCE (4 chars)
+0DD5
+0DD7
+0DE0..0DF1 (18 chars)
+0DF5..0E00 (12 chars)
+0E3B..0E3E (4 chars)
+0E5C..0E80 (37 chars)
+0E83
+0E85..0E86 (2 chars)
+0E89
+0E8B..0E8C (2 chars)
+0E8E..0E93 (6 chars)
+0E98
+0EA0
+0EA4
+0EA6
+0EA8..0EA9 (2 chars)
+0EAC
+0EBA
+0EBE..0EBF (2 chars)
+0EC5
+0EC7
+0ECE..0ECF (2 chars)
+0EDA..0EDB (2 chars)
+0EDE..0EFF (34 chars)
+0F48
+0F6B..0F70 (6 chars)
+0F8C..0F8F (4 chars)
+0F98
+0FBD
+0FCD..0FCE (2 chars)
+0FD0..0FFF (48 chars)
+1022
+1028
+102B
+1033..1035 (3 chars)
+103A..103F (6 chars)
+105A..109F (70 chars)
+10C6..10CF (10 chars)
+10F7..10FA (4 chars)
+10FC..10FF (4 chars)
+115A..115E (5 chars)
+11A3..11A7 (5 chars)
+11FA..11FF (6 chars)
+1207
+1247
+1249
+124E..124F (2 chars)
+1257
+1259
+125E..125F (2 chars)
+1287
+1289
+128E..128F (2 chars)
+12AF
+12B1
+12B6..12B7 (2 chars)
+12BF
+12C1
+12C6..12C7 (2 chars)
+12CF
+12D7
+12EF
+130F
+1311
+1316..1317 (2 chars)
+131F
+1347
+135B..1360 (6 chars)
+137D..139F (35 chars)
+13F5..1400 (12 chars)
+1677..167F (9 chars)
+169D..169F (3 chars)
+16F1..177F (143 chars)
+17DD..17DF (3 chars)
+17EA..17FF (22 chars)
+180F
+181A..181F (6 chars)
+1878..187F (8 chars)
+18AA..1DFF (1366 chars)
+1E9C..1E9F (4 chars)
+1EFA..1EFF (6 chars)
+1F16..1F17 (2 chars)
+1F1E..1F1F (2 chars)
+1F46..1F47 (2 chars)
+1F4E..1F4F (2 chars)
+1F58
+1F5A
+1F5C
+1F5E
+1F7E..1F7F (2 chars)
+1FB5
+1FC5
+1FD4..1FD5 (2 chars)
+1FDC
+1FF0..1FF1 (2 chars)
+1FF5
+1FFF
+2047
+204E..2069 (28 chars)
+2071..2073 (3 chars)
+208F..209F (17 chars)
+20B0..20CF (32 chars)
+20E4..20FF (28 chars)
+213B..2152 (24 chars)
+2184..218F (12 chars)
+21F4..21FF (12 chars)
+22F2..22FF (14 chars)
+237C
+239B..23FF (101 chars)
+2427..243F (25 chars)
+244B..245F (21 chars)
+24EB..24FF (21 chars)
+2596..259F (10 chars)
+25F8..25FF (8 chars)
+2614..2618 (5 chars)
+2672..2700 (143 chars)
+2705
+270A..270B (2 chars)
+2728
+274C
+274E
+2753..2755 (3 chars)
+2757
+275F..2760 (2 chars)
+2768..2775 (14 chars)
+2795..2797 (3 chars)
+27B0
+27BF..27FF (65 chars)
+2900..2E7F (1408 chars)
+2E9A
+2EF4..2EFF (12 chars)
+2FD6..2FEF (26 chars)
+2FFC..2FFF (4 chars)
+303B..303D (3 chars)
+3040
+3095..3098 (4 chars)
+309F..30A0 (2 chars)
+30FF..3104 (6 chars)
+312D..3130 (4 chars)
+318F
+31B8..31FF (72 chars)
+321D..321F (3 chars)
+3244..325F (28 chars)
+327C..327E (3 chars)
+32B1..32BF (15 chars)
+32CC..32CF (4 chars)
+32FF
+3377..337A (4 chars)
+33DE..33DF (2 chars)
+33FF
+4DB6..4DFF (74 chars)
+9FA6..9FFF (90 chars)
+A48D..A48F (3 chars)
+A4A2..A4A3 (2 chars)
+A4B4
+A4C1
+A4C5
+A4C7..ABFF (1849 chars)
+D7A4..D7FF (92 chars)
+FA2E..FAFF (210 chars)
+FB07..FB12 (12 chars)
+FB18..FB1C (5 chars)
+FB37
+FB3D
+FB3F
+FB42
+FB45
+FBB2..FBD2 (33 chars)
+FD40..FD4F (16 chars)
+FD90..FD91 (2 chars)
+FDC8..FDEF (40 chars)
+FDFC..FE1F (36 chars)
+FE24..FE2F (12 chars)
+FE45..FE48 (4 chars)
+FE53
+FE67
+FE6C..FE6F (4 chars)
+FE73
+FE75
+FEFD..FEFE (2 chars)
+FF00
+FF5F..FF60 (2 chars)
+FFBF..FFC1 (3 chars)
+FFC8..FFC9 (2 chars)
+FFD0..FFD1 (2 chars)
+FFD8..FFD9 (2 chars)
+FFDD..FFDF (3 chars)
+FFE7
+FFEF..FFF8 (10 chars)
+
diff --git a/contrib/perl5/lib/unicode/README.Ethiopic b/contrib/perl5/lib/unicode/README.Ethiopic
new file mode 100644
index 0000000..f8ec21f
--- /dev/null
+++ b/contrib/perl5/lib/unicode/README.Ethiopic
@@ -0,0 +1,18 @@
+[[The UnicodeData-Latest.txt file has NOT (yet) been updated for the Ethiopic
+additions. You will lose the Ethiopic *.pl files if you run 'make clean' in
+./lib/unicode. --GSAR]]
+
+This package contains extensions to the property files generated from the
+UnicodeData-Latest.txt file. The UnicodeData file comes from the Unicode
+organization's ftp site and has not been included with modifications here.
+Updates for Ethiopic script to the UnicodeData file under the Unicode 3.0
+specification is being discussed at this time with the responsible parties
+within Unicode.
+
+"MakeEthiopicSyllables.PL" will create the series Is/Y0.pl .. Is/Y13.pl
+files to match the sYllabic class of an Ethiopic character. These tests
+may be extended to other syllabaries as well.
+
+The author would appreciate comments and suggestions on this effort:
+
+ Daniel Yacob dmulholl@cs.indiana.edu
diff --git a/contrib/perl5/lib/unicode/ReadMe.txt b/contrib/perl5/lib/unicode/ReadMe.txt
new file mode 100644
index 0000000..c2c4aee
--- /dev/null
+++ b/contrib/perl5/lib/unicode/ReadMe.txt
@@ -0,0 +1,45 @@
+June 23, 1999
+
+This directory contains the initial release for Unicode 3.0.
+
+This release consists of corrections and additions to the
+Unicode Character Database, to match the publication of
+The Unicode Standard, Version 3.0.
+
+Detailed documentation of the files constituting the
+Unicode Character Database (contributory data files for
+the standard itself) can now be found in
+UnicodeCharacterDatabase.html.
+
+--------------------------------------------------------------------------
+NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+
+The files have been copied from
+
+ ftp://ftp.unicode.org/Public/3.0-Update/
+
+and most of them have been renamed to better fit 8.3 filename limitations.
+
+long name at unicode.org short name latest '#'
+------------------------ ---------- ----------
+ArabicShaping-#.txt ArabShap.txt 2
+Blocks-#.txt Blocks.txt 3
+CompositionExclusions-#.txt CompExcl.txt 1
+EastAsianWidth-#.txt EAWidth.txt 3
+Index-#.txt Index.txt 3.0.0
+Jamo-#.txt Jamo.txt 2
+LineBreak-#.txt LineBrk.txt 5
+NamesList-#.txt Names.txt 3.0.0
+NamesList-#.html NamesList.html 1
+PropList-#.txt Props.txt 3.0.0
+SpecialCasing-#.txt SpecCase.txt 2
+UnicodeData-#.txt Unicode.300 3.0.0
+UnicodeData-#.html Unicode3.html 3.0.0
+UnicodeCharacterDatabase-#.html UCD300.html 3.0.0
+
+The *.pl files are generated from these files by the 'mktables.PL' script.
+
+While the files have been renamed the links in the html files haven't.
+
+--
+jhi@iki.fi
diff --git a/contrib/perl5/lib/unicode/SpecCase.txt b/contrib/perl5/lib/unicode/SpecCase.txt
new file mode 100644
index 0000000..af002ef
--- /dev/null
+++ b/contrib/perl5/lib/unicode/SpecCase.txt
@@ -0,0 +1,219 @@
+# SpecialCasing-2.txt
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# These are informative character properties.
+#
+# Send comments to mark@unicode.org
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <entry> := <case_mapping> <condition_list>? (<s>* "#" <comment>)?
+#
+# <case_mapping> := <source> <sep> <lower> <sep> <title> <sep> <upper> <sep>
+#
+# <source> := <code_point>
+# <sep> := <s>* ";" <s>*
+# <lower> := <code_point_list>
+# <title> := <code_point_list>
+# <upper> := <code_point_list>
+# <code_point_list> := <code_point> (<s>+ <code_point>)*
+# <code_point> := <hex><hex><hex><hex>
+# <hex> := [0-1A-Fa-f]
+# <s> := <space>
+#
+# <condition_list> := <locale>? (<s>+ <context>)*
+# <locale> := <ISO_3166_code> ( "_" <ISO_639_code> )? ( "_" <variant> )?
+# <ISO_3166_code> := 2-letter country code,
+# as in http://www.unicode.org/unicode/onlinedat/countries.html
+# <ISO_639_code> := 2-letter code,
+# as in http://www.unicode.org/unicode/onlinedat/languages.html
+# <context> := "FINAL" | "NON_FINAL" | "MODERN" | "NON_MODERN"
+#
+# A condition list overrides the normal behavior if any of the listed conditions is true.
+# FINAL: The letter is not followed by a letter of category L* (e.g. Ll, Lt, Lu, Lm, or Lo).
+# MODERN: The mapping is only used for modern text.
+# Conditions preceded by "NON_" represent the negation of the condition
+#
+# New contexts may be added in the future.
+# Parsers of this file must be prepared to deal with that situation.
+# Additional whitespace around elements is optional. Blank lines are ignored in parsing.
+# On any line, all text following "#" is a comment, and are ignored in parsing.
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 006E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+# It MUST be in normalized form--moved to the end of any sequence of combining marks.
+# This is because logically it represents a following base character!
+# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; FINAL; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would normalize in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; FINAL; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; NON_FINAL; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Turkish
+
+0049; 0131; 0049; 0049; TR; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; TR; # LATIN SMALL LETTER I
+
+# Note: the following cases are already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; TR; # LATIN SMALL LETTER DOTLESS I
+# 0130; 0069; 0130; 0130; TR; # LATIN CAPITAL LETTER I WITH DOT ABOVE
diff --git a/contrib/perl5/lib/unicode/To/Digit.pl b/contrib/perl5/lib/unicode/To/Digit.pl
new file mode 100644
index 0000000..a96bc1c
--- /dev/null
+++ b/contrib/perl5/lib/unicode/To/Digit.pl
@@ -0,0 +1,30 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0030 0039 0000
+00b2 00b3 0002
+00b9 0001
+0660 0669 0000
+06f0 06f9 0000
+0966 096f 0000
+09e6 09ef 0000
+0a66 0a6f 0000
+0ae6 0aef 0000
+0b66 0b6f 0000
+0be7 0bef 0001
+0c66 0c6f 0000
+0ce6 0cef 0000
+0d66 0d6f 0000
+0e50 0e59 0000
+0ed0 0ed9 0000
+0f20 0f29 0000
+1040 1049 0000
+1369 1371 0001
+17e0 17e9 0000
+1810 1819 0000
+2070 0000
+2074 2079 0004
+2080 2089 0000
+ff10 ff19 0000
+END
diff --git a/contrib/perl5/lib/unicode/To/Lower.pl b/contrib/perl5/lib/unicode/To/Lower.pl
new file mode 100644
index 0000000..a78a7e4
--- /dev/null
+++ b/contrib/perl5/lib/unicode/To/Lower.pl
@@ -0,0 +1,401 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0041 005a 0061
+00c0 00d6 00e0
+00d8 00de 00f8
+0100 0101
+0102 0103
+0104 0105
+0106 0107
+0108 0109
+010a 010b
+010c 010d
+010e 010f
+0110 0111
+0112 0113
+0114 0115
+0116 0117
+0118 0119
+011a 011b
+011c 011d
+011e 011f
+0120 0121
+0122 0123
+0124 0125
+0126 0127
+0128 0129
+012a 012b
+012c 012d
+012e 012f
+0130 0069
+0132 0133
+0134 0135
+0136 0137
+0139 013a
+013b 013c
+013d 013e
+013f 0140
+0141 0142
+0143 0144
+0145 0146
+0147 0148
+014a 014b
+014c 014d
+014e 014f
+0150 0151
+0152 0153
+0154 0155
+0156 0157
+0158 0159
+015a 015b
+015c 015d
+015e 015f
+0160 0161
+0162 0163
+0164 0165
+0166 0167
+0168 0169
+016a 016b
+016c 016d
+016e 016f
+0170 0171
+0172 0173
+0174 0175
+0176 0177
+0178 00ff
+0179 017a
+017b 017c
+017d 017e
+0181 0253
+0182 0183
+0184 0185
+0186 0254
+0187 0188
+0189 018a 0256
+018b 018c
+018e 01dd
+018f 0259
+0190 025b
+0191 0192
+0193 0260
+0194 0263
+0196 0269
+0197 0268
+0198 0199
+019c 026f
+019d 0272
+019f 0275
+01a0 01a1
+01a2 01a3
+01a4 01a5
+01a6 0280
+01a7 01a8
+01a9 0283
+01ac 01ad
+01ae 0288
+01af 01b0
+01b1 01b2 028a
+01b3 01b4
+01b5 01b6
+01b7 0292
+01b8 01b9
+01bc 01bd
+01c4 01c6
+01c5 01c6
+01c7 01c9
+01c8 01c9
+01ca 01cc
+01cb 01cc
+01cd 01ce
+01cf 01d0
+01d1 01d2
+01d3 01d4
+01d5 01d6
+01d7 01d8
+01d9 01da
+01db 01dc
+01de 01df
+01e0 01e1
+01e2 01e3
+01e4 01e5
+01e6 01e7
+01e8 01e9
+01ea 01eb
+01ec 01ed
+01ee 01ef
+01f1 01f3
+01f2 01f3
+01f4 01f5
+01f6 0195
+01f7 01bf
+01f8 01f9
+01fa 01fb
+01fc 01fd
+01fe 01ff
+0200 0201
+0202 0203
+0204 0205
+0206 0207
+0208 0209
+020a 020b
+020c 020d
+020e 020f
+0210 0211
+0212 0213
+0214 0215
+0216 0217
+0218 0219
+021a 021b
+021c 021d
+021e 021f
+0222 0223
+0224 0225
+0226 0227
+0228 0229
+022a 022b
+022c 022d
+022e 022f
+0230 0231
+0232 0233
+0386 03ac
+0388 038a 03ad
+038c 03cc
+038e 038f 03cd
+0391 03a1 03b1
+03a3 03ab 03c3
+03da 03db
+03dc 03dd
+03de 03df
+03e0 03e1
+03e2 03e3
+03e4 03e5
+03e6 03e7
+03e8 03e9
+03ea 03eb
+03ec 03ed
+03ee 03ef
+0400 040f 0450
+0410 042f 0430
+0460 0461
+0462 0463
+0464 0465
+0466 0467
+0468 0469
+046a 046b
+046c 046d
+046e 046f
+0470 0471
+0472 0473
+0474 0475
+0476 0477
+0478 0479
+047a 047b
+047c 047d
+047e 047f
+0480 0481
+048c 048d
+048e 048f
+0490 0491
+0492 0493
+0494 0495
+0496 0497
+0498 0499
+049a 049b
+049c 049d
+049e 049f
+04a0 04a1
+04a2 04a3
+04a4 04a5
+04a6 04a7
+04a8 04a9
+04aa 04ab
+04ac 04ad
+04ae 04af
+04b0 04b1
+04b2 04b3
+04b4 04b5
+04b6 04b7
+04b8 04b9
+04ba 04bb
+04bc 04bd
+04be 04bf
+04c1 04c2
+04c3 04c4
+04c7 04c8
+04cb 04cc
+04d0 04d1
+04d2 04d3
+04d4 04d5
+04d6 04d7
+04d8 04d9
+04da 04db
+04dc 04dd
+04de 04df
+04e0 04e1
+04e2 04e3
+04e4 04e5
+04e6 04e7
+04e8 04e9
+04ea 04eb
+04ec 04ed
+04ee 04ef
+04f0 04f1
+04f2 04f3
+04f4 04f5
+04f8 04f9
+0531 0556 0561
+1e00 1e01
+1e02 1e03
+1e04 1e05
+1e06 1e07
+1e08 1e09
+1e0a 1e0b
+1e0c 1e0d
+1e0e 1e0f
+1e10 1e11
+1e12 1e13
+1e14 1e15
+1e16 1e17
+1e18 1e19
+1e1a 1e1b
+1e1c 1e1d
+1e1e 1e1f
+1e20 1e21
+1e22 1e23
+1e24 1e25
+1e26 1e27
+1e28 1e29
+1e2a 1e2b
+1e2c 1e2d
+1e2e 1e2f
+1e30 1e31
+1e32 1e33
+1e34 1e35
+1e36 1e37
+1e38 1e39
+1e3a 1e3b
+1e3c 1e3d
+1e3e 1e3f
+1e40 1e41
+1e42 1e43
+1e44 1e45
+1e46 1e47
+1e48 1e49
+1e4a 1e4b
+1e4c 1e4d
+1e4e 1e4f
+1e50 1e51
+1e52 1e53
+1e54 1e55
+1e56 1e57
+1e58 1e59
+1e5a 1e5b
+1e5c 1e5d
+1e5e 1e5f
+1e60 1e61
+1e62 1e63
+1e64 1e65
+1e66 1e67
+1e68 1e69
+1e6a 1e6b
+1e6c 1e6d
+1e6e 1e6f
+1e70 1e71
+1e72 1e73
+1e74 1e75
+1e76 1e77
+1e78 1e79
+1e7a 1e7b
+1e7c 1e7d
+1e7e 1e7f
+1e80 1e81
+1e82 1e83
+1e84 1e85
+1e86 1e87
+1e88 1e89
+1e8a 1e8b
+1e8c 1e8d
+1e8e 1e8f
+1e90 1e91
+1e92 1e93
+1e94 1e95
+1ea0 1ea1
+1ea2 1ea3
+1ea4 1ea5
+1ea6 1ea7
+1ea8 1ea9
+1eaa 1eab
+1eac 1ead
+1eae 1eaf
+1eb0 1eb1
+1eb2 1eb3
+1eb4 1eb5
+1eb6 1eb7
+1eb8 1eb9
+1eba 1ebb
+1ebc 1ebd
+1ebe 1ebf
+1ec0 1ec1
+1ec2 1ec3
+1ec4 1ec5
+1ec6 1ec7
+1ec8 1ec9
+1eca 1ecb
+1ecc 1ecd
+1ece 1ecf
+1ed0 1ed1
+1ed2 1ed3
+1ed4 1ed5
+1ed6 1ed7
+1ed8 1ed9
+1eda 1edb
+1edc 1edd
+1ede 1edf
+1ee0 1ee1
+1ee2 1ee3
+1ee4 1ee5
+1ee6 1ee7
+1ee8 1ee9
+1eea 1eeb
+1eec 1eed
+1eee 1eef
+1ef0 1ef1
+1ef2 1ef3
+1ef4 1ef5
+1ef6 1ef7
+1ef8 1ef9
+1f08 1f0f 1f00
+1f18 1f1d 1f10
+1f28 1f2f 1f20
+1f38 1f3f 1f30
+1f48 1f4d 1f40
+1f59 1f51
+1f5b 1f53
+1f5d 1f55
+1f5f 1f57
+1f68 1f6f 1f60
+1f88 1f8f 1f80
+1f98 1f9f 1f90
+1fa8 1faf 1fa0
+1fb8 1fb9 1fb0
+1fba 1fbb 1f70
+1fbc 1fb3
+1fc8 1fcb 1f72
+1fcc 1fc3
+1fd8 1fd9 1fd0
+1fda 1fdb 1f76
+1fe8 1fe9 1fe0
+1fea 1feb 1f7a
+1fec 1fe5
+1ff8 1ff9 1f78
+1ffa 1ffb 1f7c
+1ffc 1ff3
+2126 03c9
+212a 006b
+212b 00e5
+2160 216f 2170
+24b6 24cf 24d0
+ff21 ff3a ff41
+END
diff --git a/contrib/perl5/lib/unicode/To/Title.pl b/contrib/perl5/lib/unicode/To/Title.pl
new file mode 100644
index 0000000..d8f5c04
--- /dev/null
+++ b/contrib/perl5/lib/unicode/To/Title.pl
@@ -0,0 +1,411 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0061 007a 0041
+00b5 039c
+00e0 00f6 00c0
+00f8 00fe 00d8
+00ff 0178
+0101 0100
+0103 0102
+0105 0104
+0107 0106
+0109 0108
+010b 010a
+010d 010c
+010f 010e
+0111 0110
+0113 0112
+0115 0114
+0117 0116
+0119 0118
+011b 011a
+011d 011c
+011f 011e
+0121 0120
+0123 0122
+0125 0124
+0127 0126
+0129 0128
+012b 012a
+012d 012c
+012f 012e
+0131 0049
+0133 0132
+0135 0134
+0137 0136
+013a 0139
+013c 013b
+013e 013d
+0140 013f
+0142 0141
+0144 0143
+0146 0145
+0148 0147
+014b 014a
+014d 014c
+014f 014e
+0151 0150
+0153 0152
+0155 0154
+0157 0156
+0159 0158
+015b 015a
+015d 015c
+015f 015e
+0161 0160
+0163 0162
+0165 0164
+0167 0166
+0169 0168
+016b 016a
+016d 016c
+016f 016e
+0171 0170
+0173 0172
+0175 0174
+0177 0176
+017a 0179
+017c 017b
+017e 017d
+017f 0053
+0183 0182
+0185 0184
+0188 0187
+018c 018b
+0192 0191
+0195 01f6
+0199 0198
+01a1 01a0
+01a3 01a2
+01a5 01a4
+01a8 01a7
+01ad 01ac
+01b0 01af
+01b4 01b3
+01b6 01b5
+01b9 01b8
+01bd 01bc
+01bf 01f7
+01c4 01c5
+01c6 01c5
+01c7 01c8
+01c9 01c8
+01ca 01cb
+01cc 01cb
+01ce 01cd
+01d0 01cf
+01d2 01d1
+01d4 01d3
+01d6 01d5
+01d8 01d7
+01da 01d9
+01dc 01db
+01dd 018e
+01df 01de
+01e1 01e0
+01e3 01e2
+01e5 01e4
+01e7 01e6
+01e9 01e8
+01eb 01ea
+01ed 01ec
+01ef 01ee
+01f1 01f2
+01f3 01f2
+01f5 01f4
+01f9 01f8
+01fb 01fa
+01fd 01fc
+01ff 01fe
+0201 0200
+0203 0202
+0205 0204
+0207 0206
+0209 0208
+020b 020a
+020d 020c
+020f 020e
+0211 0210
+0213 0212
+0215 0214
+0217 0216
+0219 0218
+021b 021a
+021d 021c
+021f 021e
+0223 0222
+0225 0224
+0227 0226
+0229 0228
+022b 022a
+022d 022c
+022f 022e
+0231 0230
+0233 0232
+0253 0181
+0254 0186
+0256 0257 0189
+0259 018f
+025b 0190
+0260 0193
+0263 0194
+0268 0197
+0269 0196
+026f 019c
+0272 019d
+0275 019f
+0280 01a6
+0283 01a9
+0288 01ae
+028a 028b 01b1
+0292 01b7
+0345 0399
+03ac 0386
+03ad 03af 0388
+03b1 03c1 0391
+03c2 03a3
+03c3 03cb 03a3
+03cc 038c
+03cd 03ce 038e
+03d0 0392
+03d1 0398
+03d5 03a6
+03d6 03a0
+03db 03da
+03dd 03dc
+03df 03de
+03e1 03e0
+03e3 03e2
+03e5 03e4
+03e7 03e6
+03e9 03e8
+03eb 03ea
+03ed 03ec
+03ef 03ee
+03f0 039a
+03f1 03a1
+03f2 03a3
+0430 044f 0410
+0450 045f 0400
+0461 0460
+0463 0462
+0465 0464
+0467 0466
+0469 0468
+046b 046a
+046d 046c
+046f 046e
+0471 0470
+0473 0472
+0475 0474
+0477 0476
+0479 0478
+047b 047a
+047d 047c
+047f 047e
+0481 0480
+048d 048c
+048f 048e
+0491 0490
+0493 0492
+0495 0494
+0497 0496
+0499 0498
+049b 049a
+049d 049c
+049f 049e
+04a1 04a0
+04a3 04a2
+04a5 04a4
+04a7 04a6
+04a9 04a8
+04ab 04aa
+04ad 04ac
+04af 04ae
+04b1 04b0
+04b3 04b2
+04b5 04b4
+04b7 04b6
+04b9 04b8
+04bb 04ba
+04bd 04bc
+04bf 04be
+04c2 04c1
+04c4 04c3
+04c8 04c7
+04cc 04cb
+04d1 04d0
+04d3 04d2
+04d5 04d4
+04d7 04d6
+04d9 04d8
+04db 04da
+04dd 04dc
+04df 04de
+04e1 04e0
+04e3 04e2
+04e5 04e4
+04e7 04e6
+04e9 04e8
+04eb 04ea
+04ed 04ec
+04ef 04ee
+04f1 04f0
+04f3 04f2
+04f5 04f4
+04f9 04f8
+0561 0586 0531
+1e01 1e00
+1e03 1e02
+1e05 1e04
+1e07 1e06
+1e09 1e08
+1e0b 1e0a
+1e0d 1e0c
+1e0f 1e0e
+1e11 1e10
+1e13 1e12
+1e15 1e14
+1e17 1e16
+1e19 1e18
+1e1b 1e1a
+1e1d 1e1c
+1e1f 1e1e
+1e21 1e20
+1e23 1e22
+1e25 1e24
+1e27 1e26
+1e29 1e28
+1e2b 1e2a
+1e2d 1e2c
+1e2f 1e2e
+1e31 1e30
+1e33 1e32
+1e35 1e34
+1e37 1e36
+1e39 1e38
+1e3b 1e3a
+1e3d 1e3c
+1e3f 1e3e
+1e41 1e40
+1e43 1e42
+1e45 1e44
+1e47 1e46
+1e49 1e48
+1e4b 1e4a
+1e4d 1e4c
+1e4f 1e4e
+1e51 1e50
+1e53 1e52
+1e55 1e54
+1e57 1e56
+1e59 1e58
+1e5b 1e5a
+1e5d 1e5c
+1e5f 1e5e
+1e61 1e60
+1e63 1e62
+1e65 1e64
+1e67 1e66
+1e69 1e68
+1e6b 1e6a
+1e6d 1e6c
+1e6f 1e6e
+1e71 1e70
+1e73 1e72
+1e75 1e74
+1e77 1e76
+1e79 1e78
+1e7b 1e7a
+1e7d 1e7c
+1e7f 1e7e
+1e81 1e80
+1e83 1e82
+1e85 1e84
+1e87 1e86
+1e89 1e88
+1e8b 1e8a
+1e8d 1e8c
+1e8f 1e8e
+1e91 1e90
+1e93 1e92
+1e95 1e94
+1e9b 1e60
+1ea1 1ea0
+1ea3 1ea2
+1ea5 1ea4
+1ea7 1ea6
+1ea9 1ea8
+1eab 1eaa
+1ead 1eac
+1eaf 1eae
+1eb1 1eb0
+1eb3 1eb2
+1eb5 1eb4
+1eb7 1eb6
+1eb9 1eb8
+1ebb 1eba
+1ebd 1ebc
+1ebf 1ebe
+1ec1 1ec0
+1ec3 1ec2
+1ec5 1ec4
+1ec7 1ec6
+1ec9 1ec8
+1ecb 1eca
+1ecd 1ecc
+1ecf 1ece
+1ed1 1ed0
+1ed3 1ed2
+1ed5 1ed4
+1ed7 1ed6
+1ed9 1ed8
+1edb 1eda
+1edd 1edc
+1edf 1ede
+1ee1 1ee0
+1ee3 1ee2
+1ee5 1ee4
+1ee7 1ee6
+1ee9 1ee8
+1eeb 1eea
+1eed 1eec
+1eef 1eee
+1ef1 1ef0
+1ef3 1ef2
+1ef5 1ef4
+1ef7 1ef6
+1ef9 1ef8
+1f00 1f07 1f08
+1f10 1f15 1f18
+1f20 1f27 1f28
+1f30 1f37 1f38
+1f40 1f45 1f48
+1f51 1f59
+1f53 1f5b
+1f55 1f5d
+1f57 1f5f
+1f60 1f67 1f68
+1f70 1f71 1fba
+1f72 1f75 1fc8
+1f76 1f77 1fda
+1f78 1f79 1ff8
+1f7a 1f7b 1fea
+1f7c 1f7d 1ffa
+1f80 1f87 1f88
+1f90 1f97 1f98
+1fa0 1fa7 1fa8
+1fb0 1fb1 1fb8
+1fb3 1fbc
+1fbe 0399
+1fc3 1fcc
+1fd0 1fd1 1fd8
+1fe0 1fe1 1fe8
+1fe5 1fec
+1ff3 1ffc
+2170 217f 2160
+24d0 24e9 24b6
+ff41 ff5a ff21
+END
diff --git a/contrib/perl5/lib/unicode/To/Upper.pl b/contrib/perl5/lib/unicode/To/Upper.pl
new file mode 100644
index 0000000..1fc7637
--- /dev/null
+++ b/contrib/perl5/lib/unicode/To/Upper.pl
@@ -0,0 +1,411 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by mktables.PL from e.g. Unicode.300.
+# Any changes made here will be lost!
+return <<'END';
+0061 007a 0041
+00b5 039c
+00e0 00f6 00c0
+00f8 00fe 00d8
+00ff 0178
+0101 0100
+0103 0102
+0105 0104
+0107 0106
+0109 0108
+010b 010a
+010d 010c
+010f 010e
+0111 0110
+0113 0112
+0115 0114
+0117 0116
+0119 0118
+011b 011a
+011d 011c
+011f 011e
+0121 0120
+0123 0122
+0125 0124
+0127 0126
+0129 0128
+012b 012a
+012d 012c
+012f 012e
+0131 0049
+0133 0132
+0135 0134
+0137 0136
+013a 0139
+013c 013b
+013e 013d
+0140 013f
+0142 0141
+0144 0143
+0146 0145
+0148 0147
+014b 014a
+014d 014c
+014f 014e
+0151 0150
+0153 0152
+0155 0154
+0157 0156
+0159 0158
+015b 015a
+015d 015c
+015f 015e
+0161 0160
+0163 0162
+0165 0164
+0167 0166
+0169 0168
+016b 016a
+016d 016c
+016f 016e
+0171 0170
+0173 0172
+0175 0174
+0177 0176
+017a 0179
+017c 017b
+017e 017d
+017f 0053
+0183 0182
+0185 0184
+0188 0187
+018c 018b
+0192 0191
+0195 01f6
+0199 0198
+01a1 01a0
+01a3 01a2
+01a5 01a4
+01a8 01a7
+01ad 01ac
+01b0 01af
+01b4 01b3
+01b6 01b5
+01b9 01b8
+01bd 01bc
+01bf 01f7
+01c5 01c4
+01c6 01c4
+01c8 01c7
+01c9 01c7
+01cb 01ca
+01cc 01ca
+01ce 01cd
+01d0 01cf
+01d2 01d1
+01d4 01d3
+01d6 01d5
+01d8 01d7
+01da 01d9
+01dc 01db
+01dd 018e
+01df 01de
+01e1 01e0
+01e3 01e2
+01e5 01e4
+01e7 01e6
+01e9 01e8
+01eb 01ea
+01ed 01ec
+01ef 01ee
+01f2 01f1
+01f3 01f1
+01f5 01f4
+01f9 01f8
+01fb 01fa
+01fd 01fc
+01ff 01fe
+0201 0200
+0203 0202
+0205 0204
+0207 0206
+0209 0208
+020b 020a
+020d 020c
+020f 020e
+0211 0210
+0213 0212
+0215 0214
+0217 0216
+0219 0218
+021b 021a
+021d 021c
+021f 021e
+0223 0222
+0225 0224
+0227 0226
+0229 0228
+022b 022a
+022d 022c
+022f 022e
+0231 0230
+0233 0232
+0253 0181
+0254 0186
+0256 0257 0189
+0259 018f
+025b 0190
+0260 0193
+0263 0194
+0268 0197
+0269 0196
+026f 019c
+0272 019d
+0275 019f
+0280 01a6
+0283 01a9
+0288 01ae
+028a 028b 01b1
+0292 01b7
+0345 0399
+03ac 0386
+03ad 03af 0388
+03b1 03c1 0391
+03c2 03a3
+03c3 03cb 03a3
+03cc 038c
+03cd 03ce 038e
+03d0 0392
+03d1 0398
+03d5 03a6
+03d6 03a0
+03db 03da
+03dd 03dc
+03df 03de
+03e1 03e0
+03e3 03e2
+03e5 03e4
+03e7 03e6
+03e9 03e8
+03eb 03ea
+03ed 03ec
+03ef 03ee
+03f0 039a
+03f1 03a1
+03f2 03a3
+0430 044f 0410
+0450 045f 0400
+0461 0460
+0463 0462
+0465 0464
+0467 0466
+0469 0468
+046b 046a
+046d 046c
+046f 046e
+0471 0470
+0473 0472
+0475 0474
+0477 0476
+0479 0478
+047b 047a
+047d 047c
+047f 047e
+0481 0480
+048d 048c
+048f 048e
+0491 0490
+0493 0492
+0495 0494
+0497 0496
+0499 0498
+049b 049a
+049d 049c
+049f 049e
+04a1 04a0
+04a3 04a2
+04a5 04a4
+04a7 04a6
+04a9 04a8
+04ab 04aa
+04ad 04ac
+04af 04ae
+04b1 04b0
+04b3 04b2
+04b5 04b4
+04b7 04b6
+04b9 04b8
+04bb 04ba
+04bd 04bc
+04bf 04be
+04c2 04c1
+04c4 04c3
+04c8 04c7
+04cc 04cb
+04d1 04d0
+04d3 04d2
+04d5 04d4
+04d7 04d6
+04d9 04d8
+04db 04da
+04dd 04dc
+04df 04de
+04e1 04e0
+04e3 04e2
+04e5 04e4
+04e7 04e6
+04e9 04e8
+04eb 04ea
+04ed 04ec
+04ef 04ee
+04f1 04f0
+04f3 04f2
+04f5 04f4
+04f9 04f8
+0561 0586 0531
+1e01 1e00
+1e03 1e02
+1e05 1e04
+1e07 1e06
+1e09 1e08
+1e0b 1e0a
+1e0d 1e0c
+1e0f 1e0e
+1e11 1e10
+1e13 1e12
+1e15 1e14
+1e17 1e16
+1e19 1e18
+1e1b 1e1a
+1e1d 1e1c
+1e1f 1e1e
+1e21 1e20
+1e23 1e22
+1e25 1e24
+1e27 1e26
+1e29 1e28
+1e2b 1e2a
+1e2d 1e2c
+1e2f 1e2e
+1e31 1e30
+1e33 1e32
+1e35 1e34
+1e37 1e36
+1e39 1e38
+1e3b 1e3a
+1e3d 1e3c
+1e3f 1e3e
+1e41 1e40
+1e43 1e42
+1e45 1e44
+1e47 1e46
+1e49 1e48
+1e4b 1e4a
+1e4d 1e4c
+1e4f 1e4e
+1e51 1e50
+1e53 1e52
+1e55 1e54
+1e57 1e56
+1e59 1e58
+1e5b 1e5a
+1e5d 1e5c
+1e5f 1e5e
+1e61 1e60
+1e63 1e62
+1e65 1e64
+1e67 1e66
+1e69 1e68
+1e6b 1e6a
+1e6d 1e6c
+1e6f 1e6e
+1e71 1e70
+1e73 1e72
+1e75 1e74
+1e77 1e76
+1e79 1e78
+1e7b 1e7a
+1e7d 1e7c
+1e7f 1e7e
+1e81 1e80
+1e83 1e82
+1e85 1e84
+1e87 1e86
+1e89 1e88
+1e8b 1e8a
+1e8d 1e8c
+1e8f 1e8e
+1e91 1e90
+1e93 1e92
+1e95 1e94
+1e9b 1e60
+1ea1 1ea0
+1ea3 1ea2
+1ea5 1ea4
+1ea7 1ea6
+1ea9 1ea8
+1eab 1eaa
+1ead 1eac
+1eaf 1eae
+1eb1 1eb0
+1eb3 1eb2
+1eb5 1eb4
+1eb7 1eb6
+1eb9 1eb8
+1ebb 1eba
+1ebd 1ebc
+1ebf 1ebe
+1ec1 1ec0
+1ec3 1ec2
+1ec5 1ec4
+1ec7 1ec6
+1ec9 1ec8
+1ecb 1eca
+1ecd 1ecc
+1ecf 1ece
+1ed1 1ed0
+1ed3 1ed2
+1ed5 1ed4
+1ed7 1ed6
+1ed9 1ed8
+1edb 1eda
+1edd 1edc
+1edf 1ede
+1ee1 1ee0
+1ee3 1ee2
+1ee5 1ee4
+1ee7 1ee6
+1ee9 1ee8
+1eeb 1eea
+1eed 1eec
+1eef 1eee
+1ef1 1ef0
+1ef3 1ef2
+1ef5 1ef4
+1ef7 1ef6
+1ef9 1ef8
+1f00 1f07 1f08
+1f10 1f15 1f18
+1f20 1f27 1f28
+1f30 1f37 1f38
+1f40 1f45 1f48
+1f51 1f59
+1f53 1f5b
+1f55 1f5d
+1f57 1f5f
+1f60 1f67 1f68
+1f70 1f71 1fba
+1f72 1f75 1fc8
+1f76 1f77 1fda
+1f78 1f79 1ff8
+1f7a 1f7b 1fea
+1f7c 1f7d 1ffa
+1f80 1f87 1f88
+1f90 1f97 1f98
+1fa0 1fa7 1fa8
+1fb0 1fb1 1fb8
+1fb3 1fbc
+1fbe 0399
+1fc3 1fcc
+1fd0 1fd1 1fd8
+1fe0 1fe1 1fe8
+1fe5 1fec
+1ff3 1ffc
+2170 217f 2160
+24d0 24e9 24b6
+ff41 ff5a ff21
+END
diff --git a/contrib/perl5/lib/unicode/UCD300.html b/contrib/perl5/lib/unicode/UCD300.html
new file mode 100644
index 0000000..113d311
--- /dev/null
+++ b/contrib/perl5/lib/unicode/UCD300.html
@@ -0,0 +1,345 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+
+<html>
+
+
+
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+<meta http-equiv="Content-Language" content="en-us">
+
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+
+<meta name="ProgId" content="FrontPage.Editor.Document">
+
+<link rel="stylesheet" href="http://www.unicode.org/unicode.css" type="text/css">
+
+<title>Unicode Character Database</title>
+
+</head>
+
+
+
+<body>
+
+
+
+<h1>UNICODE CHARACTER DATABASE<br>
+Version 3.0.0</h1>
+
+<table border="1" cellspacing="2" cellpadding="0" height="87" width="100%">
+
+ <tr>
+
+ <td valign="TOP" width="144">Revision</td>
+
+ <td valign="TOP">3.0.0</td>
+
+ </tr>
+
+ <tr>
+
+ <td valign="TOP" width="144">Authors</td>
+
+ <td valign="TOP">Mark Davis and Ken Whistler</td>
+
+ </tr>
+
+ <tr>
+
+ <td valign="TOP" width="144">Date</td>
+
+ <td valign="TOP">1999-09-11</td>
+
+ </tr>
+
+ <tr>
+
+ <td valign="TOP" width="144">This Version</td>
+
+ <td valign="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html</a></td>
+
+ </tr>
+
+ <tr>
+
+ <td valign="TOP" width="144">Previous Version</td>
+
+ <td valign="TOP">n/a</td>
+
+ </tr>
+
+ <tr>
+
+ <td valign="TOP" width="144">Latest Version</td>
+
+ <td valign="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html</a></td>
+
+ </tr>
+
+</table>
+
+<p align="center">Copyright © 1995-1999 Unicode, Inc. All Rights reserved.</p>
+
+<h2>Disclaimer</h2>
+
+<p>The Unicode Character Database is provided as is by Unicode, Inc. No claims
+
+are made as to fitness for any particular purpose. No warranties of any kind are
+
+expressed or implied. The recipient agrees to determine applicability of
+
+information provided. If this file has been purchased on magnetic or optical
+
+media from Unicode, Inc., the sole remedy for any claim will be exchange of
+
+defective media within 90 days of receipt.</p>
+
+<p>This disclaimer is applicable for all other data files accompanying the
+
+Unicode Character Database, some of which have been compiled by the Unicode
+
+Consortium, and some of which have been supplied by other sources.</p>
+
+<h2>Limitations on Rights to Redistribute This Data</h2>
+
+<p>Recipient is granted the right to make copies in any form for internal
+
+distribution and to freely use the information supplied in the creation of
+
+products supporting the Unicode<sup>TM</sup> Standard. The files in the Unicode
+
+Character Database can be redistributed to third parties or other organizations
+
+(whether for profit or not) as long as this notice and the disclaimer notice are
+
+retained. Information can be extracted from these files and used in
+
+documentation or programs, as long as there is an accompanying notice indicating
+
+the source.</p>
+
+<h2>Introduction</h2>
+
+<p>The Unicode Character Database is a set of files that define the Unicode
+
+character properties and internal mappings. For more information about character
+
+properties and mappings, see <i><a href="http://www.unicode.org/unicode/uni2book/u2.html">The
+
+Unicode Standard</a></i>.</p>
+
+<p>The Unicode Character Database has been updated to reflect Version 3.0 of the
+
+Unicode Standard, with many characters added to those published in Version 2.0.
+
+A number of corrections have also been made to case mappings or other errors in
+
+the database noted since the publication of Version 2.0. Normative bidirectional
+
+properties have also been modified to reflect decisions of the Unicode Technical
+
+Committee.</p>
+
+<p>For more information on versions of the Unicode Standard and how to reference
+
+them, see <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>.</p>
+
+<h2>Conformance</h2>
+
+<p>Character properties may be either normative or informative. <i>Normative</i>
+
+means that implementations that claim conformance to the Unicode Standard (at a
+
+particular version) and which make use of a particular property or field must
+
+follow the specifications of the standard for that property or field in order to
+
+be conformant. The term <i>normative</i> when applied to a property or field of
+
+the Unicode Character Database, does <i>not</i> mean that the value of that
+
+field will never change. Corrections and extensions to the standard in the
+
+future may require minor changes to normative values, even though the Unicode
+
+Technical Committee strives to minimize such changes. An<i> informative </i>property
+
+or field is strongly recommended, but a conformant implementation is free to use
+
+or change such values as it may require while still being conformant to the
+
+standard. Particular implementations may choose to override the properties and
+
+mappings that are not normative. In that case, it is up to the implementer to
+
+establish a protocol to convey that information.</p>
+
+<h2>Files</h2>
+
+<p>The following summarizes the files in the Unicode Character Database. &nbsp;For
+
+more information about these files, see the referenced technical report or
+
+section of Unicode Standard, Version 3.0.</p>
+
+<p><b>UnicodeData.txt (Chapter 4)</b>
+
+<ul>
+
+ <li>The main file in the Unicode Character Database.</li>
+
+ <li>For detailed information on the format, see <a href="UnicodeData.html">UnicodeData.html</a>.
+
+ This file also characterizes which properties are normative and which are
+
+ informative.</li>
+
+</ul>
+
+<p><b>PropList.txt (Chapter 4)</b>
+
+<ul>
+
+ <li>Additional informative properties list: <i>Alphabetic, Ideographic,</i>
+
+ and <i>Mathematical</i>, among others.</li>
+
+</ul>
+
+<p><b>SpecialCasing.txt (Chapter 4)</b>
+
+<ul>
+
+ <li>List of informative special casing properties, including one-to-many
+
+ mappings such as SHARP S =&gt; &quot;SS&quot;, and locale-specific mappings,
+
+ such as for Turkish <i>dotless i</i>.</li>
+
+</ul>
+
+<p><b>Blocks.txt (Chapter 14)</b>
+
+<ul>
+
+ <li>List of normative block names.</li>
+
+</ul>
+
+<p><b>Jamo.txt (Chapter 4)</b>
+
+<ul>
+
+ <li>List of normative Jamo short names, used in deriving HANGUL SYLLABLE names
+
+ algorithmically.</li>
+
+</ul>
+
+<p><b>ArabicShaping.txt (Section 8.2)</b>
+
+<ul>
+
+ <li>Basic Arabic and Syriac character shaping properties, such as initial,
+
+ medial and final shapes. These properties are normative for minimal shaping
+
+ of Arabic and Syriac. </li>
+
+</ul>
+
+<p><b>NamesList.txt (Chapter 14)</b>
+
+<ul>
+
+ <li>This file duplicates some of the material in the UnicodeData file, and
+
+ adds informative annotations uses in the character charts, as printed in the
+
+ Unicode Standard. </li>
+
+ <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
+
+ the appropriate version of the book. Changes in the Unicode Character
+
+ Database since then may not be reflected in these files, since they are
+
+ primarily of archival interest.</li>
+
+</ul>
+
+<p><b>Index.txt (Chapter 14)</b>
+
+<ul>
+
+ <li>Informative index to Unicode characters, as printed in the Unicode
+
+ Standard</li>
+
+ <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
+
+ the appropriate version of the book. Changes in the Unicode Character
+
+ Database since then may not be reflected in these files, since they are
+
+ primarily of archival interest.</li>
+
+</ul>
+
+<p><b>CompositionExclusions.txt (<a href="http://www.unicode.org/unicode/reports/tr15/">UTR#15
+
+Unicode Normalization Forms</a>)</b>
+
+<ul>
+
+ <li>Normative properties for normalization.</li>
+
+</ul>
+
+<p><b>LineBreak.txt (<a href="http://www.unicode.org/unicode/reports/tr14/">UTR
+
+#14: Line Breaking Properties</a>)</b>
+
+<ul>
+
+ <li>Normative and informative properties for line breaking. To see which
+
+ properties are informative and which are normative, consult UTR#14.</li>
+
+</ul>
+
+<p><b>EastAsianWidth.txt (<a href="http://www.unicode.org/unicode/reports/tr11/">UTR
+
+#11: East Asian Character Width</a>)</b>
+
+<ul>
+
+ <li>Informative properties for determining the choice of wide vs. narrow
+
+ glyphs in East Asian contexts.</li>
+
+</ul>
+
+<p><b>diffXvY.txt</b>
+
+<ul>
+
+ <li>Mechanically-generated informative files containing accumulated
+
+ differences between successive versions of UnicodeData.txt</li>
+
+</ul>
+
+
+
+</body>
+
+
+
+</html>
+
diff --git a/contrib/perl5/lib/unicode/Unicode.300 b/contrib/perl5/lib/unicode/Unicode.300
new file mode 100644
index 0000000..6a54d3d
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Unicode.300
@@ -0,0 +1,10617 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;INDEX;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;No;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/contrib/perl5/lib/unicode/Unicode3.html b/contrib/perl5/lib/unicode/Unicode3.html
new file mode 100644
index 0000000..a08a25e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/Unicode3.html
@@ -0,0 +1,1988 @@
+<html>
+
+
+
+<head>
+
+<meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 4.0">
+
+<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+
+<link REL="stylesheet" HREF="http://www.unicode.org/unicode.css" TYPE="text/css">
+
+<title>UnicodeData File Format</title>
+
+</head>
+
+
+
+<body>
+
+
+
+<h1>UnicodeData File Format<br>
+Version 3.0.0</h1>
+
+
+
+<table BORDER="1" CELLSPACING="2" CELLPADDING="0" HEIGHT="87" WIDTH="100%">
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">Revision</td>
+
+ <td VALIGN="TOP">3.0.0</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">Authors</td>
+
+ <td VALIGN="TOP">Mark Davis and Ken Whistler</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">Date</td>
+
+ <td VALIGN="TOP">1999-09-12</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">This Version</td>
+
+ <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">Previous Version</td>
+
+ <td VALIGN="TOP">n/a</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP" width="144">Latest Version</td>
+
+ <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td>
+
+ </tr>
+
+</table>
+
+
+
+<p align="center">Copyright © 1995-1999 Unicode, Inc. All Rights reserved.<br>
+
+<i>For more information, including Disclamer and Limitations, see <a HREF="UnicodeCharacterDatabase-3.0.0.html">UnicodeCharacterDatabase-3.0.0.html</a> </i></p>
+
+
+
+<p>This document describes the format of the UnicodeData.txt file, which is one of the
+
+files in the Unicode Character Database. The document is divided into the following
+
+sections:
+
+
+
+<ul>
+
+ <li><a HREF="#Field Formats">Field Formats</a> <ul>
+
+ <li><a HREF="#General Category">General Category</a> </li>
+
+ <li><a HREF="#Bidirectional Category">Bidirectional Category</a> </li>
+
+ <li><a HREF="#Character Decomposition">Character Decomposition Mapping</a> </li>
+
+ <li><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </li>
+
+ <li><a HREF="#Decompositions and Normalization">Decompositions and Normalization</a> </li>
+
+ <li><a HREF="#Case Mappings">Case Mappings</a> </li>
+
+ </ul>
+
+ </li>
+
+ <li><a HREF="#Property Invariants">Property Invariants</a> </li>
+
+ <li><a HREF="#Modification History">Modification History</a> </li>
+
+</ul>
+
+
+
+<p><b>Warning: </b>the information in this file does not completely describe the use and
+
+interpretation of Unicode character properties and behavior. It must be used in
+
+conjunction with the data in the other files in the Unicode Character Database, and relies
+
+on the notation and definitions supplied in <i><a href="http://www.unicode.org/unicode/standard/versions/Unicode3.0.html"> The Unicode
+Standard</a></i>. All chapter references
+
+are to Version 3.0 of the standard.</p>
+
+
+
+<h2><a NAME="Field Formats"></a>Field Formats</h2>
+
+
+
+<p>The file consists of lines containing fields terminated by semicolons. Each line
+
+represents the data for one encoded character in the Unicode Standard. Every encoded
+
+character has a data entry, with the exception of certain special ranges, as detailed
+
+below.
+
+
+
+<ul>
+
+ <li>There are six special ranges of characters that are represented only by their start and
+
+ end characters, since the properties in the file are uniform, except for code values
+
+ (which are all sequential and assigned). </li>
+
+ <li>The names of CJK ideograph characters and the names and decompositions of Hangul
+
+ syllable characters are algorithmically derivable. (See the Unicode Standard and <a
+
+ HREF="http://www.unicode.org/unicode/reports/tr15/">Unicode Technical Report #15</a> for
+
+ more information). </li>
+
+ <li>Surrogate code values and private use characters have no names. </li>
+
+ <li>The Private Use character outside of the BMP (U+F0000..U+FFFFD, U+100000..U+10FFFD) are
+
+ not listed. These correspond to surrogate pairs where the first surrogate is in the High
+
+ Surrogate Private Use section. </li>
+
+</ul>
+
+
+
+<p>The exact ranges represented by start and end characters are:
+
+
+
+<ul>
+
+ <li>CJK Ideographs Extension A (U+3400 - U+4DB5) </li>
+
+ <li>CJK Ideographs (U+4E00 - U+9FA5) </li>
+
+ <li>Hangul Syllables (U+AC00 - U+D7A3) </li>
+
+ <li>Non-Private Use High Surrogates (U+D800 - U+DB7F) </li>
+
+ <li>Private Use High Surrogates (U+DB80 - U+DBFF) </li>
+
+ <li>Low Surrogates (U+DC00 - U+DFFF) </li>
+
+ <li>The Private Use Area (U+E000 - U+F8FF) </li>
+
+</ul>
+
+
+
+<p>The following table describes the format and meaning of each field in a data entry in
+
+the UnicodeData file. Fields which contain normative information are so indicated.</p>
+
+
+
+<table BORDER="1" CELLSPACING="2" CELLPADDING="2">
+
+ <tr>
+
+ <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Field</th>
+
+ <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Name</th>
+
+ <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Status</th>
+
+ <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Explanation</th>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">0</th>
+
+ <td VALIGN="top">Code value</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">Code value in 4-digit hexadecimal format.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">1</th>
+
+ <td VALIGN="top">Character name</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">These names match exactly the names published in Chapter 14 of the
+
+ Unicode Standard, Version 3.0.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">2</th>
+
+ <td VALIGN="top"><a HREF="#General Category">General Category</a> </td>
+
+ <td VALIGN="top">normative / informative<br>
+
+ (see below)</td>
+
+ <td VALIGN="top">This is a useful breakdown into various &quot;character types&quot; which
+
+ can be used as a default categorization in implementations. See below for a brief
+
+ explanation.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">3</th>
+
+ <td VALIGN="top"><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">The classes used for the Canonical Ordering Algorithm in the Unicode
+
+ Standard. These classes are also printed in Chapter 4 of the Unicode Standard.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">4</th>
+
+ <td VALIGN="top"><a HREF="#Bidirectional Category">Bidirectional Category</a> </td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">See the list below for an explanation of the abbreviations used in this
+
+ field. These are the categories required by the Bidirectional Behavior Algorithm in the
+
+ Unicode Standard. These categories are summarized in Chapter 3 of the Unicode Standard.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">5</th>
+
+ <td VALIGN="top"><a HREF="#Character Decomposition">Character Decomposition
+ Mapping</a></td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">In the Unicode Standard, not all of the mappings are full (maximal)
+
+ decompositions. Recursive application of look-up for decompositions will, in all cases,
+
+ lead to a maximal decomposition. The decomposition mappings match exactly the
+
+ decomposition mappings published with the character names in the Unicode Standard.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">6</th>
+
+ <td VALIGN="top">Decimal digit value</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">This is a numeric field. If the character has the decimal digit property,
+
+ as specified in Chapter 4 of the Unicode Standard, the value of that digit is represented
+
+ with an integer value in this field</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">7</th>
+
+ <td VALIGN="top">Digit value</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">This is a numeric field. If the character represents a digit, not
+
+ necessarily a decimal digit, the value is here. This covers digits which do not form
+
+ decimal radix forms, such as the compatibility superscript digits</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">8</th>
+
+ <td VALIGN="top">Numeric value</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">This is a numeric field. If the character has the numeric property, as
+
+ specified in Chapter 4 of the Unicode Standard, the value of that character is represented
+
+ with an integer or rational number in this field. This includes fractions as, e.g.,
+
+ &quot;1/5&quot; for U+2155 VULGAR FRACTION ONE FIFTH Also included are numerical values
+
+ for compatibility characters such as circled numbers.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">8</th>
+
+ <td VALIGN="top">Mirrored</td>
+
+ <td VALIGN="top">normative</td>
+
+ <td VALIGN="top">If the character has been identified as a &quot;mirrored&quot; character
+
+ in bidirectional text, this field has the value &quot;Y&quot;; otherwise &quot;N&quot;.
+
+ The list of mirrored characters is also printed in Chapter 4 of the Unicode Standard.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">10</th>
+
+ <td VALIGN="top">Unicode 1.0 Name</td>
+
+ <td VALIGN="top">informative</td>
+
+ <td VALIGN="top">This is the old name as published in Unicode 1.0. This name is only
+
+ provided when it is significantly different from the Unicode 3.0 name for the character.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">11</th>
+
+ <td VALIGN="top">10646 comment field</td>
+
+ <td VALIGN="top">informative</td>
+
+ <td VALIGN="top">This is the ISO 10646 comment field. It is in parantheses in the 10646
+
+ names list.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">12</th>
+
+ <td VALIGN="top"><a HREF="#Case Mappings">Uppercase Mapping</a></td>
+
+ <td VALIGN="top">informative</td>
+
+ <td VALIGN="top">Upper case equivalent mapping. If a character is part of an alphabet with
+
+ case distinctions, and has an upper case equivalent, then the upper case equivalent is in
+
+ this field. See the explanation below on case distinctions. These mappings are always
+
+ one-to-one, not one-to-many or many-to-one. This field is informative.</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">13</th>
+
+ <td VALIGN="top"><a HREF="#Case Mappings">Lowercase Mapping</a></td>
+
+ <td VALIGN="top">informative</td>
+
+ <td VALIGN="top">Similar to Uppercase mapping</td>
+
+ </tr>
+
+ <tr>
+
+ <th VALIGN="top">14</th>
+
+ <td VALIGN="top"><a HREF="#Case Mappings">Titlecase Mapping</a></td>
+
+ <td VALIGN="top">informative</td>
+
+ <td VALIGN="top">Similar to Uppercase mapping</td>
+
+ </tr>
+
+</table>
+
+
+
+<h3><a NAME="General Category"></a>General Category</h3>
+
+
+
+<p>The values in this field are abbreviations for the following. Some of the values are
+
+normative, and some are informative. For more information, see the Unicode Standard.</p>
+
+
+
+<p><b>Note:</b> the standard does not assign information to control characters (except for
+
+certain cases in the Bidirectional Algorithm). Implementations will generally also assign
+
+categories to certain control characters, notably CR and LF, according to platform
+
+conventions.</p>
+
+
+
+<h4>Normative Categories</h4>
+
+
+
+<table BORDER="0" CELLSPACING="2" CELLPADDING="0">
+
+ <tr>
+
+ <th><p ALIGN="LEFT">Abbr.</th>
+
+ <th><p ALIGN="LEFT">Description</th>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Lu</td>
+
+ <td>Letter, Uppercase</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Ll</td>
+
+ <td>Letter, Lowercase</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Lt</td>
+
+ <td>Letter, Titlecase</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Mn</td>
+
+ <td>Mark, Non-Spacing</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Mc</td>
+
+ <td>Mark, Spacing Combining</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Me</td>
+
+ <td>Mark, Enclosing</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Nd</td>
+
+ <td>Number, Decimal Digit</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Nl</td>
+
+ <td>Number, Letter</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">No</td>
+
+ <td>Number, Other</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Zs</td>
+
+ <td>Separator, Space</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Zl</td>
+
+ <td>Separator, Line</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Zp</td>
+
+ <td>Separator, Paragraph</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Cc</td>
+
+ <td>Other, Control</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Cf</td>
+
+ <td>Other, Format</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Cs</td>
+
+ <td>Other, Surrogate</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Co</td>
+
+ <td>Other, Private Use</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Cn</td>
+
+ <td>Other, Not Assigned (no characters in the file have this property)</td>
+
+ </tr>
+
+</table>
+
+
+
+<h4>Informative Categories</h4>
+
+
+
+<table BORDER="0" CELLSPACING="2" CELLPADDING="0">
+
+ <tr>
+
+ <th><p ALIGN="LEFT">Abbr.</th>
+
+ <th><p ALIGN="LEFT">Description</th>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Lm</td>
+
+ <td>Letter, Modifier</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Lo</td>
+
+ <td>Letter, Other</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Pc</td>
+
+ <td>Punctuation, Connector</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Pd</td>
+
+ <td>Punctuation, Dash</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Ps</td>
+
+ <td>Punctuation, Open</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Pe</td>
+
+ <td>Punctuation, Close</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Pi</td>
+
+ <td>Punctuation, Initial quote (may behave like Ps or Pe depending on usage)</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Pf</td>
+
+ <td>Punctuation, Final quote (may behave like Ps or Pe depending on usage)</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Po</td>
+
+ <td>Punctuation, Other</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Sm</td>
+
+ <td>Symbol, Math</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Sc</td>
+
+ <td>Symbol, Currency</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">Sk</td>
+
+ <td>Symbol, Modifier</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">So</td>
+
+ <td>Symbol, Other</td>
+
+ </tr>
+
+</table>
+
+
+
+<h3><a NAME="Bidirectional Category"></a>Bidirectional Category</h3>
+
+
+
+<p>Please refer to Chapter 3 for an explanation of the algorithm for Bidirectional
+
+Behavior and an explanation of the significance of these categories. An up-to-date version
+
+can be found on <a HREF="http://www.unicode.org/unicode/reports/tr9/">Unicode Technical
+
+Report #9: The Bidirectional Algorithm</a>. These values are normative.</p>
+
+
+
+<table BORDER="0" CELLPADDING="2">
+
+ <tr>
+
+ <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Type</th>
+
+ <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Description</th>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>L</b></td>
+
+ <td VALIGN="TOP">Left-to-Right</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>LRE</b></td>
+
+ <td VALIGN="TOP">Left-to-Right Embedding</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>LRO</b></td>
+
+ <td VALIGN="TOP">Left-to-Right Override</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>R</b></td>
+
+ <td VALIGN="TOP">Right-to-Left</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>AL</b></td>
+
+ <td VALIGN="TOP">Right-to-Left Arabic</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>RLE</b></td>
+
+ <td VALIGN="TOP">Right-to-Left Embedding</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>RLO</b></td>
+
+ <td VALIGN="TOP">Right-to-Left Override</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>PDF</b></td>
+
+ <td VALIGN="TOP">Pop Directional Format</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>EN</b></td>
+
+ <td VALIGN="TOP">European Number</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>ES</b></td>
+
+ <td VALIGN="TOP">European Number Separator</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>ET</b></td>
+
+ <td VALIGN="TOP">European Number Terminator</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>AN</b></td>
+
+ <td VALIGN="TOP">Arabic Number</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>CS</b></td>
+
+ <td VALIGN="TOP">Common Number Separator</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>NSM</b></td>
+
+ <td VALIGN="TOP">Non-Spacing Mark</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>BN</b></td>
+
+ <td VALIGN="TOP">Boundary Neutral</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>B</b></td>
+
+ <td VALIGN="TOP">Paragraph Separator</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>S</b></td>
+
+ <td VALIGN="TOP">Segment Separator</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>WS</b></td>
+
+ <td VALIGN="TOP">Whitespace</td>
+
+ </tr>
+
+ <tr>
+
+ <td VALIGN="TOP"><b>ON</b></td>
+
+ <td VALIGN="TOP">Other Neutrals</td>
+
+ </tr>
+
+</table>
+
+
+
+<h3><a NAME="Character Decomposition"></a>Character Decomposition Mapping</h3>
+
+
+
+<p>The decomposition is a normative property of a character. The tags supplied with
+
+certain decomposition mappings generally indicate formatting information. Where no such
+
+tag is given, the mapping is designated as canonical. Conversely, the presence of a
+
+formatting tag also indicates that the mapping is a compatibility mapping and not a
+
+canonical mapping. In the absence of other formatting information in a compatibility
+
+mapping, the tag is used to distinguish it from canonical mappings.</p>
+
+
+
+<p>In some instances a canonical mapping or a compatibility mapping may consist of a
+
+single character. For a canonical mapping, this indicates that the character is a
+
+canonical equivalent of another single character. For a compatibility mapping, this
+
+indicates that the character is a compatibility equivalent of another single character.
+
+The compatibility formatting tags used are:</p>
+
+
+
+<table BORDER="0" CELLSPACING="2" CELLPADDING="0">
+
+ <tr>
+
+ <th>Tag</th>
+
+ <th><p ALIGN="LEFT">Description</th>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;font&gt;&nbsp;&nbsp;</td>
+
+ <td>A font variant (e.g. a blackletter form).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;noBreak&gt;&nbsp;&nbsp;</td>
+
+ <td>A no-break version of a space or hyphen.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;initial&gt;&nbsp;&nbsp;</td>
+
+ <td>An initial presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;medial&gt;&nbsp;&nbsp;</td>
+
+ <td>A medial presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;final&gt;&nbsp;&nbsp;</td>
+
+ <td>A final presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;isolated&gt;&nbsp;&nbsp;</td>
+
+ <td>An isolated presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;circle&gt;&nbsp;&nbsp;</td>
+
+ <td>An encircled form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;super&gt;&nbsp;&nbsp;</td>
+
+ <td>A superscript form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;sub&gt;&nbsp;&nbsp;</td>
+
+ <td>A subscript form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;vertical&gt;&nbsp;&nbsp;</td>
+
+ <td>A vertical layout presentation form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;wide&gt;&nbsp;&nbsp;</td>
+
+ <td>A wide (or zenkaku) compatibility character.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;narrow&gt;&nbsp;&nbsp;</td>
+
+ <td>A narrow (or hankaku) compatibility character.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;small&gt;&nbsp;&nbsp;</td>
+
+ <td>A small variant form (CNS compatibility).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;square&gt;&nbsp;&nbsp;</td>
+
+ <td>A CJK squared font variant.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;fraction&gt;&nbsp;&nbsp;</td>
+
+ <td>A vulgar fraction form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;compat&gt;&nbsp;&nbsp;</td>
+
+ <td>Otherwise unspecified compatibility character.</td>
+
+ </tr>
+
+</table>
+
+
+
+<p><b>Reminder: </b>There is a difference between decomposition and decomposition mapping.
+
+The decomposition mappings are defined in the UnicodeData, while the decomposition (also
+
+termed &quot;full decomposition&quot;) is defined in Chapter 3 to use those mappings
+<i>
+
+recursively.</i>
+
+
+
+<ul>
+
+ <li>The canonical decomposition is formed by recursively applying the canonical mappings,
+
+ then applying the canonical reordering algorithm. </li>
+
+ <li>The compatibility decomposition is formed by recursively applying the canonical <em>and</em>
+
+ compatibility mappings, then applying the canonical reordering algorithm. </li>
+
+</ul>
+
+
+
+<h3><a NAME="Canonical Combining Classes"></a>Canonical Combining Classes</h3>
+
+
+
+<table BORDER="0" CELLSPACING="2" CELLPADDING="0">
+
+ <tr>
+
+ <th><p ALIGN="LEFT">Value</th>
+
+ <th><p ALIGN="LEFT">Description</th>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">0:</td>
+
+ <td>Spacing, split, enclosing, reordrant, and Tibetan subjoined</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">1:</td>
+
+ <td>Overlays and interior</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">7:</td>
+
+ <td>Nuktas</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">8:</td>
+
+ <td>Hiragana/Katakana voicing marks</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">9:</td>
+
+ <td>Viramas</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">10:</td>
+
+ <td>Start of fixed position classes</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">199:</td>
+
+ <td>End of fixed position classes</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">200:</td>
+
+ <td>Below left attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">202:</td>
+
+ <td>Below attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">204:</td>
+
+ <td>Below right attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">208:</td>
+
+ <td>Left attached (reordrant around single base character)</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">210:</td>
+
+ <td>Right attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">212:</td>
+
+ <td>Above left attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">214:</td>
+
+ <td>Above attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">216:</td>
+
+ <td>Above right attached</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">218:</td>
+
+ <td>Below left</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">220:</td>
+
+ <td>Below</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">222:</td>
+
+ <td>Below right</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">224:</td>
+
+ <td>Left (reordrant around single base character)</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">226:</td>
+
+ <td>Right</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">228:</td>
+
+ <td>Above left</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">230:</td>
+
+ <td>Above</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">232:</td>
+
+ <td>Above right</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">233:</td>
+
+ <td>Double below</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">234:</td>
+
+ <td>Double above</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="RIGHT">240:</td>
+
+ <td>Below (iota subscript)</td>
+
+ </tr>
+
+</table>
+
+
+
+<p><strong>Note: </strong>some of the combining classes in this list do not currently have
+
+members but are specified here for completeness.</p>
+
+
+
+<h3><a NAME="Decompositions and Normalization"></a>Decompositions and Normalization</h3>
+
+
+
+<p>Decomposition is specified in Chapter 3. <a href="http://www.unicode.org/unicode/reports/tr15/"><i>Unicode Technical Report #15:
+
+Normalization Forms</i></a> specifies the interaction between decomposition and normalization. The
+
+most up-to-date version is found on <a HREF="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>.
+
+That report specifies how the decompositions defined in UnicodeData.txt are used to derive
+
+normalized forms of Unicode text.</p>
+
+
+
+<p>Note that as of the 2.1.9 update of the Unicode Character Database, the decompositions
+
+in the UnicodeData.txt file can be used to recursively derive the full decomposition in
+
+canonical order, without the need to separately apply canonical reordering. However,
+
+canonical reordering of combining character sequences must still be applied in
+
+decomposition when normalizing source text which contains any combining marks.</p>
+
+
+
+<h3><a NAME="Case Mappings"></a>Case Mappings</h3>
+
+
+
+<p>The case mapping is an informative, default mapping. Case itself, on the other hand,
+
+has normative status. Thus, for example, 0041 LATIN CAPITAL LETTER A is normatively
+
+uppercase, but its lowercase mapping the 0061 LATIN SMALL LETTER A is informative. The
+
+reason for this is that case can be considered to be an inherent property of a particular
+
+character (and is usually, but not always, derivable from the presence of the terms
+
+&quot;CAPITAL&quot; or &quot;SMALL&quot; in the character name), but case mappings between
+
+characters are occasionally influenced by local conventions. For example, certain
+
+languages, such as Turkish, German, French, or Greek may have small deviations from the
+
+default mappings listed in UnicodeData.</p>
+
+
+
+<p>In addition to uppercase and lowercase, because of the inclusion of certain composite
+
+characters for compatibility, such as 01F1 LATIN CAPITAL LETTER DZ, there is a third case,
+
+called <i>titlecase</i>, which is used where the first letter of a word is to be
+
+capitalized (e.g. UPPERCASE, Titlecase, lowercase). An example of such a titlecase letter
+
+is 01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z.</p>
+
+
+
+<p>The uppercase, titlecase and lowercase fields are only included for characters that
+
+have a single corresponding character of that type. Composite characters (such as
+
+&quot;339D SQUARE CM&quot;) that do not have a single corresponding character of that type
+
+can be cased by decomposition.</p>
+
+
+
+<p>For compatibility with existing parsers, UnicodeData only contains case mappings for
+
+characters where they are one-to-one mappings; it also omits information about
+
+context-sensitive case mappings. Information about these special cases can be found in a
+
+separate data file, SpecialCasing.txt,
+
+which has been added starting with the 2.1.8 update to the Unicode data files.
+
+SpecialCasing.txt contains additional informative case mappings that are either not
+
+one-to-one or which are context-sensitive.</p>
+
+
+
+<h2><a NAME="Property Invariants"></a>Property Invariants</h2>
+
+
+
+<p>Values in UnicodeData.txt are subject to correction as errors are found; however, some
+
+characteristics of the categories themselves can be considered invariants. Applications
+
+may wish to take these invariants into account when choosing how to implement character
+
+properties. The following is a partial list of known invariants for the Unicode Character
+
+Database.</p>
+
+
+
+<h4>Database Fields</h4>
+
+
+
+<ul>
+
+ <li>The number of fields in UnicodeData.txt is fixed. </li>
+
+ <li>The order of the fields is also fixed. <ul>
+
+ <li>Any additional information about character properties to be added in the future will
+
+ appear in separate data tables, rather than being added on to the existing table or by
+
+ subdivision or reinterpretation of existing fields. </li>
+
+ </ul>
+
+ </li>
+
+</ul>
+
+
+
+<h4>General Category</h4>
+
+
+
+<ul>
+
+ <li>There will never be more than 32 General Category values. <ul>
+
+ <li>It is very unlikely that the Unicode Technical Committee will subdivide the General
+
+ Category partition any further, since that can cause implementations to misbehave. Because
+
+ the General Category is limited to 32 values, 5 bits can be used to represent the
+
+ information, and a 32-bit integer can be used as a bitmask to represent arbitrary sets of
+
+ categories. </li>
+
+ </ul>
+
+ </li>
+
+</ul>
+
+
+
+<h4>Combining Classes</h4>
+
+
+
+<ul>
+
+ <li>Combining classes are limited to the values 0 to 255. <ul>
+
+ <li>In practice, there are far fewer than 256 values used. Implementations may take
+
+ advantage of this fact for compression, since only the ordering of the non-zero values
+
+ matters for the Canonical Reordering Algorithm. It is possible for up to 256 values to be
+
+ used in the future; however, UTC decisions in the future may restrict the number of values
+
+ to 128, since this has implementation advantages. [Signed bytes can be used without
+
+ widening to ints in Java, for example.] </li>
+
+ </ul>
+
+ </li>
+
+ <li>All characters other than those of General Category M* have the combining class 0. <ul>
+
+ <li>Currently, all characters other than those of General Category Mn have the value 0.
+
+ However, some characters of General Category Me or Mc may be given non-zero values in the
+
+ future. </li>
+
+ <li>The precise values above the value 0 are not invariant--only the relative ordering is
+
+ considered normative. For example, it is not guaranteed in future versions that the class
+
+ of U+05B4 will be precisely 14. </li>
+
+ </ul>
+
+ </li>
+
+</ul>
+
+
+
+<h4>Case</h4>
+
+
+
+<ul>
+
+ <li>Characters of type Lu, Lt, or Ll are called <i>cased</i>. All characters with an Upper,
+
+ Lower, or Titlecase mapping are cased characters. <ul>
+
+ <li>However, characters with the General Categories of Lu, Ll, or Lt may not always have
+
+ case mappings, and case mappings may vary by locale. (See
+
+ ftp://ftp.unicode.org/Public/UNIDATA/SpecialCasing.txt). </li>
+
+ </ul>
+
+ </li>
+
+</ul>
+
+
+
+<h4>Canonical Decomposition</h4>
+
+
+
+<ul>
+
+ <li>Canonical mappings are always in canonical order. </li>
+
+ <li>Canonical mappings have only the first of a pair possibly further decomposing. </li>
+
+ <li>Canonical decompositions are &quot;transparent&quot; to other character data: <ul>
+
+ <li><tt>BIDI(a) = BIDI(principal(canonicalDecomposition(a))</tt> </li>
+
+ <li><tt>Category(a) = Category(principal(canonicalDecomposition(a))</tt> </li>
+
+ <li><tt>CombiningClass(a) = CombiningClass(principal(canonicalDecomposition(a))</tt><br>
+
+ where principal(a) is the first character not of type Mn, or the first character if all
+
+ characters are of type Mn. </li>
+
+ </ul>
+
+ </li>
+
+ <li>However, because there are sometimes missing case pairs, and because of some legacy
+
+ characters, it is only generally true that: <ul>
+
+ <li><tt>upper(canonicalDecomposition(a)) = canonicalDecomposition(upper(a))</tt> </li>
+
+ <li><tt>lower(canonicalDecomposition(a)) = canonicalDecomposition(lower(a))</tt> </li>
+
+ <li><tt>title(canonicalDecomposition(a)) = canonicalDecomposition(title(a))</tt> </li>
+
+ </ul>
+
+ </li>
+
+</ul>
+
+
+
+<h2><a NAME="Modification History"></a>Modification History</h2>
+
+
+
+<p>This section provides a summary of the changes between update versions of the Unicode
+
+Standard.</p>
+
+
+
+<h3><a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 3.0.0"> Unicode 3.0.0</a></h3>
+
+
+
+<p>Modifications made for Version 3.0.0 of UnicodeData.txt include many new characters and
+
+a number of property changes. These are summarized in Appendex D of <em>The Unicode
+
+Standard, Version 3.0.</em></p>
+
+
+
+<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.9">Unicode 2.1.9</a> </h3>
+
+
+
+<p>Modifications made for Version 2.1.9 of UnicodeData.txt include:
+
+
+
+<ul>
+
+ <li>Corrected combining class for U+05AE HEBREW ACCENT ZINOR. </li>
+
+ <li>Corrected combining class for U+20E1 COMBINING LEFT RIGHT ARROW ABOVE </li>
+
+ <li>Corrected combining class for U+0F35 and U+0F37 to 220. </li>
+
+ <li>Corrected combining class for U+0F71 to 129. </li>
+
+ <li>Added a decomposition for U+0F0C TIBETAN MARK DELIMITER TSHEG BSTAR. </li>
+
+ <li>Added&nbsp; decompositions for several Greek symbol letters: U+03D0..U+03D2, U+03D5,
+
+ U+03D6, U+03F0..U+03F2. </li>
+
+ <li>Removed&nbsp; decompositions from the conjoining jamo block: U+1100..U+11F8. </li>
+
+ <li>Changes to decomposition mappings for some Tibetan vowels for consistency in
+
+ normalization. (U+0F71, U+0F73, U+0F77, U+0F79, U+0F81) </li>
+
+ <li>Updated the decomposition mappings for several Vietnamese characters with two diacritics
+
+ (U+1EAC, U+1EAD, U+1EB6, U+1EB7, U+1EC6, U+1EC7, U+1ED8, U+1ED9), so that the recursive
+
+ decomposition can be generated directly in canonically reordered form (not a normative
+
+ change). </li>
+
+ <li>Updated the decomposition mappings for several Arabic compatibility characters involving
+
+ shadda (U+FC5E..U+FC62, U+FCF2..U+FCF4), and two Latin characters (U+1E1C, U+1E1D), so
+
+ that the decompositions are generated directly in canonically reordered form (not a
+
+ normative change). </li>
+
+ <li>Changed BIDI category for: U+00A0 NO-BREAK SPACE, U+2007 FIGURE SPACE, U+2028 LINE
+
+ SEPARATOR. </li>
+
+ <li>Changed BIDI category for extenders of General Category Lm: U+3005, U+3021..U+3035,
+
+ U+FF9E, U+FF9F. </li>
+
+ <li>Changed General Category and BIDI category for the Greek numeral signs: U+0374, U+0375. </li>
+
+ <li>Corrected General Category for U+FFE8 HALFWIDTH FORMS LIGHT VERTICAL. </li>
+
+ <li>Added Unicode 1.0 names for many Tibetan characters (informative). </li>
+
+</ul>
+
+
+
+<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.8">Unicode 2.1.8</a> </h3>
+
+
+
+<p>Modifications made for Version 2.1.8 of UnicodeData.txt include:
+
+
+
+<ul>
+
+ <li>Added combining class 240 for U+0345 COMBINING GREEK YPOGEGRAMMENI so that
+
+ decompositions involving iota subscript are derivable directly in canonically reordered
+
+ form; this also has a bearing on simplification of casing of polytonic Greek. </li>
+
+ <li>Changes in decompositions related to Greek tonos. These result from the clarification
+
+ that monotonic Greek &quot;tonos&quot; should be equated with U+0301 COMBINING ACUTE,
+
+ rather than with U+030D COMBINING VERTICAL LINE ABOVE. (All Greek characters in the Greek
+
+ block involving &quot;tonos&quot;; some Greek characters in the polytonic Greek in the
+
+ 1FXX block.) </li>
+
+ <li>Changed decompositions involving dialytika tonos. (U+0390, U+03B0) </li>
+
+ <li>Changed ternary decompositions to binary. (U+0CCB, U+FB2C, U+FB2D) These changes
+
+ simplify normalization. </li>
+
+ <li>Removed canonical decomposition for Latin Candrabindu. (U+0310) </li>
+
+ <li>Corrected error in canonical decomposition for U+1FF4. </li>
+
+ <li>Added compatibility decompositions to clarify collation tables. (U+2100, U+2101, U+2105,
+
+ U+2106, U+1E9A) </li>
+
+ <li>A series of general category changes to assist the convergence of of Unicode definition
+
+ of identifier with ISO TR 10176: <ul>
+
+ <li>So &gt; Lo: U+0950, U+0AD0, U+0F00, U+0F88..U+0F8B </li>
+
+ <li>Po &gt; Lo: U+0E2F, U+0EAF, U+3006 </li>
+
+ <li>Lm &gt; Sk: U+309B, U+309C </li>
+
+ <li>Po &gt; Pc: U+30FB, U+FF65 </li>
+
+ <li>Ps/Pe &gt; Mn: U+0F3E, U+0F3F </li>
+
+ </ul>
+
+ </li>
+
+ <li>A series of bidi property changes for consistency. <ul>
+
+ <li>L &gt; ET: U+09F2, U+09F3 </li>
+
+ <li>ON &gt; L: U+3007 </li>
+
+ <li>L &gt; ON: U+0F3A..U+0F3D, U+037E, U+0387 </li>
+
+ </ul>
+
+ </li>
+
+ <li>Add case mapping: U+01A6 &lt;-&gt; U+0280 </li>
+
+ <li>Updated symmetric swapping value for guillemets: U+00AB, U+00BB, U+2039, U+203A. </li>
+
+ <li>Changes to combining class values. Most Indic fixed position class non-spacing marks
+
+ were changed to combining class 0. This fixes some inconsistencies in how canonical
+
+ reordering would apply to Indic scripts, including Tibetan. Indic interacting top/bottom
+
+ fixed position classes were merged into single (non-zero) classes as part of this change.
+
+ Tibetan subjoined consonants are changed from combining class 6 to combining class 0. Thai
+
+ pinthu (U+0E3A) moved to combining class 9. Moved two Devanagari stress marks into generic
+
+ above and below combining classes (U+0951, U+0952). </li>
+
+ <li>Corrected placement of semicolon near symmetric swapping field. (U+FA0E, etc., scattered
+
+ positions to U+FA29) </li>
+
+</ul>
+
+
+
+<h3>Version 2.1.7</h3>
+
+
+
+<p><i>This version was for internal change tracking only, and never publicly released.</i></p>
+
+
+
+<h3>Version 2.1.6</h3>
+
+
+
+<p><i>This version was for internal change tracking only, and never publicly released.</i></p>
+
+
+
+<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.5">Unicode 2.1.5</a> </h3>
+
+
+
+<p>Modifications made for Version 2.1.5 of UnicodeData.txt include:
+
+
+
+<ul>
+
+ <li>Changed decomposition for U+FF9E and U+FF9F so that correct collation weighting will
+
+ automatically result from the canonical equivalences. </li>
+
+ <li>Removed canonical decompositions for U+04D4, U+04D5, U+04D8, U+04D9, U+04E0, U+04E1,
+
+ U+04E8, U+04E9 (the implication being that no canonical equivalence is claimed between
+
+ these 8 characters and similar Latin letters), and updated 4 canonical decompositions for
+
+ U+04DB, U+04DC, U+04EA, U+04EB to reflect the implied difference in the base character. </li>
+
+ <li>Added Pi, and Pf categories and assigned the relevant quotation marks to those
+
+ categories, based on the Unicode Technical Corrigendum on Quotation Characters. </li>
+
+ <li>Updating of many bidi properties, following the advice of the ad hoc committee on bidi,
+
+ and to make the bidi properties of compatibility characters more consistent. </li>
+
+ <li>Changed category of several Tibetan characters: U+0F3E, U+0F3F, U+0F88..U+0F8B to make
+
+ them non-combining, reflecting the combined opinion of Tibetan experts. </li>
+
+ <li>Added case mapping for U+03F2. </li>
+
+ <li>Corrected case mapping for U+0275. </li>
+
+ <li>Added titlecase mappings for U+03D0, U+03D1, U+03D5, U+03D6, U+03F0.. U+03F2. </li>
+
+ <li>Corrected compatibility label for U+2121. </li>
+
+ <li>Add specific entries for all the CJK compatibility ideographs, U+F900..U+FA2D, so the
+
+ canonical decomposition for each (the URO character it is equivalent to) can be carried in
+
+ the database. </li>
+
+</ul>
+
+
+
+<h3>Version 2.1.4</h3>
+
+
+
+<p><i>This version was for internal change tracking only, and never publicly released.</i></p>
+
+
+
+<h3>Version 2.1.3</h3>
+
+
+
+<p><i>This version was for internal change tracking only, and never publicly released.</i></p>
+
+
+
+<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.2">Unicode 2.1.2</a> </h3>
+
+
+
+<p>Modifications made in updating UnicodeData.txt to Version 2.1.2 for the Unicode
+
+Standard, Version 2.1 (from Version 2.0) include:
+
+
+
+<ul>
+
+ <li>Added two characters (U+20AC and U+FFFC). </li>
+
+ <li>Amended bidi properties for U+0026, U+002E, U+0040, U+2007. </li>
+
+ <li>Corrected case mappings for U+018E, U+019F, U+01DD, U+0258, U+0275, U+03C2, U+1E9B. </li>
+
+ <li>Changed combining order class for U+0F71. </li>
+
+ <li>Corrected canonical decompositions for U+0F73, U+1FBE. </li>
+
+ <li>Changed decomposition for U+FB1F from compatibility to canonical. </li>
+
+ <li>Added compatibility decompositions for U+FBE8, U+FBE9, U+FBF9..U+FBFB. </li>
+
+ <li>Corrected compatibility decompositions for U+2469, U+246A, U+3358. </li>
+
+</ul>
+
+
+
+<h3>Version 2.1.1</h3>
+
+
+
+<p><i>This version was for internal change tracking only, and never publicly released.</i></p>
+
+
+
+<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.0.0">Unicode 2.0.0</a> </h3>
+
+
+
+<p>The modifications made in updating UnicodeData.txt for the Unicode
+
+Standard, Version 2.0 include:
+
+
+
+<ul>
+
+ <li>Fixed decompositions with TONOS to use correct NSM: 030D. </li>
+
+ <li>Removed old Hangul Syllables; mapping to new characters are in a separate table. </li>
+
+ <li>Marked compatibility decompositions with additional tags. </li>
+
+ <li>Changed old tag names for clarity. </li>
+
+ <li>Revision of decompositions to use first-level decomposition, instead of maximal
+
+ decomposition. </li>
+
+ <li>Correction of all known errors in decompositions from earlier versions. </li>
+
+ <li>Added control code names (as old Unicode names). </li>
+
+ <li>Added Hangul Jamo decompositions. </li>
+
+ <li>Added Number category to match properties list in book. </li>
+
+ <li>Fixed categories of Koranic Arabic marks. </li>
+
+ <li>Fixed categories of precomposed characters to match decomposition where possible. </li>
+
+ <li>Added Hebrew cantillation marks and the Tibetan script. </li>
+
+ <li>Added place holders for ranges such as CJK Ideographic Area and the Private Use Area. </li>
+
+ <li>Added categories Me, Sk, Pc, Nl, Cs, Cf, and rectified a number of mistakes in the
+
+ database. </li>
+
+</ul>
+
+</body>
+
+</html>
+
diff --git a/contrib/perl5/lib/unicode/mktables.PL b/contrib/perl5/lib/unicode/mktables.PL
new file mode 100755
index 0000000..cef6936
--- /dev/null
+++ b/contrib/perl5/lib/unicode/mktables.PL
@@ -0,0 +1,339 @@
+#!../../miniperl
+
+$UnicodeData = "Unicode.300";
+
+# Note: we try to keep filenames unique within first 8 chars. Using
+# subdirectories for the following helps.
+mkdir "In", 0777;
+mkdir "Is", 0777;
+mkdir "To", 0777;
+
+@todo = (
+# typical
+
+ ['IsWord', '$cat =~ /^L[ulo]|^Nd/ or $code eq "005F"', ''],
+ ['IsAlnum', '$cat =~ /^L[ulo]|^Nd/', ''],
+ ['IsAlpha', '$cat =~ /^L[ulo]/', ''],
+ ['IsSpace', '$cat =~ /^Z/ or $code lt "0020" and chr(hex $code) =~ /^\s/', ''],
+ ['IsDigit', '$cat =~ /^Nd$/', ''],
+ ['IsUpper', '$cat =~ /^Lu$/', ''],
+ ['IsLower', '$cat =~ /^Ll$/', ''],
+ ['IsASCII', 'hex $code <= 127', ''],
+ ['IsCntrl', '$cat =~ /^C/', ''],
+ ['IsGraph', '$cat =~ /^[^C]/ and $code ne "0020"', ''],
+ ['IsPrint', '$cat =~ /^[^C]/', ''],
+ ['IsPunct', '$cat =~ /^P/', ''],
+ ['IsXDigit', '$code =~ /^00(3[0-9]|[46][1-6])$/', ''],
+ ['ToUpper', '$up', '$up'],
+ ['ToLower', '$down', '$down'],
+ ['ToTitle', '$title', '$title'],
+ ['ToDigit', '$dec ne ""', '$dec'],
+
+# Name
+
+ ['Name', '$name', '$name'],
+
+# Category
+
+ ['Category', '$cat', '$cat'],
+
+# Normative
+
+ ['IsM', '$cat =~ /^M/', ''], # Mark
+ ['IsMn', '$cat eq "Mn"', ''], # Mark, Non-Spacing
+ ['IsMc', '$cat eq "Mc"', ''], # Mark, Combining
+
+ ['IsN', '$cat =~ /^N/', ''], # Number
+ ['IsNd', '$cat eq "Nd"', ''], # Number, Decimal Digit
+ ['IsNo', '$cat eq "No"', ''], # Number, Other
+
+ ['IsZ', '$cat =~ /^Z/', ''], # Zeparator
+ ['IsZs', '$cat eq "Zs"', ''], # Separator, Space
+ ['IsZl', '$cat eq "Zl"', ''], # Separator, Line
+ ['IsZp', '$cat eq "Zp"', ''], # Separator, Paragraph
+
+ ['IsC', '$cat =~ /^C/', ''], # Crazy
+ ['IsCc', '$cat eq "Cc"', ''], # Other, Control or Format
+ ['IsCo', '$cat eq "Co"', ''], # Other, Private Use
+ ['IsCn', '$cat eq "Cn"', ''], # Other, Not Assigned
+
+# Informative
+
+ ['IsL', '$cat =~ /^L/', ''], # Letter
+ ['IsLu', '$cat eq "Lu"', ''], # Letter, Uppercase
+ ['IsLl', '$cat eq "Ll"', ''], # Letter, Lowercase
+ ['IsLt', '$cat eq "Lt"', ''], # Letter, Titlecase
+ ['IsLm', '$cat eq "Lm"', ''], # Letter, Modifier
+ ['IsLo', '$cat eq "Lo"', ''], # Letter, Other
+
+ ['IsP', '$cat =~ /^P/', ''], # Punctuation
+ ['IsPd', '$cat eq "Pd"', ''], # Punctuation, Dash
+ ['IsPs', '$cat eq "Ps"', ''], # Punctuation, Open
+ ['IsPe', '$cat eq "Pe"', ''], # Punctuation, Close
+ ['IsPo', '$cat eq "Po"', ''], # Punctuation, Other
+
+ ['IsS', '$cat =~ /^S/', ''], # Symbol
+ ['IsSm', '$cat eq "Sm"', ''], # Symbol, Math
+ ['IsSc', '$cat eq "Sc"', ''], # Symbol, Currency
+ ['IsSo', '$cat eq "So"', ''], # Symbol, Other
+
+# Combining class
+ ['CombiningClass', '$comb', '$comb'],
+
+# BIDIRECTIONAL PROPERTIES
+
+ ['Bidirectional', '$bid', '$bid'],
+
+# Strong types:
+
+ ['IsBidiL', '$bid eq "L"', ''], # Left-Right; Most alphabetic,
+ # syllabic, and logographic
+ # characters (e.g., CJK
+ # ideographs)
+ ['IsBidiR', '$bid eq "R"', ''], # Right-Left; Arabic, Hebrew,
+ # and punctuation specific to
+ # those scripts
+
+# Weak types:
+
+ ['IsBidiEN','$bid eq "EN"', ''], # European Number
+ ['IsBidiES','$bid eq "ES"', ''], # European Number Separator
+ ['IsBidiET','$bid eq "ET"', ''], # European Number Terminator
+ ['IsBidiAN','$bid eq "AN"', ''], # Arabic Number
+ ['IsBidiCS','$bid eq "CS"', ''], # Common Number Separator
+
+# Separators:
+
+ ['IsBidiB', '$bid eq "B"', ''], # Block Separator
+ ['IsBidiS', '$bid eq "S"', ''], # Segment Separator
+
+# Neutrals:
+
+ ['IsBidiWS','$bid eq "WS"', ''], # Whitespace
+ ['IsBidiON','$bid eq "ON"', ''], # Other Neutrals ; All other
+ # characters: punctuation,
+ # symbols
+
+# Decomposition
+
+ ['Decomposition', '$decomp', '$decomp'],
+ ['IsDecoCanon', '$decomp && $decomp !~ /^</', ''],
+ ['IsDecoCompat', '$decomp =~ /^</', ''],
+ ['IsDCfont', '$decomp =~ /^<font>/', ''],
+ ['IsDCnoBreak', '$decomp =~ /^<noBreak>/', ''],
+ ['IsDCinitial', '$decomp =~ /^<initial>/', ''],
+ ['IsDCinital', '$decomp =~ /^<medial>/', ''],
+ ['IsDCfinal', '$decomp =~ /^<final>/', ''],
+ ['IsDCisolated', '$decomp =~ /^<isolated>/', ''],
+ ['IsDCcircle', '$decomp =~ /^<circle>/', ''],
+ ['IsDCsuper', '$decomp =~ /^<super>/', ''],
+ ['IsDCsub', '$decomp =~ /^<sub>/', ''],
+ ['IsDCvertical', '$decomp =~ /^<vertical>/', ''],
+ ['IsDCwide', '$decomp =~ /^<wide>/', ''],
+ ['IsDCnarrow', '$decomp =~ /^<narrow>/', ''],
+ ['IsDCsmall', '$decomp =~ /^<small>/', ''],
+ ['IsDCsquare', '$decomp =~ /^<square>/', ''],
+ ['IsDCcompat', '$decomp =~ /^<compat>/', ''],
+
+# Number
+
+ ['Number', '$num', '$num'],
+
+# Mirrored
+
+ ['IsMirrored', '$mir eq "Y"', ''],
+
+# Arabic
+
+ ['ArabLink', '1', '$link'],
+ ['ArabLnkGrp', '1', '$linkgroup'],
+
+# Jamo
+
+ ['JamoShort', '1', '$short'],
+
+# Syllables
+
+ ['IsSylV', '$syl eq "V"', ''],
+ ['IsSylU', '$syl eq "U"', ''],
+ ['IsSylI', '$syl eq "I"', ''],
+ ['IsSylA', '$syl eq "A"', ''],
+ ['IsSylE', '$syl eq "E"', ''],
+ ['IsSylC', '$syl eq "C"', ''],
+ ['IsSylO', '$syl eq "O"', ''],
+ ['IsSylWV', '$syl eq "V"', ''],
+ ['IsSylWI', '$syl eq "I"', ''],
+ ['IsSylWA', '$syl eq "A"', ''],
+ ['IsSylWE', '$syl eq "E"', ''],
+ ['IsSylWC', '$syl eq "C"', ''],
+);
+
+# This is not written for speed...
+
+foreach $file (@todo) {
+ my ($table, $wanted, $val) = @$file;
+ next if @ARGV and not grep { $_ eq $table } @ARGV;
+ print $table,"\n";
+ if ($table =~ /^(Is|In|To)(.*)/) {
+ open(OUT, ">$1/$2.pl") or die "Can't create $1/$2.pl: $!\n";
+ }
+ else {
+ open(OUT, ">$table.pl") or die "Can't create $table.pl: $!\n";
+ }
+ print OUT <<EOH;
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by $0 from e.g. $UnicodeData.
+# Any changes made here will be lost!
+EOH
+ print OUT <<"END";
+return <<'END';
+END
+ print OUT proplist($table, $wanted, $val);
+ print OUT "END\n";
+ close OUT;
+}
+
+# Must treat blocks specially.
+
+exit if @ARGV and not grep { $_ eq Block } @ARGV;
+print "Block\n";
+open(UD, 'Blocks.txt') or die "Can't open blocks.txt: $!\n";
+open(OUT, ">Block.pl") or die "Can't create $table.pl: $!\n";
+print OUT <<EOH;
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by $0 from e.g. $UnicodeData.
+# Any changes made here will be lost!
+EOH
+print OUT <<"END";
+return <<'END';
+END
+
+while (<UD>) {
+ next if /^#/;
+ next if /^$/;
+ chomp;
+ ($code, $last, $name) = split(/; */);
+ if ($name) {
+ print OUT "$code $last $name\n";
+ $name =~ s/\s+//g;
+ open(BLOCK, ">In/$name.pl");
+ print BLOCK <<EOH;
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is built by $0 from e.g. $UnicodeData.
+# Any changes made here will be lost!
+EOH
+ print BLOCK <<"END2";
+return <<'END';
+$code $last
+END
+END2
+ close BLOCK;
+ }
+}
+
+print OUT "END\n";
+close OUT;
+
+##################################################
+
+sub proplist {
+ my ($table, $wanted, $val) = @_;
+ my @wanted;
+ my $out;
+ my $split;
+
+ if ($table =~ /^Arab/) {
+ open(UD, "ArabShap.txt") or warn "Can't open $table: $!";
+
+ $split = '($code, $name, $link, $linkgroup) = split(/; */);';
+ }
+ elsif ($table =~ /^Jamo/) {
+ open(UD, "Jamo.txt") or warn "Can't open $table: $!";
+
+ $split = '($code, $short, $name) = split(/; */); $code =~ s/^U\+//;';
+ }
+ elsif ($table =~ /^IsSyl/) {
+ open(UD, "syllables.txt") or warn "Can't open $table: $!";
+
+ $split = '($code, $short, $syl) = split(/; */); $code =~ s/^U\+//;';
+ }
+ else {
+ open(UD, $UnicodeData) or warn "Can't open $UnicodeData: $!";
+
+ $split = '($code, $name, $cat, $comb, $bid, $decomp, $dec, $dig, $num, $mir, $uni1,
+ $comment, $up, $down, $title) = split(/;/);';
+ }
+
+ if ($table =~ /^(?:To|Is)[A-Z]/) {
+ eval <<"END";
+ while (<UD>) {
+ next if /^#/;
+ next if /^\s/;
+ chop;
+ $split
+ if ($wanted) {
+ push(\@wanted, [hex \$code, hex $val, \$name =~ /, First>\$/]);
+ }
+ }
+END
+ die $@ if $@;
+
+ while (@wanted) {
+ $beg = shift @wanted;
+ $last = $beg;
+ while (@wanted and $wanted[0]->[0] == $last->[0] + 1 and
+ (not $val or $wanted[0]->[1] == $last->[1] + 1)) {
+ $last = shift @wanted;
+ }
+ $out .= sprintf "%04x", $beg->[0];
+ if ($beg->[2]) {
+ $last = shift @wanted;
+ }
+ if ($beg == $last) {
+ $out .= "\t";
+ }
+ else {
+ $out .= sprintf "\t%04x", $last->[0];
+ }
+ $out .= sprintf "\t%04x", $beg->[1] if $val;
+ $out .= "\n";
+ }
+ }
+ else {
+ eval <<"END";
+ while (<UD>) {
+ next if /^#/;
+ next if /^\s*\$/;
+ chop;
+ $split
+ if ($wanted) {
+ push(\@wanted, [hex \$code, $val, \$name =~ /, First>\$/]);
+ }
+ }
+END
+ die $@ if $@;
+
+ while (@wanted) {
+ $beg = shift @wanted;
+ $last = $beg;
+ while (@wanted and $wanted[0]->[0] == $last->[0] + 1 and
+ ($wanted[0]->[1] eq $last->[1])) {
+ $last = shift @wanted;
+ }
+ $out .= sprintf "%04x", $beg->[0];
+ if ($beg->[2]) {
+ $last = shift @wanted;
+ }
+ if ($beg == $last) {
+ $out .= "\t";
+ }
+ else {
+ $out .= sprintf "\t%04x", $last->[0];
+ }
+ $out .= sprintf "\t%s\n", $beg->[1];
+ }
+ }
+ $out;
+}
+
+# eof
diff --git a/contrib/perl5/lib/unicode/syllables.txt b/contrib/perl5/lib/unicode/syllables.txt
new file mode 100644
index 0000000..40e946e
--- /dev/null
+++ b/contrib/perl5/lib/unicode/syllables.txt
@@ -0,0 +1,1329 @@
+################################################################################
+#
+# V: as "u" in "but" (often represented with schwa or small uppercase lambda)
+# U: as "oo" in "fool"
+# I: as "ea" in "meat"
+# A: as "a" in "father"
+# E: as "a" in "hate"
+# C: the consonant form having no vowel element
+# O: as "o" in "note"
+#
+# Vowel identifiers are assumed short, doubled identifiers are considered long
+# (following Cushitic rules). Dipthong syllables are identified with "W" as
+# per Ethiopic and Canadian syllabary character names.
+#
+#
+# WV WVV WU WUU WI WII WA WAA WAI WAAI WE WEE WC WO WOO
+#
+# V VV U UU I II A AA AI AAI E EE C O OO
+#
+################################################################################
+
+#
+# Ethiopic
+#
+1200; HA; V
+1201; HU; U
+1202; HI; I
+1203; HAA; A
+1204; HEE; E
+1205; HE; C
+1206; HO; O
+1208; LA; V
+1209; LU; U
+120A; LI; I
+120B; LAA; A
+120C; LEE; E
+120D; LE; C
+120E; LO; O
+120F; LWA; WA
+1210; HHA; V
+1211; HHU; U
+1212; HHI; I
+1213; HHAA; A
+1214; HHEE; E
+1215; HHE; C
+1216; HHO; O
+1217; HHWA; WA
+1218; MA; V
+1219; MU; U
+121A; MI; I
+121B; MAA; A
+121C; MEE; E
+121D; ME; C
+121E; MO; O
+121F; MWA; WA
+1220; SZA; V
+1221; SZU; U
+1222; SZI; I
+1223; SZAA; A
+1224; SZEE; E
+1225; SZE; C
+1226; SZO; O
+1227; SZWA; WA
+1228; RA; V
+1229; RU; U
+122A; RI; I
+122B; RAA; A
+122C; REE; E
+122D; RE; C
+122E; RO; O
+122F; RWA; WA
+1230; SA; V
+1231; SU; U
+1232; SI; I
+1233; SAA; A
+1234; SEE; E
+1235; SE; C
+1236; SO; O
+1237; SWA; WA
+1238; SHA; V
+1239; SHU; U
+123A; SHI; I
+123B; SHAA; A
+123C; SHEE; E
+123D; SHE; C
+123E; SHO; O
+123F; SHWA; WA
+1240; QA; V
+1241; QU; U
+1242; QI; I
+1243; QAA; A
+1244; QEE; E
+1245; QE; C
+1246; QO; O
+1248; QWA; WV
+124A; QWI; WI
+124B; QWAA; WA
+124C; QWEE; WE
+124D; QWE; WC
+1250; QHA; V
+1251; QHU; U
+1252; QHI; I
+1253; QHAA; A
+1254; QHEE; E
+1255; QHE; C
+1256; QHO; O
+1258; QHWA; WV
+125A; QHWI; WI
+125B; QHWAA; WA
+125C; QHWEE; WE
+125D; QHWE; WC
+1260; BA; V
+1261; BU; U
+1262; BI; I
+1263; BAA; A
+1264; BEE; E
+1265; BE; C
+1266; BO; O
+1267; BWA; WA
+1268; VA; V
+1269; VU; U
+126A; VI; I
+126B; VAA; A
+126C; VEE; E
+126D; VE; C
+126E; VO; O
+126F; VWA; WA
+1270; TA; V
+1271; TU; U
+1272; TI; I
+1273; TAA; A
+1274; TEE; E
+1275; TE; C
+1276; TO; O
+1277; TWA; WA
+1278; CA; V
+1279; CU; U
+127A; CI; I
+127B; CAA; A
+127C; CEE; E
+127D; CE; C
+127E; CO; O
+127F; CWA; WA
+1280; XA; V
+1281; XU; U
+1282; XI; I
+1283; XAA; A
+1284; XEE; E
+1285; XE; C
+1286; XO; O
+1288; XWA; WV
+128A; XWI; WI
+128B; XWAA; WA
+128C; XWEE; WE
+128D; XWE; WC
+1290; NA; V
+1291; NU; U
+1292; NI; I
+1293; NAA; A
+1294; NEE; E
+1295; NE; C
+1296; NO; O
+1297; NWA; WA
+1298; NYA; V
+1299; NYU; U
+129A; NYI; I
+129B; NYAA; A
+129C; NYEE; E
+129D; NYE; C
+129E; NYO; O
+129F; NYWA; WA
+12A0; GLOTTAL A; V
+12A1; GLOTTAL U; U
+12A2; GLOTTAL I; I
+12A3; GLOTTAL AA; A
+12A4; GLOTTAL EE; E
+12A5; GLOTTAL E; C
+12A6; GLOTTAL O; O
+12A7; GLOTTAL WA; WA
+12A8; KA; V
+12A9; KU; U
+12AA; KI; I
+12AB; KAA; A
+12AC; KEE; E
+12AD; KE; C
+12AE; KO; O
+12B0; KWA; WV
+12B2; KWI; WI
+12B3; KWAA; WA
+12B4; KWEE; WE
+12B5; KWE; WC
+12B8; KXA; V
+12B9; KXU; U
+12BA; KXI; I
+12BB; KXAA; A
+12BC; KXEE; E
+12BD; KXE; C
+12BE; KXO; O
+12C0; KXWA; WV
+12C2; KXWI; WI
+12C3; KXWAA; WA
+12C4; KXWEE; WE
+12C5; KXWE; WC
+12C8; WA; V
+12C9; WU; U
+12CA; WI; I
+12CB; WAA; A
+12CC; WEE; E
+12CD; WE; C
+12CE; WO; O
+12D0; PHARYNGEAL A; V
+12D1; PHARYNGEAL U; U
+12D2; PHARYNGEAL I; I
+12D3; PHARYNGEAL AA; A
+12D4; PHARYNGEAL EE; E
+12D5; PHARYNGEAL E; C
+12D6; PHARYNGEAL O; O
+12D8; ZA; V
+12D9; ZU; U
+12DA; ZI; I
+12DB; ZAA; A
+12DC; ZEE; E
+12DD; ZE; C
+12DE; ZO; O
+12DF; ZWA; WA
+12E0; ZHA; V
+12E1; ZHU; U
+12E2; ZHI; I
+12E3; ZHAA; A
+12E4; ZHEE; E
+12E5; ZHE; C
+12E6; ZHO; O
+12E7; ZHWA; WA
+12E8; YA; V
+12E9; YU; U
+12EA; YI; I
+12EB; YAA; A
+12EC; YEE; E
+12ED; YE; C
+12EE; YO; O
+12F0; DA; V
+12F1; DU; U
+12F2; DI; I
+12F3; DAA; A
+12F4; DEE; E
+12F5; DE; C
+12F6; DO; O
+12F7; DWA; WA
+12F8; DDA; V
+12F9; DDU; U
+12FA; DDI; I
+12FB; DDAA; A
+12FC; DDEE; E
+12FD; DDE; C
+12FE; DDO; O
+12FF; DDWA; WA
+1300; JA; V
+1301; JU; U
+1302; JI; I
+1303; JAA; A
+1304; JEE; E
+1305; JE; C
+1306; JO; O
+1307; JWA; WA
+1308; GA; V
+1309; GU; U
+130A; GI; I
+130B; GAA; A
+130C; GEE; E
+130D; GE; C
+130E; GO; O
+1310; GWA; WV
+1312; GWI; WI
+1313; GWAA; WA
+1314; GWEE; WE
+1315; GWE; WC
+1318; GGA; V
+1319; GGU; U
+131A; GGI; I
+131B; GGAA; A
+131C; GGEE; E
+131D; GGE; C
+131E; GGO; O
+1320; THA; V
+1321; THU; U
+1322; THI; I
+1323; THAA; A
+1324; THEE; E
+1325; THE; C
+1326; THO; O
+1327; THWA; WA
+1328; CHA; V
+1329; CHU; U
+132A; CHI; I
+132B; CHAA; A
+132C; CHEE; E
+132D; CHE; C
+132E; CHO; O
+132F; CHWA; WA
+1330; PHA; V
+1331; PHU; U
+1332; PHI; I
+1333; PHAA; A
+1334; PHEE; E
+1335; PHE; C
+1336; PHO; O
+1337; PHWA; WA
+1338; TSA; V
+1339; TSU; U
+133A; TSI; I
+133B; TSAA; A
+133C; TSEE; E
+133D; TSE; C
+133E; TSO; O
+133F; TSWA; WA
+1340; TZA; V
+1341; TZU; U
+1342; TZI; I
+1343; TZAA; A
+1344; TZEE; E
+1345; TZE; C
+1346; TZO; O
+1348; FA; V
+1349; FU; U
+134A; FI; I
+134B; FAA; A
+134C; FEE; E
+134D; FE; C
+134E; FO; O
+134F; FWA; WA
+1350; PA; V
+1351; PU; U
+1352; PI; I
+1353; PAA; A
+1354; PEE; E
+1355; PE; C
+1356; PO; O
+1357; PWA; WA
+#
+# Cherokee
+#
+13A0; A; A
+13A1; E; E
+13A2; I; I
+13A3; O; O
+13A4; U; U
+13A5; V; V
+13A6; GA; A
+13A7; KA; A
+13A8; GE; E
+13A9; GI; I
+13AA; GO; O
+13AB; GU; U
+13AC; GV; V
+13AD; HA; A
+13AE; HE; E
+13AF; HI; I
+13B0; HO; O
+13B1; HU; U
+13B2; HV; V
+13B3; LA; A
+13B4; LE; E
+13B5; LI; I
+13B6; LO; O
+13B7; LU; U
+13B8; LV; V
+13B9; MA; A
+13BA; ME; E
+13BB; MI; I
+13BC; MO; O
+13BD; MU; U
+13BE; NA; A
+13BF; HNA; A
+13C0; NAH; C
+13C1; NE; E
+13C2; NI; I
+13C3; NO; O
+13C4; NU; U
+13C5; NV; V
+13C6; QUA; A
+13C7; QUE; E
+13C8; QUI; I
+13C9; QUO; O
+13CA; QUU; U
+13CB; QUV; V
+13CC; SA; A
+13CD; S; C
+13CE; SE; E
+13CF; SI; I
+13D0; SO; O
+13D1; SU; U
+13D2; SV; V
+13D3; DA; A
+13D4; TA; A
+13D5; DE; E
+13D6; TE; E
+13D7; DI; I
+13D8; TI; I
+13D9; DO; O
+13DA; DU; U
+13DB; DV; V
+13DC; DLA; A
+13DD; TLA; A
+13DE; TLE; E
+13DF; TLI; I
+13E0; TLO; O
+13E1; TLU; U
+13E2; TLV; V
+13E3; TSA; A
+13E4; TSE; E
+13E5; TSI; I
+13E6; TSO; O
+13E7; TSU; U
+13E8; TSV; V
+13E9; WA; A
+13EA; WE; E
+13EB; WI; I
+13EC; WO; O
+13ED; WU; U
+13EE; WV; V
+13EF; YA; A
+13F0; YE; E
+13F1; YI; I
+13F2; YO; O
+13F3; YU; U
+13F4; YV; V
+#
+# 1400 Unified Canadian Aboriginal Syllabics 167F
+#
+1401; E; E
+1402; AAI; AAI
+1403; I; I
+1404; II; II
+1405; O; O
+1406; OO; OO
+1407; Y-CREE OO; OO
+1408; CARRIER EE; EE
+1409; CARRIER I; I
+140A; A; A
+140B; AA; AA
+140C; WE; WE
+140D; WEST-CREE WE; WE
+140E; WI; WI
+140F; WEST-CREE WI; WI
+1410; WII; WII
+1411; WEST-CREE WII; WII
+1412; WO; WO
+1413; WEST-CREE WO; WO
+1414; WOO; WOO
+1415; WEST-CREE WOO; WOO
+1416; NASKAPI WOO; WOO
+1417; WA; WA
+1418; WEST-CREE WA; WA
+1419; WAA; WAA
+141A; WEST-CREE WAA; WAA
+141B; NASKAPI WAA; WAA
+141C; AI; AI
+141D; Y-CREE W; C
+142B; EN; C
+142C; IN; C
+142D; ON; C
+142E; AN; C
+142F; PE; E
+1430; PAAI; AAI
+1431; PI; I
+1432; PII; II
+1433; PO; O
+1434; POO; OO
+1435; Y-CREE POO; OO
+1436; CARRIER HEE; EE
+1437; CARRIER HI; I
+1438; PA; A
+1439; PAA; AA
+143A; PWE; WE
+143B; WEST-CREE PWE; WE
+143C; PWI; WI
+143D; WEST-CREE PWI; WI
+143E; PWII; WII
+143F; WEST-CREE PWII; WII
+1440; PWO; WO
+1441; WEST-CREE PWO; WO
+1442; PWOO; WOO
+1443; WEST-CREE PWOO; WOO
+1444; PWA; WA
+1445; WEST-CREE PWA; WA
+1446; PWAA; WAA
+1447; WEST-CREE PWAA; WAA
+1448; Y-CREE PWAA; WAA
+1449; P; C
+144A; WEST-CREE P; C
+144B; CARRIER H; C
+144C; TE; E
+144D; TAAI; AAI
+144E; TI; I
+144F; TII; II
+1450; TO; O
+1451; TOO; OO
+1452; Y-CREE TOO; OO
+1453; CARRIER DEE; EE
+1454; CARRIER DI; I
+1455; TA; A
+1456; TAA; AA
+1457; TWE; WE
+1458; WEST-CREE TWE; WE
+1459; TWI; WI
+145A; WEST-CREE TWI; WI
+145B; TWII; WII
+145C; WEST-CREE TWII; WII
+145D; TWO; WO
+145E; WEST-CREE TWO; WO
+145F; TWOO; WOO
+1460; WEST-CREE TWOO; WOO
+1461; TWA; WA
+1462; WEST-CREE TWA; WA
+1463; TWAA; WAA
+1464; WEST-CREE TWAA; WAA
+1465; NASKAPI TWAA; WAA
+1466; T; C
+1467; TTE; E
+1468; TTI; I
+1469; TTO; O
+146A; TTA; A
+146B; KE; E
+146C; KAAI; AAI
+146D; KI; I
+146E; KII; II
+146F; KO; O
+1470; KOO; OO
+1471; Y-CREE KOO; OO
+1472; KA; A
+1473; KAA; AA
+1474; KWE; WE
+1475; WEST-CREE KWE; WE
+1476; KWI; WI
+1477; WEST-CREE KWI; WI
+1478; KWII; WII
+1479; WEST-CREE KWII; WII
+147A; KWO; WO
+147B; WEST-CREE KWO; WO
+147C; KWOO; WOO
+147D; WEST-CREE KWOO; WOO
+147E; KWA; WA
+147F; WEST-CREE KWA; WA
+1480; KWAA; WAA
+1481; WEST-CREE KWAA; WAA
+1482; NASKAPI KWAA; WAA
+1483; K; C
+1484; KW; WC
+1485; SOUTH-SLAVEY KEH; C
+1486; SOUTH-SLAVEY KIH; C
+1487; SOUTH-SLAVEY KOH; C
+1488; SOUTH-SLAVEY KAH; C
+1489; CE; E
+148A; CAAI; AAI
+148B; CI; I
+148C; CII; II
+148D; CO; O
+148E; COO; OO
+148F; Y-CREE COO; OO
+1490; CA; A
+1491; CAA; AA
+1492; CWE; WE
+1493; WEST-CREE CWE; WE
+1494; CWI; WI
+1495; WEST-CREE CWI; WI
+1496; CWII; WII
+1497; WEST-CREE CWII; WII
+1498; CWO; WO
+1499; WEST-CREE CWO; WO
+149A; CWOO; WOO
+149B; WEST-CREE CWOO; WOO
+149C; CWA; WA
+149D; WEST-CREE CWA; WA
+149E; CWAA; WAA
+149F; WEST-CREE CWAA; WAA
+14A0; NASKAPI CWAA; WAA
+14A1; C; C
+14A2; SAYISI TH;
+14A3; ME; E
+14A4; MAAI; AAI
+14A5; MI; I
+14A6; MII; II
+14A7; MO; O
+14A8; MOO; OO
+14A9; Y-CREE MOO; OO
+14AA; MA; A
+14AB; MAA; AA
+14AC; MWE; WE
+14AD; WEST-CREE MWE; WE
+14AE; MWI; WI
+14AF; WEST-CREE MWI; WI
+14B0; MWII; WII
+14B1; WEST-CREE MWII; WII
+14B2; MWO; WO
+14B3; WEST-CREE MWO; WO
+14B4; MWOO; WOO
+14B5; WEST-CREE MWOO; WOO
+14B6; MWA; WA
+14B7; WEST-CREE MWA; WA
+14B8; MWAA; WAA
+14B9; WEST-CREE MWAA; WAA
+14BA; NASKAPI MWAA; WAA
+14BB; M; C
+14BC; WEST-CREE M; C
+14BD; MH; C
+14BE; ATHAPASCAN M; C
+14BF; SAYISI M; C
+14C0; NE; E
+14C1; NAAI; AAI
+14C2; NI; I
+14C3; NII; II
+14C4; NO; O
+14C5; NOO; OO
+14C6; Y-CREE NOO; OO
+14C7; NA; A
+14C8; NAA; AA
+14C9; NWE; WE
+14CA; WEST-CREE NWE; WE
+14CB; NWA; WA
+14CC; WEST-CREE NWA; WA
+14CD; NWAA; WAA
+14CE; WEST-CREE NWAA; WAA
+14CF; NASKAPI NWAA; WAA
+14D0; N; C
+14D1; CARRIER NG; C
+14D2; NH; C
+14D3; LE; E
+14D4; LAAI; AAI
+14D5; LI; I
+14D6; LII; II
+14D7; LO; O
+14D8; LOO; OO
+14D9; Y-CREE LOO; OO
+14DA; LA; A
+14DB; LAA; AA
+14DC; LWE; WE
+14DD; WEST-CREE LWE; WE
+14DE; LWI; WI
+14DF; WEST-CREE LWI; WI
+14E0; LWII; WII
+14E1; WEST-CREE LWII; WII
+14E2; LWO; WO
+14E3; WEST-CREE LWO; WO
+14E4; LWOO; WOO
+14E5; WEST-CREE LWOO; WOO
+14E6; LWA; WA
+14E7; WEST-CREE LWA; WA
+14E8; LWAA; WAA
+14E9; WEST-CREE LWAA; WAA
+14EA; L; C
+14EB; WEST-CREE L; C
+14EC; MEDIAL L; C
+14ED; SE; E
+14EE; SAAI; AAI
+14EF; SI; I
+14F0; SII; II
+14F1; SO; O
+14F2; SOO; OO
+14F3; Y-CREE SOO; OO
+14F4; SA; A
+14F5; SAA; AA
+14F6; SWE; WE
+14F7; WEST-CREE SWE; WE
+14F8; SWI; WI
+14F9; WEST-CREE SWI; WI
+14FA; SWII; WII
+14FB; WEST-CREE SWII; WII
+14FC; SWO; WO
+14FD; WEST-CREE SWO; WO
+14FE; SWOO; WOO
+14FF; WEST-CREE SWOO; WOO
+1500; SWA; WA
+1501; WEST-CREE SWA; WA
+1502; SWAA; WAA
+1503; WEST-CREE SWAA; WAA
+1504; NASKAPI SWAA; WAA
+1505; S; C
+1506; ATHAPASCAN S; C
+1507; SW; WC
+1508; BLACKFOOT S; C
+1509; MOOSE-CREE SK;C
+150A; NASKAPI SKW; C
+150B; NASKAPI S-W; C
+150C; NASKAPI SPWA; WA
+150D; NASKAPI STWA; WA
+150E; NASKAPI SKWA; WA
+150F; NASKAPI SCWA; WA
+1510; SHE; E
+1511; SHI; I
+1512; SHII; II
+1513; SHO; O
+1514; SHOO; OO
+1515; SHA; A
+1516; SHAA; AA
+1517; SHWE; WE
+1518; WEST-CREE SHWE; WE
+1519; SHWI; WI
+151A; WEST-CREE SHWI; WI
+151B; SHWII; WII
+151C; WEST-CREE SHWII; WII
+151D; SHWO; WO
+151E; WEST-CREE SHWO; WO
+151F; SHWOO; WOO
+1520; WEST-CREE SHWOO; WOO
+1521; SHWA; WA
+1522; WEST-CREE SHWA; WA
+1523; SHWAA; WAA
+1524; WEST-CREE SHWAA; WAA
+1525; SH; C
+1526; YE; E
+1527; YAAI; AAI
+1528; YI; I
+1529; YII; II
+152A; YO; O
+152B; YOO; OO
+152C; Y-CREE YOO; OO
+152D; YA; A
+152E; YAA; AA
+152F; YWE; WE
+1530; WEST-CREE YWE; WE
+1531; YWI; WI
+1532; WEST-CREE YWI; WI
+1533; YWII; WII
+1534; WEST-CREE YWII; WII
+1535; YWO; WO
+1536; WEST-CREE YWO; WO
+1537; YWOO; WOO
+1538; WEST-CREE YWOO; WOO
+1539; YWA; WA
+153A; WEST-CREE YWA; WA
+153B; YWAA; WAA
+153C; WEST-CREE YWAA; WAA
+153D; NASKAPI YWAA; WAA
+153E; Y; C
+153F; BIBLE-CREE Y; C
+1540; WEST-CREE Y; C
+1541; SAYISI YI; I
+1542; RE; E
+1543; R-CREE RE; E
+1544; WEST-CREE LE; E
+1545; RAAI; AAI
+1546; RI; I
+1547; RII; II
+1548; RO; O
+1549; ROO; OO
+154A; WEST-CREE LO; O
+154B; RA; A
+154C; RAA; AA
+154D; WEST-CREE LA; A
+154E; RWAA; WAA
+154F; WEST-CREE RWAA; WAA
+1550; R; C
+1551; WEST-CREE R; C
+1552; MEDIAL R; C
+1553; FE; E
+1554; FAAI; AAI
+1555; FI; I
+1556; FII; II
+1557; FO; O
+1558; FOO; OO
+1559; FA; A
+155A; FAA; AA
+155B; FWAA; WAA
+155C; WEST-CREE FWAA; WAA
+155D; F; C
+155E; THE; E
+155F; N-CREE THE; E
+1560; THI; I
+1561; N-CREE THI; I
+1562; THII; II
+1563; N-CREE THII; II
+1564; THO; O
+1565; THOO; OO
+1566; THA; A
+1567; THAA; AA
+1568; THWAA; WAA
+1569; WEST-CREE THWAA; WAA
+156A; TH; C
+156B; TTHE; E
+156C; TTHI; I
+156D; TTHO; O
+156E; TTHA; A
+156F; TTH; C
+1570; TYE; E
+1571; TYI; I
+1572; TYO; O
+1573; TYA; A
+1574; NUNAVIK HE; E
+1575; NUNAVIK HI; I
+1576; NUNAVIK HII; II
+1577; NUNAVIK HO; O
+1578; NUNAVIK HOO; OO
+1579; NUNAVIK HA; A
+157A; NUNAVIK HAA; AA
+157B; NUNAVIK H; C
+157C; NUNAVUT H; C
+157D; HK; C
+157E; QAAI; AAI
+157F; QI; I
+1580; QII; II
+1581; QO; O
+1582; QOO; OO
+1583; QA; A
+1584; QAA; AA
+1585; Q; C
+1586; TLHE; E
+1587; TLHI; I
+1588; TLHO; O
+1589; TLHA; A
+158A; WEST-CREE RE; E
+158B; WEST-CREE RI; I
+158C; WEST-CREE RO; O
+158D; WEST-CREE RA; A
+158E; NGAAI; AAI
+158F; NGI; I
+1590; NGII; II
+1591; NGO; O
+1592; NGOO; OO
+1593; NGA; A
+1594; NGAA; AA
+1595; NG; C
+1596; NNG; C
+1597; SAYISI SHE; E
+1598; SAYISI SHI; I
+1599; SAYISI SHO; O
+159A; SAYISI SHA; A
+159B; WOODS-CREE THE; E
+159C; WOODS-CREE THI; I
+159D; WOODS-CREE THO; O
+159E; WOODS-CREE THA; A
+159F; WOODS-CREE TH; C
+15A0; LHI; I
+15A1; LHII; II
+15A2; LHO; O
+15A3; LHOO; OO
+15A4; LHA; A
+15A5; LHAA; AA
+15A6; LH; C
+15A7; TH-CREE THE; E
+15A8; TH-CREE THI; I
+15A9; TH-CREE THII; II
+15AA; TH-CREE THO; O
+15AB; TH-CREE THOO; OO
+15AC; TH-CREE THA; A
+15AD; TH-CREE THAA; AA
+15AE; TH-CREE TH; C
+15AF; AIVILIK B; C
+15B0; BLACKFOOT E; E
+15B1; BLACKFOOT I; I
+15B2; BLACKFOOT O; O
+15B3; BLACKFOOT A; A
+15B4; BLACKFOOT WE; E
+15B5; BLACKFOOT WI; I
+15B6; BLACKFOOT WO; O
+15B7; BLACKFOOT WA; A
+15B8; BLACKFOOT NE; E
+15B9; BLACKFOOT NI; I
+15BA; BLACKFOOT NO; O
+15BB; BLACKFOOT NA; A
+15BC; BLACKFOOT KE; E
+15BD; BLACKFOOT KI; I
+15BE; BLACKFOOT KO; O
+15BF; BLACKFOOT KA; A
+15C0; SAYISI HE; E
+15C1; SAYISI HI; I
+15C2; SAYISI HO; O
+15C3; SAYISI HA; A
+15C4; CARRIER GHU; U
+15C5; CARRIER GHO; O
+15C6; CARRIER GHE; E
+15C7; CARRIER GHEE; EE
+15C8; CARRIER GHI; I
+15C9; CARRIER GHA; A
+15CA; CARRIER RU; U
+15CB; CARRIER RO; O
+15CC; CARRIER RE; E
+15CD; CARRIER REE; EE
+15CE; CARRIER RI; I
+15CF; CARRIER RA; A
+15D0; CARRIER WU; U
+15D1; CARRIER WO; O
+15D2; CARRIER WE; E
+15D3; CARRIER WEE; EE
+15D4; CARRIER WI; I
+15D5; CARRIER WA; A
+15D6; CARRIER HWU; WU
+15D7; CARRIER HWO; WO
+15D8; CARRIER HWE; WE
+15D9; CARRIER HWEE; WEE
+15DA; CARRIER HWI; WI
+15DB; CARRIER HWA; WA
+15DC; CARRIER THU; U
+15DD; CARRIER THO; O
+15DE; CARRIER THE; E
+15DF; CARRIER THEE; EE
+15E0; CARRIER THI; I
+15E1; CARRIER THA; A
+15E2; CARRIER TTU; U
+15E3; CARRIER TTO; O
+15E4; CARRIER TTE; E
+15E5; CARRIER TTEE; EE
+15E6; CARRIER TTI; I
+15E7; CARRIER TTA; A
+15E8; CARRIER PU; U
+15E9; CARRIER PO; O
+15EA; CARRIER PE; E
+15EB; CARRIER PEE; EE
+15EC; CARRIER PI; I
+15ED; CARRIER PA; A
+15EE; CARRIER P;
+15EF; CARRIER GU; U
+15F0; CARRIER GO; O
+15F1; CARRIER GE; E
+15F2; CARRIER GEE; EE
+15F3; CARRIER GI; I
+15F4; CARRIER GA; A
+15F5; CARRIER KHU; U
+15F6; CARRIER KHO; O
+15F7; CARRIER KHE; E
+15F8; CARRIER KHEE; EE
+15F9; CARRIER KHI; I
+15FA; CARRIER KHA; A
+15FB; CARRIER KKU; U
+15FC; CARRIER KKO; O
+15FD; CARRIER KKE; E
+15FE; CARRIER KKEE; EE
+15FF; CARRIER KKI; I
+1600; CARRIER KKA; A
+1601; CARRIER KK;
+1602; CARRIER NU; U
+1603; CARRIER NO; O
+1604; CARRIER NE; E
+1605; CARRIER NEE; EE
+1606; CARRIER NI; I
+1607; CARRIER NA; A
+1608; CARRIER MU; U
+1609; CARRIER MO; O
+160A; CARRIER ME; E
+160B; CARRIER MEE; EE
+160C; CARRIER MI; I
+160D; CARRIER MA; A
+160E; CARRIER YU; U
+160F; CARRIER YO; O
+1610; CARRIER YE; E
+1611; CARRIER YEE; EE
+1612; CARRIER YI; I
+1613; CARRIER YA; A
+1614; CARRIER JU; U
+1615; SAYISI JU; U
+1616; CARRIER JO; O
+1617; CARRIER JE; E
+1618; CARRIER JEE; EE
+1619; CARRIER JI; I
+161A; SAYISI JI; I
+161B; CARRIER JA; A
+161C; CARRIER JJU; U
+161D; CARRIER JJO; O
+161E; CARRIER JJE; E
+161F; CARRIER JJEE; EE
+1620; CARRIER JJI; I
+1621; CARRIER JJA; A
+1622; CARRIER LU; U
+1623; CARRIER LO; O
+1624; CARRIER LE; E
+1625; CARRIER LEE; EE
+1626; CARRIER LI; I
+1627; CARRIER LA; A
+1628; CARRIER DLU; U
+1629; CARRIER DLO; O
+162A; CARRIER DLE; E
+162B; CARRIER DLEE; EE
+162C; CARRIER DLI; I
+162D; CARRIER DLA; A
+162E; CARRIER LHU; U
+162F; CARRIER LHO; O
+1630; CARRIER LHE; E
+1631; CARRIER LHEE; EE
+1632; CARRIER LHI; I
+1633; CARRIER LHA; A
+1634; CARRIER TLHU; U
+1635; CARRIER TLHO; O
+1636; CARRIER TLHE; E
+1637; CARRIER TLHEE; EE
+1638; CARRIER TLHI; I
+1639; CARRIER TLHA; A
+163A; CARRIER TLU; U
+163B; CARRIER TLO; O
+163C; CARRIER TLE; E
+163D; CARRIER TLEE; EE
+163E; CARRIER TLI; I
+163F; CARRIER TLA; A
+1640; CARRIER ZU; U
+1641; CARRIER ZO; O
+1642; CARRIER ZE; E
+1643; CARRIER ZEE; EE
+1644; CARRIER ZI; I
+1645; CARRIER ZA; A
+1646; CARRIER Z;
+1647; CARRIER INITIAL Z;
+1648; CARRIER DZU; U
+1649; CARRIER DZO; O
+164A; CARRIER DZE; E
+164B; CARRIER DZEE; EE
+164C; CARRIER DZI; I
+164D; CARRIER DZA; A
+164E; CARRIER SU; U
+164F; CARRIER SO; O
+1650; CARRIER SE; E
+1651; CARRIER SEE; EE
+1652; CARRIER SI; I
+1653; CARRIER SA; A
+1654; CARRIER SHU; U
+1655; CARRIER SHO; O
+1656; CARRIER SHE; E
+1657; CARRIER SHEE; EE
+1658; CARRIER SHI; I
+1659; CARRIER SHA; A
+165A; CARRIER SH;
+165B; CARRIER TSU; U
+165C; CARRIER TSO; O
+165D; CARRIER TSE; E
+165E; CARRIER TSEE; EE
+165F; CARRIER TSI; I
+1660; CARRIER TSA; A
+1661; CARRIER CHU; U
+1662; CARRIER CHO; O
+1663; CARRIER CHE; E
+1664; CARRIER CHEE; EE
+1665; CARRIER CHI; I
+1666; CARRIER CHA; A
+1667; CARRIER TTSU; U
+1668; CARRIER TTSO; O
+1669; CARRIER TTSE; E
+166A; CARRIER TTSEE; EE
+166B; CARRIER TTSI; I
+166C; CARRIER TTSA; A
+166F; QAI; AI
+1670; NGAI; AI
+1671; NNGI; I
+1672; NNGII; II
+1673; NNGO; O
+1674; NNGOO; OO
+1675; NNGA; A
+1676; NNGAA; AA
+#
+# Katakana
+#
+30A1; SMALL A; A
+30A2; A; A
+30A3; SMALL I; I
+30A4; I; I
+30A5; SMALL U; U
+30A6; U; U
+30A7; SMALL E; E
+30A8; E; E
+30A9; SMALL O; O
+30AA; O; O
+30AB; KA; A
+30AC; GA; A
+30AD; KI; I
+30AE; GI; I
+30AF; KU; U
+30B0; GU; U
+30B1; KE; E
+30B2; GE; E
+30B3; KO; O
+30B4; GO; O
+30B5; SA; A
+30B6; ZA; A
+30B7; SI; I
+30B8; ZI; I
+30B9; SU; U
+30BA; ZU; U
+30BB; SE; E
+30BC; ZE; E
+30BD; SO; O
+30BE; ZO; O
+30BF; TA; A
+30C0; DA; A
+30C1; TI; I
+30C2; DI; I
+30C3; SMALL TU; U
+30C4; TU; U
+30C5; DU; U
+30C6; TE; E
+30C7; DE; E
+30C8; TO; O
+30C9; DO; O
+30CA; NA; A
+30CB; NI; I
+30CC; NU; U
+30CD; NE; E
+30CE; NO; O
+30CF; HA; A
+30D0; BA; A
+30D1; PA; A
+30D2; HI; I
+30D3; BI; I
+30D4; PI; I
+30D5; HU; U
+30D6; BU; U
+30D7; PU; U
+30D8; HE; E
+30D9; BE; E
+30DA; PE; E
+30DB; HO; O
+30DC; BO; O
+30DD; PO; O
+30DE; MA; A
+30DF; MI; I
+30E0; MU; U
+30E1; ME; E
+30E2; MO; O
+30E3; SMALL YA; A
+30E4; YA; A
+30E5; SMALL YU; U
+30E6; YU; U
+30E7; SMALL YO; O
+30E8; YO; O
+30E9; RA; A
+30EA; RI; I
+30EB; RU; U
+30EC; RE; E
+30ED; RO; O
+30EE; SMALL WA; A
+30EF; WA; A
+30F0; WI; I
+30F1; WE; E
+30F2; WO; O
+30F3; N; C
+30F4; VU; U
+30F5; SMALL KA; A
+30F6; SMALL KE; E
+30F7; VA; A
+30F8; VI; I
+30F9; VE; E
+30FA; VO; O
+32D0; CIRCLED KATAKANA A; A
+32D1; CIRCLED KATAKANA I; I
+32D2; CIRCLED KATAKANA U; U
+32D3; CIRCLED KATAKANA E; E
+32D4; CIRCLED KATAKANA O; O
+32D5; CIRCLED KATAKANA KA; A
+32D6; CIRCLED KATAKANA KI; I
+32D7; CIRCLED KATAKANA KU; U
+32D8; CIRCLED KATAKANA KE; E
+32D9; CIRCLED KATAKANA KO; O
+32DA; CIRCLED KATAKANA SA; A
+32DB; CIRCLED KATAKANA SI; I
+32DC; CIRCLED KATAKANA SU; U
+32DD; CIRCLED KATAKANA SE; E
+32DE; CIRCLED KATAKANA SO; O
+32DF; CIRCLED KATAKANA TA; A
+32E0; CIRCLED KATAKANA TI; I
+32E1; CIRCLED KATAKANA TU; U
+32E2; CIRCLED KATAKANA TE; E
+32E3; CIRCLED KATAKANA TO; O
+32E4; CIRCLED KATAKANA NA; A
+32E5; CIRCLED KATAKANA NI; I
+32E6; CIRCLED KATAKANA NU; U
+32E7; CIRCLED KATAKANA NE; E
+32E8; CIRCLED KATAKANA NO; O
+32E9; CIRCLED KATAKANA HA; A
+32EA; CIRCLED KATAKANA HI; I
+32EB; CIRCLED KATAKANA HU; U
+32EC; CIRCLED KATAKANA HE; E
+32ED; CIRCLED KATAKANA HO; O
+32EE; CIRCLED KATAKANA MA; A
+32EF; CIRCLED KATAKANA MI; I
+32F0; CIRCLED KATAKANA MU; U
+32F1; CIRCLED KATAKANA ME; E
+32F2; CIRCLED KATAKANA MO; O
+32F3; CIRCLED KATAKANA YA; A
+32F4; CIRCLED KATAKANA YU; U
+32F5; CIRCLED KATAKANA YO; O
+32F6; CIRCLED KATAKANA RA; A
+32F7; CIRCLED KATAKANA RI; I
+32F8; CIRCLED KATAKANA RU; U
+32F9; CIRCLED KATAKANA RE; E
+32FA; CIRCLED KATAKANA RO; O
+32FB; CIRCLED KATAKANA WA; A
+32FC; CIRCLED KATAKANA WI; I
+32FD; CIRCLED KATAKANA WE; E
+32FE; CIRCLED KATAKANA WO; O
+#
+# Katakana
+#
+FF66; HALFWIDTH WO; O
+FF67; HALFWIDTH SMALL A; A
+FF68; HALFWIDTH SMALL I; I
+FF69; HALFWIDTH SMALL U; U
+FF6A; HALFWIDTH SMALL E; E
+FF6B; HALFWIDTH SMALL O; O
+FF6C; HALFWIDTH SMALL YA; A
+FF6D; HALFWIDTH SMALL YU; U
+FF6E; HALFWIDTH SMALL YO; O
+FF6F; HALFWIDTH SMALL TU; U
+FF71; HALFWIDTH A; A
+FF72; HALFWIDTH I; I
+FF73; HALFWIDTH U; U
+FF74; HALFWIDTH E; E
+FF75; HALFWIDTH O; O
+FF76; HALFWIDTH KA; A
+FF77; HALFWIDTH KI; I
+FF78; HALFWIDTH KU; U
+FF79; HALFWIDTH KE; E
+FF7A; HALFWIDTH KO; O
+FF7B; HALFWIDTH SA; A
+FF7C; HALFWIDTH SI; I
+FF7D; HALFWIDTH SU; U
+FF7E; HALFWIDTH SE; E
+FF7F; HALFWIDTH SO; O
+FF80; HALFWIDTH TA; A
+FF81; HALFWIDTH TI; I
+FF82; HALFWIDTH TU; U
+FF83; HALFWIDTH TE; E
+FF84; HALFWIDTH TO; O
+FF85; HALFWIDTH NA; A
+FF86; HALFWIDTH NI; I
+FF87; HALFWIDTH NU; U
+FF88; HALFWIDTH NE; E
+FF89; HALFWIDTH NO; O
+FF8A; HALFWIDTH HA; A
+FF8B; HALFWIDTH HI; I
+FF8C; HALFWIDTH HU; U
+FF8D; HALFWIDTH HE; E
+FF8E; HALFWIDTH HO; O
+FF8F; HALFWIDTH MA; A
+FF90; HALFWIDTH MI; I
+FF91; HALFWIDTH MU; U
+FF92; HALFWIDTH ME; E
+FF93; HALFWIDTH MO; O
+FF94; HALFWIDTH YA; A
+FF95; HALFWIDTH YU; U
+FF96; HALFWIDTH YO; O
+FF97; HALFWIDTH RA; A
+FF98; HALFWIDTH RI; I
+FF99; HALFWIDTH RU; U
+FF9A; HALFWIDTH RE; E
+FF9B; HALFWIDTH RO; O
+FF9C; HALFWIDTH WA; A
+FF9D; HALFWIDTH N; C
+#
+# Hiragana
+#
+3041; SMALL A; A
+3042; A; A
+3043; SMALL I; I
+3044; I; I
+3045; SMALL U; U
+3046; U; U
+3047; SMALL E; E
+3048; E; E
+3049; SMALL O; O
+304A; O; O
+304B; KA; A
+304C; GA; A
+304D; KI; I
+304E; GI; I
+304F; KU; U
+3050; GU; U
+3051; KE; E
+3052; GE; E
+3053; KO; O
+3054; GO; O
+3055; SA; A
+3056; ZA; A
+3057; SI; I
+3058; ZI; I
+3059; SU; U
+305A; ZU; U
+305B; SE; E
+305C; ZE; E
+305D; SO; O
+305E; ZO; O
+305F; TA; A
+3060; DA; A
+3061; TI; I
+3062; DI; I
+3063; SMALL TU; U
+3064; TU; U
+3065; DU; U
+3066; TE; E
+3067; DE; E
+3068; TO; O
+3069; DO; O
+306A; NA; A
+306B; NI; I
+306C; NU; U
+306D; NE; E
+306E; NO; O
+306F; HA; A
+3070; BA; A
+3071; PA; A
+3072; HI; I
+3073; BI; I
+3074; PI; I
+3075; HU; U
+3076; BU; U
+3077; PU; U
+3078; HE; E
+3079; BE; E
+307A; PE; E
+307B; HO; O
+307C; BO; O
+307D; PO; O
+307E; MA; A
+307F; MI; I
+3080; MU; U
+3081; ME; E
+3082; MO; O
+3083; SMALL YA; A
+3084; YA; A
+3085; SMALL YU; U
+3086; YU; U
+3087; SMALL YO; O
+3088; YO; O
+3089; RA; A
+308A; RI; I
+308B; RU; U
+308C; RE; E
+308D; RO; O
+308E; SMALL WA; A
+308F; WA; A
+3090; WI; I
+3091; WE; E
+3092; WO; O
+3093; N; N
+3094; VU; U
diff --git a/contrib/perl5/lib/utf8.pm b/contrib/perl5/lib/utf8.pm
new file mode 100644
index 0000000..17ec37b
--- /dev/null
+++ b/contrib/perl5/lib/utf8.pm
@@ -0,0 +1,77 @@
+package utf8;
+
+$utf8::hint_bits = 0x00800000;
+
+sub import {
+ $^H |= $utf8::hint_bits;
+ $enc{caller()} = $_[1] if $_[1];
+}
+
+sub unimport {
+ $^H &= ~$utf8::hint_bits;
+}
+
+sub AUTOLOAD {
+ require "utf8_heavy.pl";
+ goto &$AUTOLOAD;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+utf8 - Perl pragma to enable/disable UTF-8 in source code
+
+=head1 SYNOPSIS
+
+ use utf8;
+ no utf8;
+
+=head1 DESCRIPTION
+
+WARNING: The implementation of Unicode support in Perl is incomplete.
+See L<perlunicode> for the exact details.
+
+The C<use utf8> pragma tells the Perl parser to allow UTF-8 in the
+program text in the current lexical scope. The C<no utf8> pragma
+tells Perl to switch back to treating the source text as literal
+bytes in the current lexical scope.
+
+This pragma is primarily a compatibility device. Perl versions
+earlier than 5.6 allowed arbitrary bytes in source code, whereas
+in future we would like to standardize on the UTF-8 encoding for
+source text. Until UTF-8 becomes the default format for source
+text, this pragma should be used to recognize UTF-8 in the source.
+When UTF-8 becomes the standard source format, this pragma will
+effectively become a no-op.
+
+Enabling the C<utf8> pragma has the following effects:
+
+=over
+
+=item *
+
+Bytes in the source text that have their high-bit set will be treated
+as being part of a literal UTF-8 character. This includes most literals
+such as identifiers, string constants, constant regular expression patterns
+and package names.
+
+=item *
+
+In the absence of inputs marked as UTF-8, regular expressions within the
+scope of this pragma will default to using character semantics instead
+of byte semantics.
+
+ @bytes_or_chars = split //, $data; # may split to bytes if data
+ # $data isn't UTF-8
+ {
+ use utf8; # force char semantics
+ @chars = split //, $data; # splits characters
+ }
+
+=head1 SEE ALSO
+
+L<perlunicode>, L<bytes>
+
+=cut
diff --git a/contrib/perl5/lib/utf8_heavy.pl b/contrib/perl5/lib/utf8_heavy.pl
new file mode 100644
index 0000000..8649e9e
--- /dev/null
+++ b/contrib/perl5/lib/utf8_heavy.pl
@@ -0,0 +1,221 @@
+package utf8;
+
+my $DEBUG = 0;
+my $seq = "AAA0000";
+
+sub DESTROY {}
+
+sub croak { require Carp; Carp::croak(@_) }
+
+sub SWASHNEW {
+ my ($class, $type, $list, $minbits, $none) = @_;
+ local $^D = 0 if $^D;
+ print STDERR "SWASHNEW @_\n" if $DEBUG;
+ my $extras;
+ my $bits;
+
+ if ($type and ref ${"${class}::{$type}"} eq $class) {
+ warn qq/Found \${"${class}::{$type}"}\n/ if $DEBUG;
+ return ${"${class}::{$type}"}; # Already there...
+ }
+
+ $type ||= $seq++;
+
+ my $caller;
+ my $i = 0;
+ while (($caller = caller($i)) eq __PACKAGE__) { $i++ }
+ my $encoding = $enc{$caller} || "unicode";
+ (my $file = $type) =~ s!::!/!g;
+ $file =~ s#^(I[sn]|To)([A-Z].*)#$1/$2#;
+ $list ||= eval { $caller->$type(); }
+ || do "$file.pl"
+ || do "$encoding/$file.pl"
+ || do "$encoding/Is/${type}.pl"
+ || croak("Can't find $encoding character property definition via $caller->$type or $file.pl");
+
+ $| = 1;
+
+ if ($list) {
+ my @tmp = split(/^/m, $list);
+ my %seen;
+ no warnings;
+ $extras = join '', grep /^[^0-9a-fA-F]/, @tmp;
+ $list = join '',
+ sort { hex $a <=> hex $b }
+ grep {/^([0-9a-fA-F]+)/ and not $seen{$1}++} @tmp; # XXX doesn't do ranges right
+ }
+
+ if ($none) {
+ my $hextra = sprintf "%04x", $none + 1;
+ $list =~ s/\tXXXX$/\t$hextra/mg;
+ }
+
+ if ($minbits < 32) {
+ my $top = 0;
+ while ($list =~ /^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+)?)(?:\t([0-9a-fA-F]+))?/mg) {
+ my $min = hex $1;
+ my $max = hex(defined $2 ? $2 : $1);
+ my $val = hex(defined $3 ? $3 : "");
+ $val += $max - $min if defined $3;
+ $top = $val if $val > $top;
+ }
+ $bits =
+ $top > 0xffff ? 32 :
+ $top > 0xff ? 16 :
+ $top > 1 ? 8 : 1
+ }
+ $bits = $minbits if $bits < $minbits;
+
+ my @extras;
+ for my $x ($extras) {
+ pos $x = 0;
+ while ($x =~ /^([^0-9a-fA-F\n])(.*)/mg) {
+ my $char = $1;
+ my $name = $2;
+ # print STDERR "$1 => $2\n" if $DEBUG;
+ if ($char =~ /[-+!]/) {
+ my ($c,$t) = split(/::/, $name, 2); # bogus use of ::, really
+ my $subobj = $c->SWASHNEW($t, "", 0, 0, 0);
+ push @extras, $name => $subobj;
+ $bits = $subobj->{BITS} if $bits < $subobj->{BITS};
+ }
+ }
+ }
+
+ print STDERR "CLASS = $class, TYPE => $type, BITS => $bits, NONE => $none\nEXTRAS =>\n$extras\nLIST =>\n$list\n" if $DEBUG;
+
+ ${"${class}::{$type}"} = bless {
+ TYPE => $type,
+ BITS => $bits,
+ EXTRAS => $extras,
+ LIST => $list,
+ NONE => $none,
+ @extras,
+ } => $class;
+}
+
+# NOTE: utf8.c:swash_init() assumes entries are never modified once generated.
+
+sub SWASHGET {
+ my ($self, $start, $len) = @_;
+ local $^D = 0 if $^D;
+ my $type = $self->{TYPE};
+ my $bits = $self->{BITS};
+ my $none = $self->{NONE};
+ print STDERR "SWASHGET @_ [$type/$bits/$none]\n" if $DEBUG;
+ my $end = $start + $len;
+ my $swatch = "";
+ my $key;
+ vec($swatch, $len - 1, $bits) = 0; # Extend to correct length.
+ if ($none) {
+ for $key (0 .. $len - 1) { vec($swatch, $key, $bits) = $none }
+ }
+
+ for ($self->{LIST}) {
+ pos $_ = 0;
+ if ($bits > 1) {
+ LINE:
+ while (/^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+)?)(?:\t([0-9a-fA-F]+))?/mg) {
+ my $min = hex $1;
+ my $max = (defined $2 ? hex $2 : $min);
+ my $val = hex $3;
+ next if $max < $start;
+# print "$min $max $val\n";
+ if ($none) {
+ if ($min < $start) {
+ $val += $start - $min if $val < $none;
+ $min = $start;
+ }
+ for ($key = $min; $key <= $max; $key++) {
+ last LINE if $key >= $end;
+# print STDERR "$key => $val\n" if $DEBUG;
+ vec($swatch, $key - $start, $bits) = $val;
+ ++$val if $val < $none;
+ }
+ }
+ else {
+ if ($min < $start) {
+ $val += $start - $min;
+ $min = $start;
+ }
+ for ($key = $min; $key <= $max; $key++, $val++) {
+ last LINE if $key >= $end;
+# print STDERR "$key => $val\n" if $DEBUG;
+ vec($swatch, $key - $start, $bits) = $val;
+ }
+ }
+ }
+ }
+ else {
+ LINE:
+ while (/^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+))?/mg) {
+ my $min = hex $1;
+ my $max = (defined $2 ? hex $2 : $min);
+ next if $max < $start;
+ if ($min < $start) {
+ $min = $start;
+ }
+ for ($key = $min; $key <= $max; $key++) {
+ last LINE if $key >= $end;
+# print STDERR "$key => 1\n" if $DEBUG;
+ vec($swatch, $key - $start, 1) = 1;
+ }
+ }
+ }
+ }
+ for my $x ($self->{EXTRAS}) {
+ pos $x = 0;
+ while ($x =~ /^([-+!])(.*)/mg) {
+ my $char = $1;
+ my $name = $2;
+ print STDERR "INDIRECT $1 $2\n" if $DEBUG;
+ my $otherbits = $self->{$name}->{BITS};
+ croak("SWASHGET size mismatch") if $bits < $otherbits;
+ my $other = $self->{$name}->SWASHGET($start, $len);
+ if ($char eq '+') {
+ if ($bits == 1 and $otherbits == 1) {
+ $swatch |= $other;
+ }
+ else {
+ for ($key = 0; $key < $len; $key++) {
+ vec($swatch, $key, $bits) = vec($other, $key, $otherbits);
+ }
+ }
+ }
+ elsif ($char eq '!') {
+ if ($bits == 1 and $otherbits == 1) {
+ $swatch |= ~$other;
+ }
+ else {
+ for ($key = 0; $key < $len; $key++) {
+ if (!vec($other, $key, $otherbits)) {
+ vec($swatch, $key, $bits) = 1;
+ }
+ }
+ }
+ }
+ elsif ($char eq '-') {
+ if ($bits == 1 and $otherbits == 1) {
+ $swatch &= ~$other;
+ }
+ else {
+ for ($key = 0; $key < $len; $key++) {
+ if (vec($other, $key, $otherbits)) {
+ vec($swatch, $key, $bits) = 0;
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($DEBUG) {
+ print STDERR "CELLS ";
+ for ($key = 0; $key < $len; $key++) {
+ print STDERR vec($swatch, $key, $bits), " ";
+ }
+ print STDERR "\n";
+ }
+ $swatch;
+}
+
+1;
diff --git a/contrib/perl5/lib/vars.pm b/contrib/perl5/lib/vars.pm
index 334af96..bde0b2a 100644
--- a/contrib/perl5/lib/vars.pm
+++ b/contrib/perl5/lib/vars.pm
@@ -8,13 +8,14 @@ require 5.002;
# if Carp hasn't been loaded in earlier compile time. :-(
# We'll let those bugs get found on the development track.
require Carp if $] < 5.00450;
+use warnings::register();
sub import {
my $callpack = caller;
my ($pack, @imports, $sym, $ch) = @_;
foreach $sym (@imports) {
($ch, $sym) = unpack('a1a*', $sym);
- if ($sym =~ tr/A-Za-Z_0-9//c) {
+ if ($sym =~ tr/A-Za-z_0-9//c) {
# time for a more-detailed check-up
if ($sym =~ /::/) {
require Carp;
@@ -22,9 +23,8 @@ sub import {
} elsif ($sym =~ /^\w+[[{].*[]}]$/) {
require Carp;
Carp::croak("Can't declare individual elements of hash or array");
- } elsif ($^W and length($sym) == 1 and $sym !~ tr/a-zA-Z//) {
- require Carp;
- Carp::carp("No need to declare built-in vars");
+ } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) {
+ warnings::warn("No need to declare built-in vars");
}
}
*{"${callpack}::$sym"} =
@@ -45,7 +45,7 @@ __END__
=head1 NAME
-vars - Perl pragma to predeclare global variable names
+vars - Perl pragma to predeclare global variable names (obsolete)
=head1 SYNOPSIS
@@ -53,6 +53,10 @@ vars - Perl pragma to predeclare global variable names
=head1 DESCRIPTION
+NOTE: The functionality provided by this pragma has been superseded
+by C<our> declarations, available in Perl v5.6.0 or later. See
+L<perlfunc/our>.
+
This will predeclare all the variables whose names are
in the list, allowing you to use them under "use strict", and
disabling any typo warnings.
diff --git a/contrib/perl5/lib/warnings.pm b/contrib/perl5/lib/warnings.pm
new file mode 100644
index 0000000..11558d5
--- /dev/null
+++ b/contrib/perl5/lib/warnings.pm
@@ -0,0 +1,318 @@
+
+# This file was created by warnings.pl
+# Any changes made here will be lost.
+#
+
+package warnings;
+
+=head1 NAME
+
+warnings - Perl pragma to control optional warnings
+
+=head1 SYNOPSIS
+
+ use warnings;
+ no warnings;
+
+ use warnings "all";
+ no warnings "all";
+
+ use warnings::register;
+ if (warnings::enabled()) {
+ warnings::warn("some warning");
+ }
+
+ if (warnings::enabled("void")) {
+ warnings::warn("void", "some warning");
+ }
+
+=head1 DESCRIPTION
+
+If no import list is supplied, all possible warnings are either enabled
+or disabled.
+
+A number of functions are provided to assist module authors.
+
+=over 4
+
+=item use warnings::register
+
+Creates a new warnings category which has the same name as the module
+where the call to the pragma is used.
+
+=item warnings::enabled([$category])
+
+Returns TRUE if the warnings category C<$category> is enabled in the
+calling module. Otherwise returns FALSE.
+
+If the parameter, C<$category>, isn't supplied, the current package name
+will be used.
+
+=item warnings::warn([$category,] $message)
+
+If the calling module has I<not> set C<$category> to "FATAL", print
+C<$message> to STDERR.
+If the calling module has set C<$category> to "FATAL", print C<$message>
+STDERR then die.
+
+If the parameter, C<$category>, isn't supplied, the current package name
+will be used.
+
+=back
+
+See L<perlmod/Pragmatic Modules> and L<perllexwarn>.
+
+=cut
+
+use Carp ;
+
+%Offsets = (
+ 'all' => 0,
+ 'chmod' => 2,
+ 'closure' => 4,
+ 'exiting' => 6,
+ 'glob' => 8,
+ 'io' => 10,
+ 'closed' => 12,
+ 'exec' => 14,
+ 'newline' => 16,
+ 'pipe' => 18,
+ 'unopened' => 20,
+ 'misc' => 22,
+ 'numeric' => 24,
+ 'once' => 26,
+ 'overflow' => 28,
+ 'pack' => 30,
+ 'portable' => 32,
+ 'recursion' => 34,
+ 'redefine' => 36,
+ 'regexp' => 38,
+ 'severe' => 40,
+ 'debugging' => 42,
+ 'inplace' => 44,
+ 'internal' => 46,
+ 'malloc' => 48,
+ 'signal' => 50,
+ 'substr' => 52,
+ 'syntax' => 54,
+ 'ambiguous' => 56,
+ 'bareword' => 58,
+ 'deprecated' => 60,
+ 'digit' => 62,
+ 'parenthesis' => 64,
+ 'precedence' => 66,
+ 'printf' => 68,
+ 'prototype' => 70,
+ 'qw' => 72,
+ 'reserved' => 74,
+ 'semicolon' => 76,
+ 'taint' => 78,
+ 'umask' => 80,
+ 'uninitialized' => 82,
+ 'unpack' => 84,
+ 'untie' => 86,
+ 'utf8' => 88,
+ 'void' => 90,
+ 'y2k' => 92,
+ );
+
+%Bits = (
+ 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [28]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29]
+ 'chmod' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+ 'debugging' => "\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [21]
+ 'deprecated' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'inplace' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22]
+ 'internal' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [23]
+ 'io' => "\x00\x54\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24]
+ 'misc' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'newline' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'numeric' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'once' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'overflow' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'pack' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'portable' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'redefine' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'regexp' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [37]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\x55\x01\x00\x00\x00\x00\x00", # [20..24]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x40\x55\x55\x15\x00\x00", # [27..38]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39]
+ 'umask' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [41]
+ 'unopened' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [44]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [45]
+ 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [46]
+ );
+
+%DeadBits = (
+ 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [28]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29]
+ 'chmod' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+ 'debugging' => "\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [21]
+ 'deprecated' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'inplace' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22]
+ 'internal' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [23]
+ 'io' => "\x00\xa8\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24]
+ 'misc' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'newline' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'numeric' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'once' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'overflow' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'pack' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'portable' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'redefine' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'regexp' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [37]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00", # [20..24]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x80\xaa\xaa\x2a\x00\x00", # [27..38]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39]
+ 'umask' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [41]
+ 'unopened' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [44]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [45]
+ 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [46]
+ );
+
+$NONE = "\0\0\0\0\0\0\0\0\0\0\0\0";
+$LAST_BIT = 94 ;
+$BYTES = 12 ;
+
+$All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ;
+
+sub bits {
+ my $mask ;
+ my $catmask ;
+ my $fatal = 0 ;
+ foreach my $word (@_) {
+ if ($word eq 'FATAL') {
+ $fatal = 1;
+ }
+ elsif ($catmask = $Bits{$word}) {
+ $mask |= $catmask ;
+ $mask |= $DeadBits{$word} if $fatal ;
+ }
+ else
+ { croak("unknown warnings category '$word'")}
+ }
+
+ return $mask ;
+}
+
+sub import {
+ shift;
+ ${^WARNING_BITS} |= bits(@_ ? @_ : 'all') ;
+}
+
+sub unimport {
+ shift;
+ my $mask = ${^WARNING_BITS} ;
+ if (vec($mask, $Offsets{'all'}, 1)) {
+ $mask = $Bits{'all'} ;
+ $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
+ }
+ ${^WARNING_BITS} = $mask & ~ (bits(@_ ? @_ : 'all') | $All) ;
+}
+
+sub enabled
+{
+ croak("Usage: warnings::enabled([category])")
+ unless @_ == 1 || @_ == 0 ;
+ local $Carp::CarpLevel = 1 ;
+ my $category ;
+ my $offset ;
+ my $callers_bitmask = (caller(1))[9] ;
+ return 0 unless defined $callers_bitmask ;
+
+
+ if (@_) {
+ # check the category supplied.
+ $category = shift ;
+ $offset = $Offsets{$category};
+ croak("unknown warnings category '$category'")
+ unless defined $offset;
+ }
+ else {
+ $category = (caller(0))[0] ;
+ $offset = $Offsets{$category};
+ croak("package '$category' not registered for warnings")
+ unless defined $offset ;
+ }
+
+ return vec($callers_bitmask, $offset, 1) ||
+ vec($callers_bitmask, $Offsets{'all'}, 1) ;
+}
+
+
+sub warn
+{
+ croak("Usage: warnings::warn([category,] 'message')")
+ unless @_ == 2 || @_ == 1 ;
+ local $Carp::CarpLevel = 1 ;
+ my $category ;
+ my $offset ;
+ my $callers_bitmask = (caller(1))[9] ;
+
+ if (@_ == 2) {
+ $category = shift ;
+ $offset = $Offsets{$category};
+ croak("unknown warnings category '$category'")
+ unless defined $offset ;
+ }
+ else {
+ $category = (caller(0))[0] ;
+ $offset = $Offsets{$category};
+ croak("package '$category' not registered for warnings")
+ unless defined $offset ;
+ }
+
+ my $message = shift ;
+ croak($message)
+ if vec($callers_bitmask, $offset+1, 1) ||
+ vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
+ carp($message) ;
+}
+
+1;
diff --git a/contrib/perl5/lib/warnings/register.pm b/contrib/perl5/lib/warnings/register.pm
new file mode 100644
index 0000000..da6be97
--- /dev/null
+++ b/contrib/perl5/lib/warnings/register.pm
@@ -0,0 +1,30 @@
+package warnings::register ;
+
+require warnings ;
+
+sub mkMask
+{
+ my ($bit) = @_ ;
+ my $mask = "" ;
+
+ vec($mask, $bit, 1) = 1 ;
+ return $mask ;
+}
+
+sub import
+{
+ shift ;
+ my $package = (caller(0))[0] ;
+ if (! defined $warnings::Bits{$package}) {
+ $warnings::Bits{$package} = mkMask($warnings::LAST_BIT) ;
+ vec($warnings::Bits{'all'}, $warnings::LAST_BIT, 1) = 1 ;
+ $warnings::Offsets{$package} = $warnings::LAST_BIT ++ ;
+ foreach my $k (keys %warnings::Bits) {
+ vec($warnings::Bits{$k}, $warnings::LAST_BIT, 1) = 0 ;
+ }
+ $warnings::DeadBits{$package} = mkMask($warnings::LAST_BIT);
+ vec($warnings::DeadBits{'all'}, $warnings::LAST_BIT++, 1) = 1 ;
+ }
+}
+
+1 ;
OpenPOWER on IntegriCloud